Discard Adm Impl continuation when peer IMMND is down.
---
src/imm/immnd/ImmModel.cc | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/src/imm/immnd/ImmModel.cc b/src/imm/immnd/ImmModel.cc
index 56d8c8d..25f8621 100644
--- a/src/imm/immnd/ImmModel.cc
+++ b/src/imm/immnd/ImmModel.cc
@@ -13804,6 +13804,7 @@ void ImmModel::discardNode(unsigned int deadNode,
IdVector& cv, IdVector& gv,
CcbVector::iterator i3;
ConnVector implv;
ConnVector::iterator i4;
+ ContinuationMap3::iterator ci3;
TRACE_ENTER();
if (sImmNodeState == IMM_NODE_W_AVAILABLE) {
@@ -13923,6 +13924,29 @@ void ImmModel::discardNode(unsigned int deadNode,
IdVector& cv, IdVector& gv,
osafassert((*i3)->mOriginatingConn == 0); // Dead node can not be us!!
}
}
+
+ /* Discard Adm Impl continuation */
+ for (ci3 = sAdmImplContinuationMap.begin();
+ ci3 != sAdmImplContinuationMap.end();) {
+ if (m_NCS_NODE_ID_FROM_MDS_DEST(ci3->second.mReply_dest) == deadNode) {
+ TRACE_5("Discarding Adm Impl continuation %llu", ci3->first);
+ ci3 = sAdmImplContinuationMap.erase(ci3);
+ } else {
+ ++ci3;
+ }
+ }
+
+ /* Discard Search Impl continuation */
+ for (ci3 = sSearchImplContinuationMap.begin();
+ ci3 != sSearchImplContinuationMap.end();) {
+ if (m_NCS_NODE_ID_FROM_MDS_DEST(ci3->second.mReply_dest) == deadNode) {
+ TRACE_5("Discarding Search Impl continuation %llu", ci3->first);
+ ci3 = sSearchImplContinuationMap.erase(ci3);
+ } else {
+ ++ci3;
+ }
+ }
+
TRACE_LEAVE();
}
--
2.7.4
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel