osaf/services/saf/immsv/immnd/ImmModel.cc |  14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)


THe check of consistent mapping between implementer-name and
impleneter-id (actual currently connected oi-handle) done in
ImmModel::finalizeSync for veteran nodes is corrected to ignore
also the case when an implementer-name gets both disconnected
and re-connected in the fevs gap between the finalizeSync message
being generated by the immnd coord and that message arriving over
fevs at all nodes including immnd coord.

diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc 
b/osaf/services/saf/immsv/immnd/ImmModel.cc
--- a/osaf/services/saf/immsv/immnd/ImmModel.cc
+++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
@@ -14413,17 +14413,19 @@ ImmModel::finalizeSync(ImmsvOmFinalizeSy
                             "according to finalizeSync. Assunimg implSet 
bypased finSync",
                             info->mId, implName.c_str());
                         explained = true;
-                    } else if(info->mId == 0) {
-                        /* Here info->mid == 0 i.e. veteran claims dead 
implementer 
-                           but coord claims non-dead implementer. This can 
happen
-                           when implementer is deleted just after coord sends 
+                    } else {
+                        /* Here veteran claims either dead implementer, i.e. 
(info->mId == 0),
+                           or different implementer, i.e. new and different 
info->mId,
+                           but coord claims non-dead implementer. This can 
happen when
+                           implementer disconnects just after coord sends 
finalizeSync,
+                           or both disconnects and reconnects just after coord 
sends
                            finalizeSync. Checking for this.
                         */
                         IdVector::iterator ivi = sImplsDeadDuringSync.begin();
                         for(;ivi != sImplsDeadDuringSync.end(); ++ivi) {
                             if((*ivi) == ii->id) {
-                                LOG_NO("Detected dead implementer %u in "
-                                      "finalizeSync message - ignoring.", 
ii->id);
+                                LOG_NO("Detected disconnected implementer %u 
in "
+                                          "finalizeSync message - ignoring.", 
ii->id);
                                 explained = true;
                                 break;
                             }

------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and 
AppDynamics. Performance Central is your source for news, insights, 
analysis and resources for efficient Application Performance Management. 
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to