Hi Zoran, I will make that change.
Thanks and Best Regards, Hung Nguyen DEK Technologies ------------------------------------------------------------------------ *From:* Zoran Milinkovic *Sent:* Friday, June 05, 2015 10:34AM *To:* Hung Nguyen, Reddy Neelakanta Reddy Peddavandla *Cc:* opensaf-devel *Subject:* RE: [devel] [PATCH 1 of 1] imm: Check no-dangling map before adding new references when committing modify-op [#1377] Hi Hung, "ommi->first != omi->second" can be moved in "for" loop, just to follow the pattern of other "for" and "while" loops. You don't need to send new code for the review. Best regards, Zoran -----Original Message----- From: Hung Nguyen [mailto:[email protected]] Sent: Friday, June 05, 2015 6:21 AM To: [email protected] Cc: [email protected] Subject: [devel] [PATCH 1 of 1] imm: Check no-dangling map before adding new references when committing modify-op [#1377] osaf/services/saf/immsv/immnd/ImmModel.cc | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-) In commitModify() IMM_CREATE_LOCK flag is used to test to avoid adding duplicated no-dangling references. When an IMM_CREATE mutation is committed, the IMM_CREATE_LOCK flag is also cleared in commitCreate(). If the CCB has IMM_MODIFY mutations that add references to object of committed IMM_CREATE mutations, it will fail to add NO_DANGLING references to sReverseRefsNoDanglingMMap in addNewNoDanglingRefs() due to cleared IMM_CREATE_LOCK flag. mMutations map is sorted by object DN so the order of mutations to be committed depends on the object DNs. This patch introduces new method to avoid adding duplicated references instead of using IMM_CREATE_LOCK flag. No-dangling references will only be added if they don't currently exist in the map. 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 @@ -5223,7 +5223,17 @@ ImmModel::addNewNoDanglingRefs(ObjectInf omi = sObjectMap.find(*si); // After all validation, object must exist osafassert(omi != sObjectMap.end()); - if(omi->second->mObjFlags & IMM_CREATE_LOCK) { + + // Searching for NO_DANGLING reference + ommi = sReverseRefsNoDanglingMMap.find(omi->second); + for(; ommi != sReverseRefsNoDanglingMMap.end(); ++ommi) { + if(ommi->first != omi->second || ommi->second == obj) { + break; + } + } + + // The reference does not exist. It will be added to sReverseRefsNoDanglingMMap + if(ommi == sReverseRefsNoDanglingMMap.end() || ommi->first != omi->second) { sReverseRefsNoDanglingMMap.insert(std::pair<ObjectInfo *, ObjectInfo *>(omi->second, obj)); } } ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
