Hi Minh,
                Thanks Minh. Please push.

Thanks
-Nagu

> -----Original Message-----
> From: minh chau [mailto:minh.c...@dektech.com.au]
> Sent: 31 October 2016 17:32
> To: Nagendra Kumar; hans.nordeb...@ericsson.com; Praveen Malviya;
> gary....@dektech.com.au; long.hb.ngu...@dektech.com.au
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin operation continuation if
> csi completes during headless [#1725 part 1] V1
> 
> Hi Nagu,
> 
> Thanks for the trace file, I think this is the reason:
> SU Rank: SU1 = 1, SU2 = SU3 = 2.
> 
> At cluster start up: Order of adding SU to SG Oct 31 14:29:30.232744
> osafamfd [4881:su.cc:0563] >> su_add_to_model:
> safSu=SU1,safSg=AmfDemo_2N,safApp=AmfDemo1
> Oct 31 14:29:30.234580 osafamfd [4881:su.cc:0563] >> su_add_to_model:
> safSu=SU2,safSg=AmfDemo_2N,safApp=AmfDemo1
> Oct 31 14:29:30.235423 osafamfd [4881:su.cc:0563] >> su_add_to_model:
> safSu=SU3,safSg=AmfDemo_2N,safApp=AmfDemo1
> 
> The test is locking SI, so after headless SU2 assignment is removed, SU1 is
> failed-over, SU3 has no assignment. SUAutoRepair is enabled When
> unlocking SI, AMFD will pick SU1 to assign active first, SU2 or SU3 will have
> standby then. But after headless, SU3 is first read from IMM and added
> before SU2
> 
> Oct 31 14:32:02.488246 osafamfd [5777:su.cc:0563] >> su_add_to_model:
> safSu=SU3,safSg=AmfDemo_2N,safApp=AmfDemo1
> Oct 31 14:32:02.490947 osafamfd [5777:su.cc:0563] >> su_add_to_model:
> safSu=SU2,safSg=AmfDemo_2N,safApp=AmfDemo1
> Oct 31 14:32:02.494157 osafamfd [5777:su.cc:0563] >> su_add_to_model:
> safSu=SU1,safSg=AmfDemo_2N,safApp=AmfDemo1
> 
> So we see SU1 has active assignment, SU3 has standby assignment
> eventually. I think this is not a real problem since SU2 and SU3 are 
> configured
> at the same rank so it's not a matter whether SU2 or SU3 is getting
> assignment first. Of course, user can change the rank of SU2 >
> SU3 if SU2 is preferred to have standby assignment.
> 
> Do you agree if I will push this patch series first?
> There are some other bugs found, I will create them in separate and we will
> look at them later.
> 
> Thanks,
> Minh
> 
> 
> On 31/10/16 20:14, Nagendra Kumar wrote:
> > Hi Minh,
> >                Please find the configuration and traces attached in the 
> > ticket, also
> I have provided steps to reproduce.
> >
> > Thanks
> > -Nagu
> >
> >> -----Original Message-----
> >> From: minh chau [mailto:minh.c...@dektech.com.au]
> >> Sent: 31 October 2016 08:04
> >> To: Nagendra Kumar; hans.nordeb...@ericsson.com; Praveen Malviya;
> >> gary....@dektech.com.au; long.hb.ngu...@dektech.com.au
> >> Cc: opensaf-devel@lists.sourceforge.net
> >> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin operation
> >> continuation if csi completes during headless [#1725 part 1] V1
> >>
> >> Hi Nagu,
> >>
> >> Thanks for testing. Regarding test case 4, I can only reproduce it
> >> with below
> >> configuration:
> >> - set saAmfSGNumPrefInserviceSUs=2
> >> - SU2 (standby) is fault-injected to SuFailover After headless, SU2
> >> is automatically repaired but SU2 is still UNINSTANTIATED
> >> (PrefInsSU=2), thus unlock SI will give SU1 active assignment, SU3 standby
> assignment.
> >>
> >> If your test is different from mine, then there could be something
> >> wrong, and please send me the configuration so I can check.
> >>
> >> Thanks,
> >> Minh
> >>
> >> On 28/10/16 22:37, Nagendra Kumar wrote:
> >>> Hi Minh,
> >>>
> >>> Good work !!!
> >>>
> >>> Ack. Tested with pending_cs8091.tgz attached in the ticket.
> >>>
> >>> Tested with recovery as SU Failover:
> >>> 1. SU unlock with component faulting during Act assignment.
> >>> 2. SU lock with component faulting during Quisced and Active
> assignments.
> >>> 3. SI unlock with component faulting during Act assignment.
> >>> 4. SI lock with component faulting during Quisced assignment.
> >>> One problem, I see is before SI lock, SU1 was Act and SU2 was
> >>> Standby and SU3 was spare. After headless and faults and recovery, I
> >>> see SU1 as Act
> >> and SU3 as Standby and SU2 as spare.
> >>
> safSISU=safSu=SU1\,safSg=AmfDemo_2N\,safApp=AmfDemo1,safSi=AmfDe
> >> mo1,safApp=AmfDemo1
> >>>           saAmfSISUHAState=ACTIVE(1)
> >>>
> >>
> safSISU=safSu=SU3\,safSg=AmfDemo_2N\,safApp=AmfDemo1,safSi=AmfDe
> >> mo1,safApp=AmfDemo1
> >>>           saAmfSISUHAState=STANDBY(2)
> >>>
> >>> Why should assignment changed ?
> >>>
> >>> The same with SI lock and fault during remove assignments.
> >>>
> >>> 5. SG unlock with component faulting during Act assignment.
> >>> After recovery, SUs were assigned, but SU1 gets Act and SU3 as
> >>> Standby
> >> and SU2 as spare.
> >>
> safSISU=safSu=SU3\,safSg=AmfDemo_2N\,safApp=AmfDemo1,safSi=AmfDe
> >> mo1,safApp=AmfDemo1
> >>>           saAmfSISUHAState=ACTIVE(1)
> >>>
> >>
> safSISU=safSu=SU1\,safSg=AmfDemo_2N\,safApp=AmfDemo1,safSi=AmfDe
> >> mo1,safApp=AmfDemo1
> >>>           saAmfSISUHAState=STANDBY(2)
> >>>
> >>> 6.  SG lock with component faulting during Quisced assignment.
> >>> The same problem mentioned in #4
> >>>
> >>> Please consider these points before you check in.
> >>>
> >>> Thanks
> >>> -Nagu
> >>>
> >>>> -----Original Message-----
> >>>> From: Nagendra Kumar
> >>>> Sent: 07 October 2016 18:04
> >>>> To: minh chau; hans.nordeb...@ericsson.com; Praveen Malviya;
> >>>> gary....@dektech.com.au; long.hb.ngu...@dektech.com.au
> >>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin operation
> >>>> continuation if csi completes during headless [#1725 part 1] V1
> >>>>
> >>>> Update:
> >>>>
> >>>>> Further testing will continue:
> >>>>> 1. Faults during assignments.
> >>>> This worked fine and no issues has been found.
> >>>>
> >>>>> 2. Faults during admin operations.
> >>>> Testing is undergoing. Some of the initial test cases have passed.
> >>>>
> >>>> Thanks
> >>>> -Nagu
> >>>>
> >>>>> -----Original Message-----
> >>>>> From: Nagendra Kumar
> >>>>> Sent: 22 September 2016 16:52
> >>>>> To: minh chau; hans.nordeb...@ericsson.com; Praveen Malviya;
> >>>>> gary....@dektech.com.au; long.hb.ngu...@dektech.com.au
> >>>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>>> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin operation
> >>>>> continuation if csi completes during headless [#1725 part 1] V1
> >>>>>
> >>>>> Hi Minh,
> >>>>>
> >>>>> I have tested following scenarios till now and works well:
> >>>>> 1. Faults under standalone system. Act and Std SUs are there and
> >>>>> cluster went headless. Faults occurred in Act and Standby
> >>>>> separately and together with recovery as restart, su f/o, node f/o,
> node s/o.
> >>>>> Faults are also mixed with two SGs.
> >>>>> 2. During headless, the escalations from comp restart->su
> >>>>> restart->su f/o -> node f/o. Two SG was used for testings. When
> >>>>> cluster recovers, the system works well as expected.
> >>>>>
> >>>>> SG and node Auto repair was enabled and disabled in many test cases.
> >>>>>
> >>>>> Further testing will continue:
> >>>>> 1. Faults during assignments.
> >>>>> 2. Faults during admin operations.
> >>>>>
> >>>>> Thanks
> >>>>> -Nagu
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: minh chau [mailto:minh.c...@dektech.com.au]
> >>>>>> Sent: 15 September 2016 12:27
> >>>>>> To: Nagendra Kumar; hans.nordeb...@ericsson.com; Praveen
> Malviya;
> >>>>>> gary....@dektech.com.au; long.hb.ngu...@dektech.com.au
> >>>>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>>>> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin operation
> >>>>>> continuation if csi completes during headless [#1725 part 1] V1
> >>>>>>
> >>>>>> Hi Nagu,
> >>>>>>
> >>>>>> Yes you are right. The "component failover" is unstable, I think
> >>>>>> I will post my analysis of component failover problem to #1902
> >>>>>> after you have verified the other recoveries.
> >>>>>>
> >>>>>> Thanks,
> >>>>>> Minh
> >>>>>>
> >>>>>> On 15/09/16 16:51, Nagendra Kumar wrote:
> >>>>>>> Hi Minh,
> >>>>>>>               @2.a.) and @2.b.) are working except "Component
> Failover"
> >>>>>> as recovery. Other recovery like SU Failover, etc are working
> >>>>>> fine with 1725_pending_review.tgz and
> >>>>> 07_no_recovery_if_no_pending_susi.diff.
> >>>>>>> Please confirm.
> >>>>>>>
> >>>>>>> Thanks
> >>>>>>> -Nagu
> >>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> From: Nagendra Kumar
> >>>>>>>> Sent: 15 September 2016 12:13
> >>>>>>>> To: minh chau; hans.nordeb...@ericsson.com; Praveen Malviya;
> >>>>>>>> gary....@dektech.com.au; long.hb.ngu...@dektech.com.au
> >>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>>>>>> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin operation
> >>>>>>>> continuation if csi completes during headless [#1725 part 1] V1
> >>>>>>>>
> >>>>>>>> Hi Minh,
> >>>>>>>>>> If there's no any major problem, can we make SI Dep as last
> >> phase?
> >>>>>>>> Yes, absolutely. There is no problem.
> >>>>>>>>>> If I am right, I think you are testing @2.a) - and *fault*
> >>>>>>>>>> has just been as
> >>>>>>>> node reboot/powered-off by user during headless.
> >>>>>>>> Yes, you are right.
> >>>>>>>>
> >>>>>>>> Thanks
> >>>>>>>> -Nagu
> >>>>>>>>
> >>>>>>>>> -----Original Message-----
> >>>>>>>>> From: minh chau [mailto:minh.c...@dektech.com.au]
> >>>>>>>>> Sent: 14 September 2016 17:54
> >>>>>>>>> To: Nagendra Kumar; hans.nordeb...@ericsson.com; Praveen
> >>>>> Malviya;
> >>>>>>>>> gary....@dektech.com.au; long.hb.ngu...@dektech.com.au
> >>>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>>>>>>> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin operation
> >>>>>>>>> continuation if csi completes during headless [#1725 part 1]
> >>>>>>>>> V1
> >>>>>>>>>
> >>>>>>>>> Hi Nagu,
> >>>>>>>>>
> >>>>>>>>> I have proposed to change the order on 28 Jul:
> >>>>>>>>>
> >>>>>>>>> ==============
> >>>>>>>>>
> >>>>>>>>> I would like to change the above orders of implementation:
> >>>>>>>>> @0. We are here now: No admin op continuation, no recovery
> on
> >>>>>>>>> faults during headless.
> >>>>>>>>> Since componentRestart/suRestart has no impact on recovery
> >>>>>>>>> after headless, faults during headless here mean: failover
> >>>>>>>>> escalation, node reboot/powered-off by user during headless.
> >>>>>>>>> Faults are different phenomenons but they all result in loss of
> SUSI.
> >>>>>>>>> Having
> >>>>>>>>> #1902 will remove the major impact of a node reboot due to
> >>>>>>>>> immediate escalation and AMF also has to deal with the loss of
> >>>>>>>>> SUSI the same as without
> >>>>>>>>> #1902 plus failover escalation
> >>>>>>>>>
> >>>>>>>>> @1. Admin op continuation without required recovery on faults
> >>>>>>>>> during headless
> >>>>>>>>> @1.a) All CSI(s) callback completes during headless, but SUSI
> >>>>>>>>> states are still QUIESCED/QUIESCING
> >>>>>>>>> @1.b) One of CSI(s) callback is still ongoing after headless
> >>>>>>>>> (AMFD would have to wait for it?)
> >>>>>>>>>
> >>>>>>>>> @2. Recovery on faults. (Doing fault recovery needs to
> >>>>>>>>> consider admin op continuation which would have been
> >>>>>>>>> implemented in step
> >>>>>>>>> @1) Need
> >>>>>>>>> #1902
> >>>>>>>>> @2.a.) Faults in normal flow: No admin op continuation is
> >>>>>>>>> required after headless, but fault did happen during headless
> >>>>>>>>> @2.b.) Faults happen during admin operation while headless,
> >>>>>>>>> after headless AMFD needs to consider a recovery on fault
> >>>>>>>>> together with admin op continuation.
> >>>>>>>>>
> >>>>>>>>> @3. @1 + @2 + With SI Dep.
> >>>>>>>>>
> >>>>>>>>> ===============
> >>>>>>>>> I thought we have followed the above order so far? Because
> >>>>>>>>> part
> >>>>>>>>> 1 was acked, which is "@1. Admin op continuation without
> >>>>>>>>> required recovery on faults during headless"
> >>>>>>>>> If there's no any major problem, can we make SI Dep as last
> phase?
> >>>>>>>>> If I am right, I think you are testing @2.a) - and *fault* has
> >>>>>>>>> just been as node reboot/powered-off by user during headless.
> >>>>>>>>>
> >>>>>>>>> Thanks,
> >>>>>>>>> Minh
> >>>>>>>>>
> >>>>>>>>> On 14/09/16 21:48, Nagendra Kumar wrote:
> >>>>>>>>>> Hi Minh,
> >>>>>>>>>>            If it is not tested, then it is fine. But, we had added
> >>>> (#1)
> >>>>>>>>>> the
> >>>>>>>>> following in the ticket #1725 on 27 Jul :
> >>>>>>>>>> ===========================================
> >>>>>>>>>> Nagendra Kumar - 2016-07-27
> >>>>>>>>>>
> >>>>>>>>>> For 2N red model, implementation can be done in the following
> >>>>>>>>>> phased
> >>>>>>>>> manner.
> >>>>>>>>>> It has advantages of being logically segregated and it
> >>>>>>>>>> continues from
> >>>>>>>>> where we left in 5.0.
> >>>>>>>>>> (Phases #1, #2 and #3 is more related to ticket #1725 and
> >>>>>>>>>> phases
> >>>>>>>>>> #4 and #5 are related to #1902)
> >>>>>>>>>>
> >>>>>>>>>> 1.    Node restart escalation (with and without SI Dep).
> >>>>>>>>>> 2.    Without Si Dep : Admin op (no faults/escalations).
> >>>>>>>>>> 3.    Without Si Dep : Admin Op + node restart faults/escalations
> >>>>> during
> >>>>>>>>> headless.
> >>>>>>>>>> 4.    Without Si Dep :
> >>>>>>>>>>         a.) All faults in normal flows.
> >>>>>>>>>>         b.) All faults during admin operation(minus node
> >>>>>>>>>> reboot during headless
> >>>>>>>>> as covered in #3).
> >>>>>>>>>>      5.   With Si Dep : #2, #3 and #4.
> >>>>>>>>>>
> >>>>>>>>>> Since 5.0 already has immediate escalation model (component
> >>>>>>>>>> and node
> >>>>>>>>> restart/reboot), so #1, #2 and #3 completes left over portion
> >>>>>>>>> of headless contribution in 5.0 with that model.
> >>>>>>>>>> ======================================
> >>>>>>>>>>
> >>>>>>>>>> Thanks
> >>>>>>>>>> -Nagu
> >>>>>>>>>>
> >>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>> From: minh chau [mailto:minh.c...@dektech.com.au]
> >>>>>>>>>>> Sent: 14 September 2016 17:05
> >>>>>>>>>>> To: Nagendra Kumar; hans.nordeb...@ericsson.com; Praveen
> >>>>>> Malviya;
> >>>>>>>>>>> gary....@dektech.com.au; long.hb.ngu...@dektech.com.au
> >>>>>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>>>>>>>>> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin operation
> >>>>>>>>>>> continuation if csi completes during headless [#1725 part 1]
> >>>>>>>>>>> V1
> >>>>>>>>>>>
> >>>>>>>>>>> Hi Nagu,
> >>>>>>>>>>>
> >>>>>>>>>>> SI Dep is the last phase of implementation of headless
> >>>>>>>>>>> recovery, its support is not included in all patches
> >>>>>>>>>>> attached in
> >>>> ticket #1725.
> >>>>>>>>>>> Thanks,
> >>>>>>>>>>> Minh
> >>>>>>>>>>>
> >>>>>>>>>>> On 14/09/16 21:21, Nagendra Kumar wrote:
> >>>>>>>>>>>> Hi Minh,
> >>>>>>>>>>>>          Have you tested Si Dep (2N Red model) for "node
> >>>>>> restart test
> >>>>>>>>>>> cases" ? I can't see it in the test case doc.
> >>>>>>>>>>>> Thanks
> >>>>>>>>>>>> -Nagu
> >>>>>>>>>>>>
> >>>>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>>>> From: Nagendra Kumar
> >>>>>>>>>>>>> Sent: 13 September 2016 11:20
> >>>>>>>>>>>>> To: minh chau; hans.nordeb...@ericsson.com; Praveen
> >>>> Malviya;
> >>>>>>>>>>>>> gary....@dektech.com.au;
> long.hb.ngu...@dektech.com.au
> >>>>>>>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>>>>>>>>>>> Subject: Re: [devel] [PATCH 2 of 4] AMFND: Admin
> operation
> >>>>>>>>>>>>> continuation if csi completes during headless [#1725 part
> >>>>>>>>>>>>> 1]
> >>>>>>>>>>>>> V1
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Hi Minh,
> >>>>>>>>>>>>>                 I have tested these scenarios again and it
> works well.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Thanks
> >>>>>>>>>>>>> -Nagu
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>>>>> From: minh chau [mailto:minh.c...@dektech.com.au]
> >>>>>>>>>>>>>> Sent: 12 September 2016 11:53
> >>>>>>>>>>>>>> To: Nagendra Kumar; hans.nordeb...@ericsson.com;
> >> Praveen
> >>>>>>>>> Malviya;
> >>>>>>>>>>>>>> gary....@dektech.com.au;
> long.hb.ngu...@dektech.com.au
> >>>>>>>>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>>>>>>>>>>>> Subject: Re: [PATCH 2 of 4] AMFND: Admin operation
> >>>>>>>>>>>>>> continuation if csi completes during headless [#1725 part
> >>>>>>>>>>>>>> 1]
> >>>>>>>>>>>>>> V1
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Hi Nagu,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> One bug get hit by your configuration, where the absent
> >>>>>>>>>>>>>> SUSIs are found after headless but no real SUSIs are
> >>>>>>>>>>>>>> available
> >>>> also.
> >>>>>>>>>>>>>> In this case I think that AMFD can do like a fresh
> assignment.
> >>>>>>>>>>>>>> I attach the patch to ticket #1725, please help to test
> again.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>> Minh
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On 12/09/16 11:09, minh chau wrote:
> >>>>>>>>>>>>>>> Hi Nagu,
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> I'm running the tests with this configuration and will
> >>>>>>>>>>>>>>> get back to
> >>>>>>>> you.
> >>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>> Minh
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On 09/09/16 22:26, Nagendra Kumar wrote:
> >>>>>>>>>>>>>>>> Hi Minh,
> >>>>>>>>>>>>>>>> I am using 1725_pending_review.tgz
> >>>>>>>>>>>>>>>> (1725_02_V2_bugfix_01_resend_buffer_in_set_leds.diff,
> >>>>>>>>>>>>>>>>
> >>>>> 1725_02_V2_bugfix_02_honor_clusterinit_nodesync_timer.diff,
> >>>>>>>>>>>>>>>> 1725_02_V2_bugfix_03_restore_ng_admin.diff,
> >>>>>>>>>>>>>>>> 1725_03_V4_failover_absent_susi_longDn.diff,
> >>>>>>>>>>>>>>>> 1725_04_V2_headless_validation.diff,
> >>>>>>>>>>>>>>>> 1725_05_V2_resend_oper_state.diff,
> >>>>>>>>>>>>>>>> 1725_06a_fullscope_escalation_headless.diff).
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> I am doing basic node reboot validation testing with no
> >>>> faults.
> >>>>>>>>>>>>>>>> Configuration: SU1(act) and SU2(stanby) both on PL-3.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> TC #1: Start SC-1, PL-3 and PL-5: Unlock SU1 and SU2.
> >>>>>>>>>>>>>>>> Stop
> >>>>>>>>>>>>>>>> SC-1 and stop PL-3, start PL-3 and start SC-1.
> >>>>>>>>>>>>>>>> After SC-1 and PL-3 comes back, ideally SU1 and SU2
> >>>>>>>>>>>>>>>> should get assignments as Act and Std, but no
> >>>>>>>>>>>>>>>> assignment are being given to SUs on PL-3 and it shows
> >>>>>>>>>>>>>>>> following in
> >>>> status:
> >>>>>>>>>>>>>>>> Only Su2 has Std assignment.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> safSISU=safSu=SC-
> >>>>>>>>>>>>>>
> 1\,safSg=NoRed\,safApp=OpenSAF,safSi=NoRed1,safApp=O
> >>>>>>>>>>>>>>>> penSAF
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=ACTIVE(1)
> >>>>>>>>>>>>>>>> safSISU=safSu=PL-
> >>>>>>>>>>>>>>
> 5\,safSg=NoRed\,safApp=OpenSAF,safSi=NoRed2,safApp=O
> >>>>>>>>>>>>>>>> penSAF
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=ACTIVE(1)
> >>>>>>>>>>>>>>>>
> >>
> safSISU=safSu=SU2\,safSg=AmfDemo_2N\,safApp=AmfDemo1,safSi=AmfDe
> >>>>>>>>>>>>>> mo1,s
> >>>>>>>>>>>>>>>> afApp=AmfDemo1
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=STANDBY(2)
> >>>>>>>>>>>>>>>> safSISU=safSu=SC-
> >> 1\,safSg=2N\,safApp=OpenSAF,safSi=SC-
> >>>>>>>>>>>>>> 2N,safApp=OpenSAF
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=ACTIVE(1)
> >>>>>>>>>>>>>>>> safSISU=safSu=PL-
> >>>>>>>>>>>>>>
> 3\,safSg=NoRed\,safApp=OpenSAF,safSi=NoRed3,safApp=O
> >>>>>>>>>>>>>>>> penSAF
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=ACTIVE(1)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> TC #2: Configuration same as TC#1. Stop PL-3 and don't
> >>>> start.
> >>>>>>>>>>>>>>>> The same issue:
> >>>>>>>>>>>>>>>> safSISU=safSu=PL-
> >>>>>>>>>>>>>>
> 5\,safSg=NoRed\,safApp=OpenSAF,safSi=NoRed3,safApp=O
> >>>>>>>>>>>>>>>> penSAF
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=ACTIVE(1)
> >>>>>>>>>>>>>>>>
> >>
> safSISU=safSu=SU2\,safSg=AmfDemo_2N\,safApp=AmfDemo1,safSi=AmfDe
> >>>>>>>>>>>>>> mo1,s
> >>>>>>>>>>>>>>>> afApp=AmfDemo1
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=STANDBY(2)
> >>>>>>>>>>>>>>>> safSISU=safSu=SC-
> >>>>>>>>>>>>>>
> 1\,safSg=NoRed\,safApp=OpenSAF,safSi=NoRed2,safApp=O
> >>>>>>>>>>>>>>>> penSAF
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=ACTIVE(1)
> >>>>>>>>>>>>>>>> safSISU=safSu=SC-
> >> 1\,safSg=2N\,safApp=OpenSAF,safSi=SC-
> >>>>>>>>>>>>>> 2N,safApp=OpenSAF
> >>>>>>>>>>>>>>>>               saAmfSISUHAState=ACTIVE(1)
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> TC #3: Configured SU1(Act) on PL-3 and SU2(Std) on PL-
> 4.
> >>>>>>>>>>>>>>>> Stop SC-1, stop PL-3 and PL-4, but PL-5 is running.
> >>>>>>>>>>>>>>>> start SC-1, the same issue.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> TC #4: Same as TC #3, but SU3 configured on PL-5 as
> spare.
> >>>>>>>>>>>>>>>> SU3 doesn't get any assignment and Sg is unstable.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Thanks
> >>>>>>>>>>>>>>>> -Nagu
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>>>>>>>> From: Minh Hon Chau
> >>>> [mailto:minh.c...@dektech.com.au]
> >>>>>>>>>>>>>>>>> Sent: 18 August 2016 05:46
> >>>>>>>>>>>>>>>>> To: hans.nordeb...@ericsson.com; Nagendra Kumar;
> >>>>> Praveen
> >>>>>>>>>>>>> Malviya;
> >>>>>>>>>>>>>>>>> gary....@dektech.com.au;
> >>>>> long.hb.ngu...@dektech.com.au;
> >>>>>>>>>>>>>>>>> minh.c...@dektech.com.au
> >>>>>>>>>>>>>>>>> Cc: opensaf-devel@lists.sourceforge.net
> >>>>>>>>>>>>>>>>> Subject: [PATCH 2 of 4] AMFND: Admin operation
> >>>>>>>>>>>>>>>>> continuation if csi completes during headless [#1725
> >>>>>>>>>>>>>>>>> part 1] V1
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>        osaf/services/saf/amf/amfnd/di.cc             |  199
> >>>>>>>>>>>>>>>>> +++++++++++++++++--------
> >>>>>>>>>>>>>>>>>        osaf/services/saf/amf/amfnd/include/avnd_di.h |
> 1
> >> +
> >>>>>>>>>>>>>>>>>        2 files changed, 134 insertions(+), 66
> >>>>>>>>>>>>>>>>> deletions(-)
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> There're two options basically that AMFD can continue
> >>>>>>>>>>>>>>>>> admin operation wih completed csi(s)
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> First: AMFD can use the sync SUSI fsm state as latest,
> >>>>>>>>>>>>>>>>> AMFD then has to explore its SUSI assignments with
> >>>>>>>>>>>>>>>>> adminStates of relevant entities to determine which SU
> >>>>>>>>>>>>>>>>> should be on call of
> >>>>>>>>> susi_success().
> >>>>>>>>>>>>>>>>> Deeper level of exploration for csi addition. It also
> >>>>>>>>>>>>>>>>> depends on SG Fsm state which is being used variously
> >>>>>>>>>>>>>>>>> in different SG
> >>>>>>>> types.
> >>>>>>>>>>>>>>>>> Second: AMFD uses the SUSI fsm state read from IMM
> as
> >>>>>>>>>>>>>>>>> latest, and AMFND needs to resend susi_resp messages
> >>>>> which
> >>>>>>>>>>>>>>>>> were deferred during headless so that AMFD can
> >>>>>>>>>>>>>>>>> continue the admin operation
> >>>>>>>>>>>>> sequence.
> >>>>>>>>>>>>>>>>> Both cases of csi completion [during or after]
> >>>>>>>>>>>>>>>>> headless can run in the same code flow.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> The patch buffers susi_resp_msg during headless stage
> >>>>>>>>>>>>>>>>> and resend it to AMFD after headless. There could be a
> >>>>>>>>>>>>>>>>> chance that AMFND sent out susi response message
> but
> >>>>>>>>>>>>>>>>> AMFD could
> >>>>>> not
> >>>>>>>>> receive
> >>>>>>>>>>>>>>>>> or process it. This case could be seen as a defect,
> >>>>>>>>>>>>>>>>> which can be fixed by securing the result of sending
> >>>>>>>>>>>>>>>>> susi_resp message from AMFND toward
> >>>>>>>>>>>>> AMFD.
> >>>>>>>>>>>>>>>>> diff --git a/osaf/services/saf/amf/amfnd/di.cc
> >>>>>>>>>>>>>>>>> b/osaf/services/saf/amf/amfnd/di.cc
> >>>>>>>>>>>>>>>>> --- a/osaf/services/saf/amf/amfnd/di.cc
> >>>>>>>>>>>>>>>>> +++ b/osaf/services/saf/amf/amfnd/di.cc
> >>>>>>>>>>>>>>>>> @@ -805,11 +805,6 @@ uint32_t
> >>>>>>>>> avnd_di_susi_resp_send(AVND_CB
> >>>>>>>>>>>>>>>>>            if (cb->term_state ==
> >>>>>>>>>>>>>>>>> AVND_TERM_STATE_OPENSAF_SHUTDOWN_STARTED)
> >>>>>>>>>>>>>>>>>                return rc;
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> -    if (cb->is_avd_down == true) {
> >>>>>>>>>>>>>>>>> -        m_AVND_SU_ALL_SI_RESET(su);
> >>>>>>>>>>>>>>>>> -        return rc;
> >>>>>>>>>>>>>>>>> -    }
> >>>>>>>>>>>>>>>>> -
> >>>>>>>>>>>>>>>>>            // should be in assignment pending state to be
> here
> >>>>>>>>>>>>>>>>>            osafassert(m_AVND_SU_IS_ASSIGN_PEND(su));
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> @@ -820,64 +815,76 @@ uint32_t
> >>>>>>>>>>> avnd_di_susi_resp_send(AVND_CB
> >>>>>>>>>>>>>>>>>            TRACE_ENTER2("Sending Resp su=%s, si=%s,
> >>>>>>>>>>>>>>>>> curr_state=%u, prv_state=%u", su->name.value,
> >>>>>>>>>>>>>>>>> curr_si->name.value,curr_si-
> >>>>>>>>>>>>>>>>>> curr_state,curr_si->prv_state);
> >>>>>>>>>>>>>>>>>            /* populate the susi resp msg */
> >>>>>>>>>>>>>>>>>            msg.info.avd = new AVSV_DND_MSG();
> >>>>>>>>>>>>>>>>> -        msg.type = AVND_MSG_AVD;
> >>>>>>>>>>>>>>>>> -        msg.info.avd->msg_type =
> >>>>>>>>>>>>> AVSV_N2D_INFO_SU_SI_ASSIGN_MSG;
> >>>>>>>>>>>>>>>>> -        msg.info.avd->msg_info.n2d_su_si_assign.msg_id
> =
> >>>>>> ++(cb-
> >>>>>>>>>>>>>>>>>> snd_msg_id);
> >>>>>>>>>>>>>>>>> -        msg.info.avd-
> >msg_info.n2d_su_si_assign.node_id =
> >>>>> cb-
> >>>>>>>>>>>>>>>>>> node_info.nodeId;
> >>>>>>>>>>>>>>>>> -        if (si) {
> >>>>>>>>>>>>>>>>> - msg.info.avd->msg_info.n2d_su_si_assign.single_csi
> =
> >>>>>>>>>>>>>>>>> -                        ((si->single_csi_add_rem_in_si ==
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_BASE) ?
> >>>>>>>>>>>>>>>>> false : true);
> >>>>>>>>>>>>>>>>> -        }
> >>>>>>>>>>>>>>>>> -        TRACE("curr_assign_state '%u'", curr_si-
> >>>>>>>>> curr_assign_state);
> >>>>>>>>>>>>>>>>> -        msg.info.avd-
> >msg_info.n2d_su_si_assign.msg_act
> >> =
> >>>>>>>>>>>>>>>>> -
> >>>>>> (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si)
> >>>>>>>> ||
> >>>>>>>>>>>>>>>>> -
> >>>>>> m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si))
> >>>>>>>> ?
> >>>>>>>>>>>>>>>>> -                ((!curr_si->prv_state) ?
> AVSV_SUSI_ACT_ASGN :
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_MOD) : AVSV_SUSI_ACT_DEL;
> >>>>>>>>>>>>>>>>> -        msg.info.avd-
> >msg_info.n2d_su_si_assign.su_name
> >> =
> >>>>> su-
> >>>>>>>>>>>> name;
> >>>>>>>>>>>>>>>>> -        if (si) {
> >>>>>>>>>>>>>>>>> - msg.info.avd->msg_info.n2d_su_si_assign.si_name =
> >>>>>>>>>>>>>>>>> si-
> >>>>>>> name;
> >>>>>>>>>>>>>>>>> -                if (AVSV_SUSI_ACT_ASGN ==
> >>>>>>>>>>>>>>>>> si->single_csi_add_rem_in_si) {
> >>>>>>>>>>>>>>>>> -                        TRACE("si->curr_assign_state '%u'",
> curr_si-
> >>>>>>>>>>>>>>>>>> curr_assign_state);
> >>>>>>>>>>>>>>>>> - msg.info.avd->msg_info.n2d_su_si_assign.msg_act =
> >>>>>>>>>>>>>>>>> -
> >>>>>>>>>>>>>>>>>
> >>>>> (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si)
> >>>>>> ||
> >>>>>>>>>>>>>>>>> -
> >>>>>>>>>>>>>>>>>
> >>>>>> m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si)) ?
> >>>>>>>>>>>>>>>>> -                                AVSV_SUSI_ACT_ASGN :
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_DEL;
> >>>>>>>>>>>>>>>>> -                }
> >>>>>>>>>>>>>>>>> -        }
> >>>>>>>>>>>>>>>>> -        msg.info.avd-
> >msg_info.n2d_su_si_assign.ha_state
> >> =
> >>>>>>>>>>>>>>>>> -                (SA_AMF_HA_QUIESCING == curr_si-
> >>> curr_state)
> >>>> ?
> >>>>>>>>>>>>>>>>> SA_AMF_HA_QUIESCED : curr_si->curr_state;
> >>>>>>>>>>>>>>>>> -        msg.info.avd->msg_info.n2d_su_si_assign.error =
> >>>>>>>>>>>>>>>>> -
> >>>>>> (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si)
> >>>>>>>> ||
> >>>>>>>>>>>>>>>>> -
> >>>>>> m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_REMOVED(curr_si))
> >>>>>>>> ?
> >>>>>>>>>>>>>>>>> NCSCC_RC_SUCCESS : NCSCC_RC_FAILURE;
> >>>>>>>>>>>>>>>>> +    msg.type = AVND_MSG_AVD;
> >>>>>>>>>>>>>>>>> +    msg.info.avd->msg_type =
> >>>>>>>>>>> AVSV_N2D_INFO_SU_SI_ASSIGN_MSG;
> >>>>>>>>>>>>>>>>> +    msg.info.avd->msg_info.n2d_su_si_assign.node_id
> =
> >>>>>>>>>>>>>>>>> + cb-
> >>>>>>>>>>>>>>>>>> node_info.nodeId;
> >>>>>>>>>>>>>>>>> +    if (si) {
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> + msg.info.avd->msg_info.n2d_su_si_assign.single_csi
> >>>> =
> >>>>>>>>>>>>>>>>> +                ((si->single_csi_add_rem_in_si ==
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_BASE) ? false : true);
> >>>>>>>>>>>>>>>>> +    }
> >>>>>>>>>>>>>>>>> +    TRACE("curr_assign_state '%u'", curr_si-
> >>>>>>> curr_assign_state);
> >>>>>>>>>>>>>>>>> +    msg.info.avd->msg_info.n2d_su_si_assign.msg_act
> =
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>> (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si)
> >>>>>>>>> ||
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>> m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si))
> >>>>>>>>> ?
> >>>>>>>>>>>>>>>>> +                ((!curr_si->prv_state) ?
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_ASGN : AVSV_SUSI_ACT_MOD) :
> >>>>>>>>>>>>> AVSV_SUSI_ACT_DEL;
> >>>>>>>>>>>>>>>>> +    msg.info.avd->msg_info.n2d_su_si_assign.su_name
> =
> >>>>>>>>>>>>>>>>> + su-
> >>>>>>>>>> name;
> >>>>>>>>>>>>>>>>> +    if (si) {
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> + msg.info.avd->msg_info.n2d_su_si_assign.si_name
> >>>>>>>>>>>>>>>>> + =
> >>>>>>>>>>>>>>>>> + si-
> >>>>>>>>>>>>>>>>>> name;
> >>>>>>>>>>>>>>>>> +        if (AVSV_SUSI_ACT_ASGN ==
> >>>>>>>>>>>>>>>>> + si->single_csi_add_rem_in_si)
> >>>>>>>> {
> >>>>>>>>>>>>>>>>> +            TRACE("si->curr_assign_state '%u'",
> >>>>>>>>>>>>>>>>> + curr_si-
> >>>>>>>>>>>>>>>>>> curr_assign_state);
> >>>>>>>>>>>>>>>>> +                msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.msg_act =
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>> (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si)
> >>>>>>>>> ||
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>> m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si))
> >>>>>>>>> ?
> >>>>>>>>>>>>>>>>> +                    AVSV_SUSI_ACT_ASGN :
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_DEL;
> >>>>>>>>>>>>>>>>> +        }
> >>>>>>>>>>>>>>>>> +    }
> >>>>>>>>>>>>>>>>> +    msg.info.avd->msg_info.n2d_su_si_assign.ha_state
> =
> >>>>>>>>>>>>>>>>> +            (SA_AMF_HA_QUIESCING ==
> >>>>>>>>>>>>>>>>> + curr_si->curr_state)
> >> ?
> >>>>>>>>>>>>>>>>> SA_AMF_HA_QUIESCED : curr_si->curr_state;
> >>>>>>>>>>>>>>>>> +    msg.info.avd->msg_info.n2d_su_si_assign.error =
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>> (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNED(curr_si)
> >>>>>>>>> ||
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>> m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_REMOVED(curr_si))
> >>>>>>>>> ?
> >>>>>>>>>>>>>>>>> +NCSCC_RC_SUCCESS : NCSCC_RC_FAILURE;
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> -        if (msg.info.avd-
> >>> msg_info.n2d_su_si_assign.msg_act
> >>>>> ==
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_ASGN)
> >>>>>>>>>>>>>>>>> -                osafassert(si);
> >>>>>>>>>>>>>>>>> +    if
> >>>>>>>>>>>>>>>>> + (msg.info.avd->msg_info.n2d_su_si_assign.msg_act
> >>>>>>>>>>>>>>>>> + ==
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_ASGN)
> >>>>>>>>>>>>>>>>> +        osafassert(si);
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> -        /* send the msg to AvD */
> >>>>>>>>>>>>>>>>> -        TRACE("Sending. msg_id'%u', node_id'%u',
> >>>>> msg_act'%u',
> >>>>>>>>>>>>>>>>> su'%s', si'%s',
> >>>>>>>>>>>>>>>>> ha_state'%u', error'%u', single_csi'%u'",
> >>>>>>>>>>>>>>>>> - msg.info.avd->msg_info.n2d_su_si_assign.msg_id,
> >>>>>>>>>>>>>>>>> msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.node_id,
> >>>>>>>>>>>>>>>>> - msg.info.avd->msg_info.n2d_su_si_assign.msg_act,
> >>>>>>>>>>>>>>>>> msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.su_name.value,
> >>>>>>>>>>>>>>>>> - msg.info.avd-
> >>> msg_info.n2d_su_si_assign.si_name.value,
> >>>>>>>>>>>>>>>>> msg.info.avd->msg_info.n2d_su_si_assign.ha_state,
> >>>>>>>>>>>>>>>>> - msg.info.avd->msg_info.n2d_su_si_assign.error,
> >>>>>>>>>>>>>>>>> msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.single_csi);
> >>>>>>>>>>>>>>>>> +    /* send the msg to AvD */
> >>>>>>>>>>>>>>>>> +    TRACE("Sending. msg_id'%u', node_id'%u',
> >>>>>>>>>>>>>>>>> + msg_act'%u', su'%s',
> >>>>>>>>>>>>>>>>> si'%s', ha_state'%u', error'%u', single_csi'%u'",
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> + msg.info.avd->msg_info.n2d_su_si_assign.msg_id,
> >>>>>>>>>>>>>>>>> msg.info.avd->msg_info.n2d_su_si_assign.node_id,
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> + msg.info.avd->msg_info.n2d_su_si_assign.msg_act,
> >>>>>>>>>>>>>>>>> msg.info.avd-
> >>> msg_info.n2d_su_si_assign.su_name.value,
> >>>>>>>>>>>>>>>>> + msg.info.avd-
> >>>>> msg_info.n2d_su_si_assign.si_name.value,
> >>>>>>>>>>>>>>>>> msg.info.avd->msg_info.n2d_su_si_assign.ha_state,
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> +msg.info.avd->msg_info.n2d_su_si_assign.error,
> >>>>>>>>>>>>>>>>> +msg.info.avd->msg_info.n2d_su_si_assign.single_csi);
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> -        if ((su->si_list.n_nodes > 1) && (si == nullptr)) {
> >>>>>>>>>>>>>>>>> -                if (msg.info.avd-
> >>>>>>> msg_info.n2d_su_si_assign.msg_act
> >>>>>>>> ==
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_DEL)
> >>>>>>>>>>>>>>>>> -                        LOG_NO("Removed 'all SIs' from 
> >>>>>>>>>>>>>>>>> '%s'",
> >>>>>>>>>>>>>>>>> su->name.value);
> >>>>>>>>>>>>>>>>> +    if ((su->si_list.n_nodes > 1) && (si == nullptr)) {
> >>>>>>>>>>>>>>>>> +        if
> >>>>>>>>>>>>>>>>> + (msg.info.avd->msg_info.n2d_su_si_assign.msg_act
> >>>>>>>>>>>>>>>>> + ==
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_DEL)
> >>>>>>>>>>>>>>>>> +            LOG_NO("Removed 'all SIs' from '%s'", su-
> >>>>>>>>>>>>>>>>>> name.value);
> >>>>>>>>>>>>>>>>> -                if (msg.info.avd-
> >>>>>>> msg_info.n2d_su_si_assign.msg_act
> >>>>>>>> ==
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_MOD)
> >>>>>>>>>>>>>>>>> -                        LOG_NO("Assigned 'all SIs' %s of 
> >>>>>>>>>>>>>>>>> '%s'",
> >>>>>>>>>>>>>>>>> -                               ha_state[msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.ha_state],
> >>>>>>>>>>>>>>>>> -                               su->name.value);
> >>>>>>>>>>>>>>>>> -        }
> >>>>>>>>>>>>>>>>> +        if
> >>>>>>>>>>>>>>>>> + (msg.info.avd->msg_info.n2d_su_si_assign.msg_act
> >>>>>>>>>>>>>>>>> + ==
> >>>>>>>>>>>>>>>>> AVSV_SUSI_ACT_MOD)
> >>>>>>>>>>>>>>>>> +            LOG_NO("Assigned 'all SIs' %s of '%s'",
> >>>>>>>>>>>>>>>>> +                    ha_state[msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.ha_state],
> >>>>>>>>>>>>>>>>> +                    su->name.value);
> >>>>>>>>>>>>>>>>> +    }
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> -        rc = avnd_di_msg_send(cb, &msg);
> >>>>>>>>>>>>>>>>> -        if (NCSCC_RC_SUCCESS == rc)
> >>>>>>>>>>>>>>>>> -                msg.info.avd = 0;
> >>>>>>>>>>>>>>>>> -
> >>>>>>>>>>>>>>>>> -        /* we have completed the SU SI msg processing */
> >>>>>>>>>>>>>>>>> -        if (su_assign_state_is_stable(su))
> >>>>>>>>>>>>>>>>> -                m_AVND_SU_ASSIGN_PEND_RESET(su);
> >>>>>>>>>>>>>>>>> -        m_AVND_SU_ALL_SI_RESET(su);
> >>>>>>>>>>>>>>>>> +    if (cb->is_avd_down == true) {
> >>>>>>>>>>>>>>>>> +        // We are in headless, buffer this msg
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> + msg.info.avd->msg_info.n2d_su_si_assign.msg_id
> >>>>>>>>>>>>>>>>> + =
> >>>> 0;
> >>>>>>>>>>>>>>>>> +        if (avnd_diq_rec_add(cb, &msg) == nullptr) {
> >>>>>>>>>>>>>>>>> +            rc = NCSCC_RC_FAILURE;
> >>>>>>>>>>>>>>>>> +        }
> >>>>>>>>>>>>>>>>> +        m_AVND_SU_ALL_SI_RESET(su);
> >>>>>>>>>>>>>>>>> +        LOG_NO("avnd_di_susi_resp_send() deferred as
> >>>>>>>>>>>>>>>>> + AMF
> >>>>>>>>>>>>>>>>> director is offline");
> >>>>>>>>>>>>>>>>> +    } else {
> >>>>>>>>>>>>>>>>> +        // We are in normal cluster, send msg to director
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> + msg.info.avd->msg_info.n2d_su_si_assign.msg_id
> >>>>>>>>>>>>>>>>> + =
> >>>>>>>>>>>>>>>>> + ++(cb-
> >>>>>>>>>>>>>>>>>> snd_msg_id);
> >>>>>>>>>>>>>>>>> +        /* send the msg to AvD */
> >>>>>>>>>>>>>>>>> +        rc = avnd_di_msg_send(cb, &msg);
> >>>>>>>>>>>>>>>>> +        if (NCSCC_RC_SUCCESS == rc)
> >>>>>>>>>>>>>>>>> +            msg.info.avd = 0;
> >>>>>>>>>>>>>>>>> +        /* we have completed the SU SI msg processing
> */
> >>>>>>>>>>>>>>>>> +        if (su_assign_state_is_stable(su)) {
> >>>>>>>>>>>>>>>>> +            m_AVND_SU_ASSIGN_PEND_RESET(su);
> >>>>>>>>>>>>>>>>> +        }
> >>>>>>>>>>>>>>>>> +        m_AVND_SU_ALL_SI_RESET(su);
> >>>>>>>>>>>>>>>>> +    }
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>            /* free the contents of avnd message */
> >>>>>>>>>>>>>>>>>            avnd_msg_content_free(cb, &msg); @@
> >>>>>>>>>>>>>>>>> -1256,14
> >>>>>>>>>>>>>>>>> +1263,7
> >>>>>>>>> @@
> >>>>>>>>>>>>> void
> >>>>>>>>>>>>>>>>> avnd_diq_rec_del(AVND_CB *cb, AVND_
> >>>>>>>>>>>>>>>>>            /* stop the AvD msg response timer */
> >>>>>>>>>>>>>>>>>            if (m_AVND_TMR_IS_ACTIVE(rec->resp_tmr)) {
> >>>>>>>>>>>>>>>>>                m_AVND_TMR_MSG_RESP_STOP(cb, *rec);
> >>>>>>>>>>>>>>>>> -        // Resend msgs from queue because amfd
> dropped
> >>>>> during
> >>>>>>>>>>>>>>>>> sync
> >>>>>>>>>>>>>>>>> -        if ((cb->dnd_list.head != nullptr)) {
> >>>>>>>>>>>>>>>>> -            TRACE("retransmit message to amfd");
> >>>>>>>>>>>>>>>>> -            AVND_DND_MSG_LIST *pending_rec = 0;
> >>>>>>>>>>>>>>>>> -            for (pending_rec = cb->dnd_list.head;
> pending_rec
> >>>> !=
> >>>>>>>>>>>>>>>>> nullptr; pending_rec = pending_rec->next) {
> >>>>>>>>>>>>>>>>> -                avnd_diq_rec_send(cb, pending_rec);
> >>>>>>>>>>>>>>>>> -            }
> >>>>>>>>>>>>>>>>> -        }
> >>>>>>>>>>>>>>>>> +        avnd_diq_rec_send_buffered_msg(cb);
> >>>>>>>>>>>>>>>>>                /* resend pg start track */
> >>>>>>>>>>>>>>>>>                avnd_di_resend_pg_start_track(cb);
> >>>>>>>>>>>>>>>>>            }
> >>>>>>>>>>>>>>>>> @@ -1276,6 +1276,73 @@ void
> >>>> avnd_diq_rec_del(AVND_CB
> >>>>>>>> *cb,
> >>>>>>>>>>>>>> AVND_
> >>>>>>>>>>>>>>>>>            TRACE_LEAVE();
> >>>>>>>>>>>>>>>>>            return;
> >>>>>>>>>>>>>>>>>        }
> >>>>>>>>>>>>>>>>>
> >>
> +/************************************************************
> >>>>>>>>>>>>>>>>> ****************
> >>>>>>>>>>>>>>>>> +  Name          : avnd_diq_rec_send_buffered_msg
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> +  Description   : Resend buffered msg
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> +  Arguments     : cb  - ptr to the AvND control block
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> +  Return Values : None.
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> +  Notes         : None.
> >>>>>>>>>>>>>>>>>
> >>
> +*************************************************************
> >>>>>>>>>>>>>>>>> **********
> >>>>>>>>>>>>>>>>> +*******/ void
> >>>> avnd_diq_rec_send_buffered_msg(AVND_CB
> >>>>>>>> *cb)
> >>>>>>>>> {
> >>>>>>>>>>>>>>>>> +    TRACE_ENTER();
> >>>>>>>>>>>>>>>>> +    // Resend msgs from queue because amfnd dropped
> >>>>>>>>>>>>>>>>> + during
> >>>>>>>>>>>>> headless
> >>>>>>>>>>>>>>>>> +    // or headless-synchronization
> >>>>>>>>>>>>>>>>> +    if ((cb->dnd_list.head != nullptr)) {
> >>>>>>>>>>>>>>>>> +        AVND_DND_MSG_LIST *pending_rec = 0;
> >>>>>>>>>>>>>>>>> +        TRACE("Attach msg_id of buffered msg");
> >>>>>>>>>>>>>>>>> +        bool found = true;
> >>>>>>>>>>>>>>>>> +        while (found) {
> >>>>>>>>>>>>>>>>> +            found = false;
> >>>>>>>>>>>>>>>>> +            for (pending_rec = cb->dnd_list.head;
> >>>>>>>>>>>>>>>>> + pending_rec !=
> >>>>>>>>>>>>>>>>> nullptr; pending_rec = pending_rec->next) {
> >>>>>>>>>>>>>>>>> +                if (pending_rec->msg.type ==
> >>>>>>>>>>>>>>>>> AVND_MSG_AVD) {
> >>>>>>>>>>>>>>>>> +                    // At this moment, only
> >>>>>>>>>>>>>>>>> + oper_state
> >>>>>>>>>>>>>>>>> msg needs to report to director
> >>>>>>>>>>>>>>>>> +                    if (pending_rec->msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_type == AVSV_N2D_INFO_SU_SI_ASSIGN_MSG
> &&
> >>>>>>>>>>>>>>>>> +                        pending_rec->msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.msg_id == 0) {
> >>>>>>>>>>>>>>>>> +                        m_AVND_DIQ_REC_POP(cb,
> >>>>>>>>>>>>>>>>> pending_rec); #if 0
> >>>>>>>>>>>>>>>>> +                        // only resend if this SUSI
> >>>>>>>>>>>>>>>>> does exist
> >>>>>>>>>>>>>>>>> +                        AVND_SU *su =
> >>>>>>>>>>>>>>>>> m_AVND_SUDB_REC_GET(cb->sudb,
> >>>>>>>>>>>>>>>>> +                                pending_rec-
> >>>>>>>>>>>>>>>>>> msg.info.avd->msg_info.n2d_su_si_assign.su_name);
> >>>>>>>>>>>>>>>>> +                        if (su != nullptr && su-
> >>>>>>>>>>>>>>>>>> si_list.n_nodes > 0) { #endif
> >>>>>>>>>>>>>>>>> +                            pending_rec-
> >>>>>>>>>>>>>>>>>> msg.info.avd->msg_info.n2d_su_si_assign.msg_id =
> >>>>>>>>>>>>>>>>>> ++(cb->snd_msg_id);
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>          m_AVND_DIQ_REC_PUSH(cb, pending_rec);
> >>>>>>>>>>>>>>>>> +                            LOG_NO("Found and
> >>>>>>>>>>>>>>>>> resend buffered su_si_assign msg for SU:'%s', "
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>          "SI:'%s', ha_state:'%u', msg_act:'%u',
> >>>>>>>>>>>>>>>>> single_csi:'%u',
> >> "
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>          "error:'%u', msg_id:'%u'",
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>          pending_rec->msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.su_name.value,
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>          pending_rec->msg.info.avd-
> >>>>>>>>>>>>>>>>>> msg_info.n2d_su_si_assign.si_name.value,
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> pending_rec->msg.info.avd-
> >>>>>>>>>> msg_info.n2d_su_si_assign.ha_state,
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> pending_rec->msg.info.avd-
> >>>>>>>>> msg_info.n2d_su_si_assign.msg_act,
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> pending_rec->msg.info.avd-
> >>>>>>>>>> msg_info.n2d_su_si_assign.single_csi
> >>>>>>>>>>>>>>>>> ,
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> pending_rec->msg.info.avd-
> >>>>>>> msg_info.n2d_su_si_assign.error,
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> pending_rec->msg.info.avd-
> >>>>>>>>> msg_info.n2d_su_si_assign.msg_id);
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>> +#if 0
> >>>>>>>>>>>>>>>>> +                        } else {
> >>>>>>>>>>>>>>>>> +
> >>>>>>>>>>>>>>>>>          avnd_msg_content_free(cb, &pending_rec->msg);
> >>>>>>>>>>>>>>>>> +                            delete pending_rec;
> >>>>>>>>>>>>>>>>> +                            pending_rec = cb-
> >>>>>>>>>>>>>>>>>> dnd_list.head;
> >>>>>>>>>>>>>>>>> +                        } #endif
> >>>>>>>>>>>>>>>>> +                        found = true;
> >>>>>>>>>>>>>>>>> +                    }
> >>>>>>>>>>>>>>>>> +                }
> >>>>>>>>>>>>>>>>> +            }
> >>>>>>>>>>>>>>>>> +        }
> >>>>>>>>>>>>>>>>> +        TRACE("retransmit message to amfd");
> >>>>>>>>>>>>>>>>> +         for (pending_rec = cb->dnd_list.head;
> >>>>>>>>>>>>>>>>> +pending_rec != nullptr;
> >>>>>>>>>>>>>>>>> pending_rec = pending_rec->next) {
> >>>>>>>>>>>>>>>>> +             avnd_diq_rec_send(cb, pending_rec);
> >>>>>>>>>>>>>>>>> +         }
> >>>>>>>>>>>>>>>>> +    }
> >>>>>>>>>>>>>>>>> +    TRACE_LEAVE();
> >>>>>>>>>>>>>>>>> +    return;
> >>>>>>>>>>>>>>>>> +}
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>
> /*************************************************************
> >>>>>>>>>>>>>>>>> ***************
> >>>>>>>>>>>>>>>>>          Name          : avnd_diq_rec_send
> >>>>>>>>>>>>>>>>> diff --git
> >>>>>>>>>>>>>>>>> a/osaf/services/saf/amf/amfnd/include/avnd_di.h
> >>>>>>>>>>>>>>>>> b/osaf/services/saf/amf/amfnd/include/avnd_di.h
> >>>>>>>>>>>>>>>>> --- a/osaf/services/saf/amf/amfnd/include/avnd_di.h
> >>>>>>>>>>>>>>>>> +++ b/osaf/services/saf/amf/amfnd/include/avnd_di.h
> >>>>>>>>>>>>>>>>> @@ -79,6 +79,7 @@ void
> >>>> avnd_di_msg_ack_process(struct
> >>>>>>>> avnd
> >>>>>>>>>>> void
> >>>>>>>>>>>>>>>>> avnd_diq_del(struct avnd_cb_tag *);
> >>>> AVND_DND_MSG_LIST
> >>>>>>>>>>>>>>>>> *avnd_diq_rec_add(struct avnd_cb_tag *cb,
> AVND_MSG
> >>>>>> *msg);
> >>>>>>>>> void
> >>>>>>>>>>>>>>>>> avnd_diq_rec_del(struct avnd_cb_tag *cb,
> >>>>>>>> AVND_DND_MSG_LIST
> >>>>>>>>>>>>> *rec);
> >>>>>>>>>>>>>>>>> +void avnd_diq_rec_send_buffered_msg(struct
> >>>> avnd_cb_tag
> >>>>>>>> *cb);
> >>>>>>>>>>>>>>>>>        uint32_t avnd_diq_rec_send(struct avnd_cb_tag
> >>>>>>>>>>>>>>>>> *cb, AVND_DND_MSG_LIST *rec);  uint32_t
> >>>>>>>>>>> avnd_di_reg_su_rsp_snd(struct
> >>>>>>>>>>>>>>>>> avnd_cb_tag *cb, SaNameT *su_name, uint32_t
> >> ret_code);
> >>>>>>>>>>>>>>>>> uint32_t avnd_di_ack_nack_msg_send(struct
> >> avnd_cb_tag
> >>>>>> *cb,
> >>>>>>>>>>>>>>>>> uint32_t rcv_id, uint32_t view_num);
> >>>>>>>>>>>>> ----------------------------------------------------------
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> -
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> ---------
> >>>> _______________________________________________
> >>>>>>>>>>>>> Opensaf-devel mailing list
> >>>>>>>>>>>>> Opensaf-devel@lists.sourceforge.net
> >>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
> >>>>>>>> ---------------------------------------------------------------
> >>>>>>>> --
> >>>>>>>> --
> >>>>>>>> --
> >>>>>>>> --------- _______________________________________________
> >>>>>>>> Opensaf-devel mailing list
> >>>>>>>> Opensaf-devel@lists.sourceforge.net
> >>>>>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
> >>>>> ------------------------------------------------------------------
> >>>>> --
> >>>>> --
> >>>>> -------- _______________________________________________
> >>>>> Opensaf-devel mailing list
> >>>>> Opensaf-devel@lists.sourceforge.net
> >>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
> >>>> -------------------------------------------------------------------
> >>>> --
> >>>> --------- 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
> >>
> >
> 
> 

------------------------------------------------------------------------------
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to