Hi Vijay,

I forgot to mention that this is ticket #1398

/Lennart

From: Lennart Lund
Sent: den 20 november 2017 13:33
To: Vijay Roy <vijay....@oracle.com>; Rafael Odzakow 
<rafael.odza...@ericsson.com>; syam.tall...@oracle.com
Cc: opensaf-devel@lists.sourceforge.net; Lennart Lund 
<lennart.l...@ericsson.com>
Subject: RE: [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement 
object, but CCB was aborted due to IMM [#2676]

Hi Vijay,

I have started to create a CCB handler handling all types of modifications of 
the IMM model where a CCB is involved (object create, modify and delete). It is 
created as a “separate module” that handles everything that has to do with IMM. 
This means, all steps involved in creating a CCB handling admin owner etc. It 
will do recovery when possible which includes everything from TRY_AGAIN to 
aborted CCB. It is handled using a well-defined and documented API. I will also 
include some shell commands that can be used as “demo” but also can be used for 
testing. These shell command will be built if –enable-tests is set when OpenSAF 
build is configured.
The plan is to replace all “inline” IMM handling regarding CCBs.

I have already implemented most of the code needed for a “create” and will soon 
start to test that part. When I have something that at least have some part 
working I will push for review and then push other parts for review in 
increments. In the mean time you can look at the API (as it looks so far). I 
have attached the .h file

Thanks
Lennart

From: Vijay Roy [mailto:vijay....@oracle.com]
Sent: den 20 november 2017 09:57
To: Lennart Lund <lennart.l...@ericsson.com<mailto:lennart.l...@ericsson.com>>; 
Rafael Odzakow 
<rafael.odza...@ericsson.com<mailto:rafael.odza...@ericsson.com>>; 
syam.tall...@oracle.com<mailto:syam.tall...@oracle.com>
Cc: 
opensaf-devel@lists.sourceforge.net<mailto:opensaf-devel@lists.sourceforge.net>
Subject: RE: [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement 
object, but CCB was aborted due to IMM [#2676]

Hi Lennart,

In reality myself and Syam are also thinking on the same lines for refactoring 
CCB & Admin operations flows.
In addition we need to have an eye on CLI & Customized Callback Actions.

Better we discuss more in detail to baseline the solution. Please suggest.

Regards
Vijay


From: Lennart Lund [mailto:lennart.l...@ericsson.com]
Sent: Friday, November 17, 2017 9:47 PM
To: Vijay Roy <vijay....@oracle.com<mailto:vijay....@oracle.com>>; Rafael 
Odzakow <rafael.odza...@ericsson.com<mailto:rafael.odza...@ericsson.com>>; 
Lennart Lund <lennart.l...@ericsson.com<mailto:lennart.l...@ericsson.com>>
Cc: 
opensaf-devel@lists.sourceforge.net<mailto:opensaf-devel@lists.sourceforge.net>
Subject: RE: [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement 
object, but CCB was aborted due to IMM [#2676]

Hi Vijay

It seems as this is getting a bit messy. These loops are added all over the 
place and (at least) in one case one of the loops did not work since it 
included a function that does more than one thing and at least one thing the 
function does did not fail the first time and can because of that not be done 
again even if some other part failed etc.
It seem as it is mostly IMM handling that is simplified so that possibilities 
of recovery is not used.
I think that if we continue to fix things like this we will soon lose control. 
I suggest that we do the following instead:
We need to handle recovery and “real” fails:

1. Creating CCBs:
Doing this is rather complicated if all rules shall be followed and all 
recovery possibilities shall be used.
In SMF this is done in many places and in most cases only TRY_AGAIN is handled 
(there is also a lot of redundant code), everything else is considered a Fail 
(will fail the campaign).
I am currently working on a “generic” solution  that can be used in all places 
where the IMM model shall be modified using a CCB. I think this is the most 
complicated part.

2. Admin operations:
This is also done in a simplified way in many places and in different ways with 
redundant code. If we fix CCB handling to be able to recover from e.g. 
BAD_HANDLE we will still fail here so also Admin operations should be handled 
in a “generic” way. I think this is simpler to do than CCB handling.

3. There are probably other OM operations as well that needs to be fixed

What is your opinion about this? After CCB handling, what do you think is most 
important?

Regards
Lennart

From: Vijay Roy [mailto:vijay....@oracle.com]
Sent: den 17 november 2017 07:13
To: Rafael Odzakow 
<rafael.odza...@ericsson.com<mailto:rafael.odza...@ericsson.com>>
Cc: 
opensaf-devel@lists.sourceforge.net<mailto:opensaf-devel@lists.sourceforge.net>;
 Lennart Lund <lennart.l...@ericsson.com<mailto:lennart.l...@ericsson.com>>
Subject: RE: [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement 
object, but CCB was aborted due to IMM [#2676]


Hi Rafael,



We need the while loop in “SmfCampaignWrapup::executeCampComplete()” as we 
encountered the issue at Wrapup too while testing.



Thanks

Vijay





-----Original Message-----
From: Rafael Odzakow [mailto:rafael.odza...@ericsson.com]
Sent: Thursday, November 16, 2017 8:54 PM
To: Vijay Roy <vijay....@oracle.com<mailto:vijay....@oracle.com>>
Cc: 
opensaf-devel@lists.sourceforge.net<mailto:opensaf-devel@lists.sourceforge.net>;
 Lennart Lund <lennart.l...@ericsson.com<mailto:lennart.l...@ericsson.com>>
Subject: Re: [PATCH 1/1] smf: SMF created a CCB to create smfRollbackElement 
object, but CCB was aborted due to IMM [#2676]



What about the added while loops in

SmfCampaignWrapup::executeCampComplete() should they be removed now with this 
addition?





On 11/16/2017 10:44 AM, Vijay Roy wrote:

> Handling ERROR_EXIST in smfRollbackElement creation and handling

> TRY_AGAIN in immCCBOperations.

> ---

>   src/smf/smfd/SmfUpgradeAction.cc | 26 +++++++++++++++++++-------

>   1 file changed, 19 insertions(+), 7 deletions(-)

>

> diff --git a/src/smf/smfd/SmfUpgradeAction.cc

> b/src/smf/smfd/SmfUpgradeAction.cc

> index 94c3dfd..af75cd7 100644

> --- a/src/smf/smfd/SmfUpgradeAction.cc

> +++ b/src/smf/smfd/SmfUpgradeAction.cc

> @@ -28,6 +28,7 @@

>   #include "smf/smfd/SmfUtils.h"

>   #include "smfd.h"

>   #include "smf/smfd/SmfTargetTemplate.h"

> +#include "base/time.h"

>

>   /* ========================================================================

>    *   DEFINITIONS

> @@ -460,6 +461,7 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT 
> i_oiHandle,

>                                        const std::string* i_rollbackDn) {

>     SaAisErrorT result = SA_AIS_OK;

>     SmfRollbackCcb* rollbackCcb = NULL;

> +  base::Timer doImmOpTimer(60000);

>

>     TRACE_ENTER();

>

> @@ -473,8 +475,8 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT 
> i_oiHandle,

>       immRollbackCcbDn += ",";

>       immRollbackCcbDn += *i_rollbackDn;

>

> -    if ((result = smfCreateRollbackElement(immRollbackCcbDn, i_oiHandle)) !=

> -        SA_AIS_OK) {

> +    result = smfCreateRollbackElement(immRollbackCcbDn, i_oiHandle);

> +    if ((result != SA_AIS_OK) && (result != SA_AIS_ERR_EXIST)) {

>         LOG_ER(

>             "SmfImmCcbAction::execute failed to create rollback element %s, 
> rc=%s",

>             immRollbackCcbDn.c_str(), saf_error(result)); @@ -490,11

> +492,21 @@ SaAisErrorT SmfImmCcbAction::execute(SaImmOiHandleT i_oiHandle,

>     }

>

>     if (m_operations.size() > 0) {

> -    SmfImmUtils immUtil;

> -    if ((result = immUtil.doImmOperations(m_operations, rollbackCcb)) !=

> -        SA_AIS_OK) {

> -      delete rollbackCcb;

> -      rollbackCcb = NULL;

> +

> +    doImmOpTimer.set_timeout_time(60000);

> +    while (doImmOpTimer.is_timeout() == false) {

> +      SmfImmUtils immUtil;

> +      result = immUtil.doImmOperations(m_operations, rollbackCcb);

> +      if (result == SA_AIS_ERR_TRY_AGAIN) {

> +         base::Sleep(base::kFiveHundredMilliseconds);

> +         continue;

> +      } else if (result != SA_AIS_OK) {

> +         LOG_WA("%s: SmfImmCcbAction:execute Fail '%s'",

> +                 __FUNCTION__, saf_error(result));

> +         delete rollbackCcb;

> +         rollbackCcb = NULL;

> +      }

> +      break;

>       }

>     }

>




------------------------------------------------------------------------------
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
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to