Ignore:
Timestamp:
Aug 11, 2009, 1:47:47 PM (15 years ago)
Author:
Christoph Mayer
Message:

networkinfo fix wenn socket kaputt geht, erfolgreich verwendete bootstrap infos speichern und wenn overlay verbindungen alle weg sind diese infos ausprobieren

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source/ariba/overlay/OverlayBootstrap.cpp

    r5838 r5860  
    8888
    8989void OverlayBootstrap::handleSystemEvent(const SystemEvent& event){
    90         EventData* data = event.getData<EventData>();
     90        JoinData* data = event.getData<JoinData>();
    9191
    9292        // announcement for our spovnet
     
    129129        //
    130130
    131         EventData* data = new EventData();
     131        JoinData* data = new JoinData();
    132132        data->spovnetid = sid;
    133133        data->nodeid = nid;
     
    154154        boost::mutex::scoped_lock lock(lastJoinesMutex);
    155155
    156         EventData data;
     156        JoinData data;
    157157        data.spovnetid = spovnetid;
    158158        data.nodeid = nodeid;
    159159        data.endpoint = _ep;
    160160
    161         lastJoines.push_front(JoinData(data));
     161        logging_info("recording bootstrap information " << data.endpoint.toString());
     162
     163        lastJoines.push_front(data);
    162164}
    163165
     
    175177        // we have overlay neighbors -> ok
    176178        if(overlay->getOverlayNeighbors().size() > 0) return;
     179
     180        logging_info("overlay not joined, checking for earlier used bootstrap information");
     181        EndpointDescriptor joinep = EndpointDescriptor::UNSPECIFIED();
    177182
    178183        // no overlay neighbors -> try out already
     
    185190
    186191                // use last used element and then put it into back
    187                 JoinData data = *i;
    188                 lastJoines.pop_front();
    189                 lastJoines.push_back(data);
     192                joinep = (*i).endpoint;
     193
     194                if(lastJoines.size() >= 2)
     195                        swap( *lastJoines.begin(), *(--(lastJoines.end())) );
    190196        }
    191197
    192         logging_info("no overlay connections detected, " <<
    193                                         "trying to join using old bootstrap information");
     198        logging_info("no overlay conenctivity detected, " <<
     199                                        "trying to join using old bootstrap information: " <<
     200                                        joinep.toString());
    194201
    195202        // try to join using this node, if the join is successfull
    196203        // the endpoint will again be inserted using recordJoin
    197         overlay->joinSpoVNet( spovnetid, data.data.endpoint );
     204        overlay->joinSpoVNet( spovnetid, joinep );
    198205}
    199206
     
    202209
    203210void OverlayBootstrap::WatchdogTimer::startWatchdog(){
    204         Timer::setInterval(2000);
     211        Timer::setInterval(5000);
    205212        Timer::start();
    206213}
Note: See TracChangeset for help on using the changeset viewer.