When all procedures executed, the complete action invokes and
clean/remove versioned types. At the time commit campaign,
reboot active SC to test robustness of SMF. Standby SC takes
active role, SMFD on new active start procedure threads and
it failed in addStepModifications due to these versioned types
deleted in complete action steps.

In this case, SMFD should ignore these types if the campaign is
in completed state.
---
 src/smf/smfd/SmfUpgradeProcedure.cc | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/smf/smfd/SmfUpgradeProcedure.cc 
b/src/smf/smfd/SmfUpgradeProcedure.cc
index dfe98536e..56af4a6ae 100644
--- a/src/smf/smfd/SmfUpgradeProcedure.cc
+++ b/src/smf/smfd/SmfUpgradeProcedure.cc
@@ -1993,9 +1993,11 @@ bool SmfUpgradeProcedure::addStepModifications(
   // fail if the reboot is performed when the  versioned types are removed i.e.
   // during test traffic, if the types was removed in campaign wrapup/complete
   // section.
-  SmfUpgradeCampaign *ucamp =
-      SmfCampaignThread::instance()->campaign()->getUpgradeCampaign();
-  if (ucamp->getProcExecutionMode() != SMF_BALANCED_MODE) {
+  SmfCampaign* camp = SmfCampaignThread::instance()->campaign();
+  SmfUpgradeCampaign *ucamp = camp->getUpgradeCampaign();
+
+  if ((ucamp->getProcExecutionMode() != SMF_BALANCED_MODE) ||
+      (camp->getState() == SA_SMF_CMPG_EXECUTION_COMPLETED)) {
     // getImmStepsSingleStep handles this case for balanced mode
     if (getState() == SA_SMF_PROC_COMPLETED) {
       TRACE("Procedure is completed, skipping addStepModifications");
-- 
2.25.1



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to