Ack,
Mathi.
----- [email protected] wrote:
> osaf/services/saf/smfsv/smfd/SmfCampState.cc | 20
> ++++++++++++++------
> osaf/services/saf/smfsv/smfd/smfd_campaign_oi.cc | 3 ++-
> osaf/services/saf/smfsv/smfd/smfd_main.c | 4 ++--
> 3 files changed, 18 insertions(+), 9 deletions(-)
>
>
> SMF restores PBE before campaign state is updated (before the
> wrapup/completed
> actions)to avoid interference with background campaign actions started
> in the
> wrapup/completed portion and admin operations directed to SMF just
> after entering
> completed state.
>
> diff --git a/osaf/services/saf/smfsv/smfd/SmfCampState.cc
> b/osaf/services/saf/smfsv/smfd/SmfCampState.cc
> --- a/osaf/services/saf/smfsv/smfd/SmfCampState.cc
> +++ b/osaf/services/saf/smfsv/smfd/SmfCampState.cc
> @@ -830,6 +830,14 @@ SmfCampStateExecuting::executeWrapup(Smf
> {
> TRACE_ENTER();
>
> + //Activate IMM BPE if active when campaign was started.
> + i_camp->restorePbe();
> +
> + // Wait for IMM to become writable again by keep on writing until
> it
> + // succeeds. Write the same value, just for synchronization
> purposes.
> + changeState(i_camp, SmfCampStateExecuting::instance());
> +
> + // IMM is writeable again so let's execute campCompleteAction
> if (i_camp->m_campWrapup.executeCampComplete() == false) {
> std::string error = "Campaign wrapup executing campaign complete
> actions failed";
> LOG_ER("%s", error.c_str());
> @@ -838,9 +846,6 @@ SmfCampStateExecuting::executeWrapup(Smf
> return SMF_CAMP_FAILED;
> }
>
> - //Activate IMM BPE if active when campaign was started.
> - i_camp->restorePbe();
> -
> // TODO Start wait to complete timer
> LOG_NO("CAMP: Start wait to complete timer (not implemented yet)");
>
> @@ -1737,6 +1742,12 @@ SmfCampRollingBack::rollbackInit(SmfUpgr
> TRACE_ENTER();
>
> TRACE("SmfCampRollingBack::rollbackInit implementation");
> + //Activate IMM BPE if active when campaign was started.
> + i_camp->restorePbe();
> +
> + // Wait for IMM to become writable again by keep on writing until
> it
> + // succeeds. Write the same value, just for synchronization
> purposes.
> + changeState(i_camp, SmfCampRollingBack::instance());
>
> if (i_camp->m_campInit.rollback() != SA_AIS_OK) {
> std::string error = "Campaign init rollback failed";
> @@ -1745,9 +1756,6 @@ SmfCampRollingBack::rollbackInit(SmfUpgr
> changeState(i_camp, SmfCampRollbackFailed::instance());
> return SMF_CAMP_FAILED;
> }
> -
> - //Activate IMM BPE if active when campaign was started.
> - i_camp->restorePbe();
>
> changeState(i_camp, SmfCampRollbackCompleted::instance());
> LOG_NO("CAMP: Upgrade campaign rollback completed %s",
> i_camp->getCampaignName().c_str());
> diff --git a/osaf/services/saf/smfsv/smfd/smfd_campaign_oi.cc
> b/osaf/services/saf/smfsv/smfd/smfd_campaign_oi.cc
> --- a/osaf/services/saf/smfsv/smfd/smfd_campaign_oi.cc
> +++ b/osaf/services/saf/smfsv/smfd/smfd_campaign_oi.cc
> @@ -633,7 +633,8 @@ uint32_t create_campaign_objects(smfd_cb
> */
> uint32_t updateImmAttr(const char *dn, SaImmAttrNameT attributeName,
> SaImmValueTypeT attrValueType, void *value)
> {
> - (void)immutil_update_one_rattr(smfd_cb->campaignOiHandle, dn,
> attributeName, attrValueType, value);
> + SaAisErrorT rc = immutil_update_one_rattr(smfd_cb->campaignOiHandle,
> dn, attributeName, attrValueType, value);
> + osafassert(rc == SA_AIS_OK);
>
> return NCSCC_RC_SUCCESS;
> }
> diff --git a/osaf/services/saf/smfsv/smfd/smfd_main.c
> b/osaf/services/saf/smfsv/smfd/smfd_main.c
> --- a/osaf/services/saf/smfsv/smfd/smfd_main.c
> +++ b/osaf/services/saf/smfsv/smfd/smfd_main.c
> @@ -165,8 +165,8 @@ static uint32_t initialize_smfd(void)
>
> /* Set the behaviour of SMF-IMM interactions */
> immutilWrapperProfile.errorsAreFatal = 0; /* False, no reboot when
> fail */
> - immutilWrapperProfile.nTries = 500; /* Times */
> - immutilWrapperProfile.retryInterval = 400; /* MS */
> + immutilWrapperProfile.nTries = 600; /* Times */
> + immutilWrapperProfile.retryInterval = 1000; /* MS */
>
> if (ncs_agents_startup() != NCSCC_RC_SUCCESS) {
> LOG_ER("ncs_agents_startup FAILED");
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel