Hi Hung, Reviewed the patch. Ac from me.
Thanks, Zoran -----Original Message----- From: Hung Nguyen [mailto:[email protected]] Sent: Tuesday, March 08, 2016 11:57 AM To: Zoran Milinkovic; [email protected] Cc: [email protected] Subject: [PATCH 1 of 1] imm: Discard dying admin owners when headless [#1696] osaf/services/saf/immsv/immnd/ImmModel.cc | 12 ++++++------ osaf/services/saf/immsv/immnd/ImmModel.hh | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) Admin owners are marked as dying when being hard finalized during sync. Normally the dying admo will be discarded in finalizeSync(). When headless, we don't need to keep those dying admin owners. 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 @@ -1286,7 +1286,7 @@ immModel_discardNode(IMMND_CB *cb, ConnVector cv, gv; ConnVector::iterator cvi, gvi; unsigned int ix=0; - ImmModel::instance(&cb->immModel)->discardNode(nodeId, cv, gv, cb->mIsCoord); + ImmModel::instance(&cb->immModel)->discardNode(nodeId, cv, gv, + cb->mIsCoord, false); *arrSize = (SaUint32T) cv.size(); if(*arrSize) { *ccbIdArr = (SaUint32T *) malloc((*arrSize)* sizeof(SaUint32T)); @@ -12477,7 +12477,7 @@ ImmModel::getImplementerId(SaUint32T loc } void -ImmModel::discardNode(unsigned int deadNode, IdVector& cv, IdVector& gv, bool isAtCoord ) +ImmModel::discardNode(unsigned int deadNode, IdVector& cv, IdVector& +gv, bool isAtCoord, bool scAbsence) { ImplementerVector::iterator i; AdminOwnerVector::iterator i2; @@ -12580,7 +12580,7 @@ ImmModel::discardNode(unsigned int deadN i2 = sOwnerVector.begin(); while(i2 != sOwnerVector.end()) { AdminOwnerInfo* ainfo = (*i2); - if(ainfo->mNodeId == deadNode && (!ainfo->mDying)) { + if(ainfo->mNodeId == deadNode && (!ainfo->mDying || scAbsence)) + { //Inefficient: lookup of admin owner again. if(adminOwnerDelete(ainfo->mId, true) == SA_AIS_OK) { i2 = sOwnerVector.begin();//restart of iteration again. @@ -17979,7 +17979,7 @@ ImmModel::finalizeSync(ImmsvOmFinalizeSy for(;ivi != sNodesDeadDuringSync.end(); ++ivi) { ConnVector cv, gv; LOG_NO("Sync client re-executing discardNode for node %x", (*ivi)); - this->discardNode((*ivi), cv, gv, false); + this->discardNode((*ivi), cv, gv, false, false); if(!(cv.empty())) { LOG_ER("Sync can not discard node with active ccbs"); err = SA_AIS_ERR_FAILED_OPERATION; @@ -18302,7 +18302,7 @@ ImmModel::isolateThisNode(unsigned int t i++; } else { info = NULL; - this->discardNode(otherNode, cv, gv, isAtCoord); + this->discardNode(otherNode, cv, gv, isAtCoord, true); LOG_NO("Impl Discarded node %x", otherNode); /* Discard ccbs. */ @@ -18320,7 +18320,7 @@ ImmModel::isolateThisNode(unsigned int t i2++; } else { ainfo = NULL; - this->discardNode(otherNode, cv, gv, isAtCoord); + this->discardNode(otherNode, cv, gv, isAtCoord, true); LOG_NO("Admo Discarded node %x", otherNode); /* Discard ccbs */ diff --git a/osaf/services/saf/immsv/immnd/ImmModel.hh b/osaf/services/saf/immsv/immnd/ImmModel.hh --- a/osaf/services/saf/immsv/immnd/ImmModel.hh +++ b/osaf/services/saf/immsv/immnd/ImmModel.hh @@ -546,7 +546,7 @@ public: IdVector& gv, bool isAtCoord); void discardContinuations(SaUint32T dead); - void discardNode(unsigned int nodeId, IdVector& cv, IdVector& gv, bool isAtCoord); + void discardNode(unsigned int nodeId, IdVector& cv, IdVector& gv, bool isAtCoord, bool scAbsence); void getCcbIdsForOrigCon(SaUint32T dead, IdVector& cv); void getAdminOwnerIdsForCon(SaUint32T dead, IdVector& cv); bool ccbCommit(SaUint32T ccbId, ConnVector& connVector); ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140 _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
