Hi Hung, Reviewed the patch. Ack from me with a minor comment.
IMM CCB error strings are usually reported in format like "IMM: <error>: ....". Please add error after "IMM: " before you push the code. Thanks, Zoran -----Original Message----- From: Hung Nguyen [mailto:[email protected]] Sent: den 21 april 2017 08:45 To: Zoran Milinkovic <[email protected]>; [email protected] Cc: [email protected]; Hung Duc Nguyen <[email protected]> Subject: [PATCH 1/1] imm: Add more details to no dangling CcbErrorString [#2433] Add more details to no dangling CcbErrorString. --- src/imm/immnd/ImmModel.cc | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/imm/immnd/ImmModel.cc b/src/imm/immnd/ImmModel.cc index 35c8a31..7afce0f 100644 --- a/src/imm/immnd/ImmModel.cc +++ b/src/imm/immnd/ImmModel.cc @@ -5401,6 +5401,9 @@ bool ImmModel::validateNoDanglingRefsModify(CcbInfo* ccb, LOG_NO( "ERR_FAILED_OPERATION: NO_DANGLING reference (%s) is dangling (Ccb %u)", av->getValueC_str(), ccb->mId); + setCcbErrorString(ccb, + "IMM: Object %s has dangling reference (%s)", + omit->first.c_str(), av->getValueC_str()); TRACE_LEAVE(); return false; } @@ -5416,6 +5419,9 @@ bool ImmModel::validateNoDanglingRefsModify(CcbInfo* ccb, "ERR_FAILED_OPERATION: NO_DANGLING Reference (%s) " "refers to a non-persistent RTO (Ccb %u)", av->getValueC_str(), ccb->mId); + setCcbErrorString( + ccb, "IMM: Object %s refers to a non-persistent RTO (%s)", + omit->first.c_str(), av->getValueC_str()); TRACE_LEAVE(); return false; } @@ -5429,6 +5435,10 @@ bool ImmModel::validateNoDanglingRefsModify(CcbInfo* ccb, "refers to object flagged for delete by another Ccb: %u, (this Ccb %u)", av->getValueC_str(), omi->second->mCcbId, ccb->mId); } + setCcbErrorString( + ccb, + "IMM: Object %s refers to object flagged for deletion (%s)", + omit->first.c_str(), av->getValueC_str()); TRACE_LEAVE(); return false; } @@ -5438,6 +5448,10 @@ bool ImmModel::validateNoDanglingRefsModify(CcbInfo* ccb, "ERR_FAILED_OPERATION: NO_DANGLING reference (%s) " "refers to object flagged for create by another CCB: %u, (this Ccb %u)", av->getValueC_str(), omi->second->mCcbId, ccb->mId); + setCcbErrorString( + ccb, + "IMM: Object %s refers to object flagged for creation in another CCB (%s)", + omit->first.c_str(), av->getValueC_str()); TRACE_LEAVE(); return false; } @@ -5500,6 +5514,10 @@ bool ImmModel::validateNoDanglingRefsDelete(CcbInfo* ccb, "ERR_FAILED_OPERATION: Delete of object %s would violate NO_DANGLING reference " "from object %s, not scheduled for delete by this Ccb:%u", omit->first.c_str(), objName.c_str(), ccb->mId); + setCcbErrorString(ccb, + "IMM: Object %s is currently reffered by object %s, " + "not scheduled for deletion by this CCB", + omit->first.c_str(), objName.c_str()); rc = false; break; } @@ -5510,6 +5528,10 @@ bool ImmModel::validateNoDanglingRefsDelete(CcbInfo* ccb, "ERR_FAILED_OPERATION: Delete of object %s would violate NO_DANGLING reference " "from object %s, scheduled for delete by another Ccb:%u (this Ccb:%u)", omit->first.c_str(), objName.c_str(), ommi->second->mCcbId, ccb->mId); + setCcbErrorString(ccb, + "IMM: Object %s is currently reffered by object %s, " + "scheduled for deletion by another CCB", + omit->first.c_str(), objName.c_str()); rc = false; break; } @@ -8437,6 +8459,10 @@ SaAisErrorT ImmModel::ccbObjectCreate( "refers to a non persistent RTO %s (Ccb %u)", objectName.c_str(), i4->first.c_str(), attrVal->getValueC_str(), ccbId); + setCcbErrorString( + ccb, + "IMM: Object %s refers to a non-persistent RTO (%s)", + objectName.c_str(), attrVal->getValueC_str()); err = SA_AIS_ERR_INVALID_PARAM; break; } @@ -8449,6 +8475,10 @@ SaAisErrorT ImmModel::ccbObjectCreate( "refers to object %s that will be deleted in same Ccb (Ccb %u)", objectName.c_str(), i4->first.c_str(), attrVal->getValueC_str(), ccbId); + setCcbErrorString( + ccb, + "IMM: Object %s refers to object flagged for deletion in the same CCB (%s)", + objectName.c_str(), attrVal->getValueC_str()); err = SA_AIS_ERR_BAD_OPERATION; break; } else { @@ -8457,6 +8487,10 @@ SaAisErrorT ImmModel::ccbObjectCreate( "object %s flagged for deletion in other Ccb (%u), this (Ccb %u)", objectName.c_str(), i4->first.c_str(), attrVal->getValueC_str(), omi->second->mCcbId, ccbId); + setCcbErrorString( + ccb, + "IMM: Object %s refers to object flagged for deletion in another CCB (%s)", + objectName.c_str(), attrVal->getValueC_str()); err = SA_AIS_ERR_BUSY; break; } @@ -8469,6 +8503,10 @@ SaAisErrorT ImmModel::ccbObjectCreate( "object %s flagged for creation in other ccb (%u), this (Ccb %u)", objectName.c_str(), i4->first.c_str(), attrVal->getValueC_str(), omi->second->mCcbId, ccbId); + setCcbErrorString( + ccb, + "IMM: Object %s refers to object flagged for creation in another CCB (%s)", + objectName.c_str(), attrVal->getValueC_str()); err = SA_AIS_ERR_BUSY; break; } @@ -10449,6 +10487,9 @@ SaAisErrorT ImmModel::deleteObject(ObjectMap::iterator& oi, SaUint32T reqConn, "ERR_BAD_OPERATION: PRTO %s can't be deleted by Ccb(%u) " "because another object %s has a NO_DANGLING reference to it", oi->first.c_str(), ccb->mId, objName.c_str()); + setCcbErrorString(ccb, "IMM: PRTO %s is referred by object %s " + "not scheduled for deletion by this CCB", + oi->first.c_str(), objName.c_str()); return SA_AIS_ERR_BAD_OPERATION; } } @@ -10474,6 +10515,9 @@ SaAisErrorT ImmModel::deleteObject(ObjectMap::iterator& oi, SaUint32T reqConn, "is scheduled to be deleted in another Ccb(%u), this Ccb(%u)", objName.c_str(), oi->first.c_str(), ommi->second->mCcbId, ccb->mId); + setCcbErrorString(ccb, "IMM: Object %s refers to object %s " + "and is flagged for deletion in another CCB", + objName.c_str(), oi->first.c_str()); return SA_AIS_ERR_BUSY; } } else if (ommi->second->mObjFlags & IMM_CREATE_LOCK) { @@ -10484,6 +10528,9 @@ SaAisErrorT ImmModel::deleteObject(ObjectMap::iterator& oi, SaUint32T reqConn, "ERR_BAD_OPERATION: Created object %s with NO_DANGLING reference to object %s " "flagged for deletion in the same Ccb(%u) is not allowed", objName.c_str(), oi->first.c_str(), ccb->mId); + setCcbErrorString(ccb, "IMM: Object %s refers to object %s " + "and is flagged for creation in this CCB", + objName.c_str(), oi->first.c_str()); return SA_AIS_ERR_BAD_OPERATION; } else { LOG_IN( @@ -10491,6 +10538,9 @@ SaAisErrorT ImmModel::deleteObject(ObjectMap::iterator& oi, SaUint32T reqConn, "flagged for deletion is not created in the same Ccb(%u), this Ccb(%u)", objName.c_str(), oi->first.c_str(), ommi->second->mCcbId, ccb->mId); + setCcbErrorString(ccb, "IMM: Object %s refers to object %s " + "and is flagged for creation in another CCB", + objName.c_str(), oi->first.c_str()); return SA_AIS_ERR_BUSY; } } -- 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
