Please see inline.

Thanks
Praveen
On 24-Jun-13 7:34 PM, Hans Feldt wrote:
> On 7 June 2013 08:39,  <[email protected]> wrote:
>>   osaf/services/saf/avsv/avnd/avnd_clc.c  |  130 
>> ++++++++++++++++++++++---------
>>   osaf/services/saf/avsv/avnd/avnd_comp.c |    2 +-
>>   osaf/services/saf/avsv/avnd/avnd_su.c   |    1 +
>>   osaf/services/saf/avsv/avnd/avnd_susm.c |   81 +++++++++++++------
>>   4 files changed, 150 insertions(+), 64 deletions(-)
>>
>>
>>   With this patch amfnd informs amfd for failover of assignments when all 
>> components are terminated successfully during suFailover. If some component 
>> faults and SU moves to
>> inst/term failed state, compFailover will be performed.
>>
>> diff --git a/osaf/services/saf/avsv/avnd/avnd_clc.c 
>> b/osaf/services/saf/avsv/avnd/avnd_clc.c
>> --- a/osaf/services/saf/avsv/avnd/avnd_clc.c
>> +++ b/osaf/services/saf/avsv/avnd/avnd_clc.c
>> @@ -72,6 +72,7 @@ uint32_t avnd_comp_clc_st_chng_prc(AVND_
>>
>>   static uint32_t avnd_comp_clc_resp(NCS_OS_PROC_EXECUTE_TIMED_CB_INFO *);
>>   static uint32_t avnd_instfail_su_failover(AVND_CB *, AVND_SU *, AVND_COMP 
>> *);
>> +static bool all_comps_terminated_in_su(AVND_SU *su);
>>
>>   
>> /***************************************************************************
>>    ** C O M P O N E N T   C L C   F S M   M A T R I X   D E F I N I T I O N 
>> **
>> @@ -840,9 +841,29 @@ uint32_t avnd_comp_clc_fsm_run(AVND_CB *
>>                          break;
>>                  }
>>          }
>> -
>>          /* get the prv presence state */
>>          prv_st = comp->pres;
>> +
>> +       if (avnd_sufailover_in_progress(comp->su) &&
>> +                       ((ev == AVND_COMP_CLC_PRES_FSM_EV_CLEANUP_SUCC) ||
>> +                        (ev == AVND_COMP_CLC_PRES_FSM_EV_CLEANUP_FAIL)))
>> +       {
>> +               TRACE("SU_FAILOVER is in progress, event '%s'", 
>> pres_state_evt[ev]);
>> +               if (ev == AVND_COMP_CLC_PRES_FSM_EV_CLEANUP_FAIL)
>> +                       avnd_comp_pres_state_set(comp, 
>> SA_AMF_PRESENCE_TERMINATION_FAILED);
>> +               else
>> +                       avnd_comp_pres_state_set(comp, 
>> SA_AMF_PRESENCE_UNINSTANTIATED);
>> +               /* If all components terminated, finish sufailover at amfnd. 
>> */
>> +               if (all_comps_terminated_in_su(comp->su))
>> +               {
>> +                       LOG_NO("Terminated all components in '%s'", 
>> comp->su->name.value);
>> +                       LOG_NO("Informing director of sufailover");
>> +                       rc = avnd_di_oper_send(cb, comp->su, 
>> AVSV_ERR_RCVR_SU_FAILOVER);
>> +                       osafassert(NCSCC_RC_SUCCESS == rc);
>> +                       avnd_su_si_del(cb, &comp->su->name);
>> +               }
>> +       }
>> +
> I definitively think the above belongs to the SU presence state
> machine. I did the change and it works the same but gets less changes
> and much cleaner.
It is the same way we are dealing with node failover and in the same 
function. When last component is cleaned up, component fsm will be 
triggered in clc response event.So this handling will take care if 
termination of all components is completed, which means completion of su 
failover at amfnd and ask amfd for its role for su-failover.
> all_comps_terminated_in_su() means the same as su->pres==UNINSTANTIATED
>
> Comments?
In case a components moves to inst/term failed state, presence state of 
su will not be UNINSTANTIATED.
> Thanks,
> Hans


------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to