Hi Zoran,

I will add the error when pushing.

Thanks,

Hung Nguyen - DEK Technologies


--------------------------------------------------------------------------------
From: Zoran Milinkovic [email protected]
Sent: Friday, April 21, 2017 5:33PM
To: Hung Nguyen, Neelakanta Reddy
     [email protected], [email protected]
Cc: Opensaf-devel, Hung Nguyen
     [email protected], [email protected]
Subject: RE: [PATCH 1/1] imm: Add more details to no dangling CcbErrorString 
[#2433]


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;
            }
          }


------------------------------------------------------------------------------
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

Reply via email to