osaf/services/saf/smfsv/smfd/SmfUpgradeAction.cc | 9 +++++++++
osaf/services/saf/smfsv/smfd/SmfUpgradeAction.hh | 7 +++++++
osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc | 11 +++++++++++
3 files changed, 27 insertions(+), 0 deletions(-)
Whitout the patch, ff two procedures which will be merged address
the same IMM object for creation/deletion/modify in the procInit
and/or procWrapup, multiple rollback element may receive the same DN
causing the campaign to fail.
Solution: in merging method, renumber the Id of the procInit and
procWrapup actions.
diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeAction.cc
b/osaf/services/saf/smfsv/smfd/SmfUpgradeAction.cc
--- a/osaf/services/saf/smfsv/smfd/SmfUpgradeAction.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeAction.cc
@@ -97,6 +97,15 @@ SmfUpgradeAction::getId()
return m_id;
}
+//------------------------------------------------------------------------------
+// changeId()
+//------------------------------------------------------------------------------
+void
+SmfUpgradeAction::changeId(int i_id)
+{
+ m_id = i_id;
+}
+
//================================================================================
// Class SmfCliCommandAction
// Purpose:
diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeAction.hh
b/osaf/services/saf/smfsv/smfd/SmfUpgradeAction.hh
--- a/osaf/services/saf/smfsv/smfd/SmfUpgradeAction.hh
+++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeAction.hh
@@ -92,6 +92,13 @@ class SmfUpgradeAction {
///
virtual int getId();
+///
+/// Purpose: Change action Id.
+/// @param An int containing the new action Id.
+/// @return None
+///
+ virtual void changeId(int i_id);
+
private:
///
diff --git a/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
b/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
--- a/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfUpgradeProcedure.cc
@@ -1164,6 +1164,9 @@ SmfUpgradeProcedure::mergeStepIntoSingle
newStep->setMaxRetry(0);
newStep->setRestartOption(0);
+ int initActionId = 1;
+ int wrapupActionId = 1;
+
std::list < unitNameAndState > forAddRemoveAU;
std::list < unitNameAndState > forAddRemoveDU;
std::list < unitNameAndState > tmpDU;
@@ -1248,6 +1251,10 @@ SmfUpgradeProcedure::mergeStepIntoSingle
if (cbkAction != NULL) {
const_cast<SmfCallbackAction*>(cbkAction)->setCallbackProcedure(this);
}
+ //Renumber to action id aviod DN name collision in the
merged procedure
+ (*actioniter)->changeId(initActionId);
+ initActionId++;
+
actioniter++;
}
@@ -1261,6 +1268,10 @@ SmfUpgradeProcedure::mergeStepIntoSingle
if (cbkAction != NULL) {
const_cast<SmfCallbackAction*>(cbkAction)->setCallbackProcedure(this);
}
+ //Renumber to action id aviod DN name collision in the
merged procedure
+ (*actioniter)->changeId(wrapupActionId);
+ wrapupActionId++;
+
actioniter++;
}
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel