Hi Praveen
If an amfd is available before MDS timer expires, we get NCSMDS_NEW_ACTIVE.
That is the part I am changing.
The current code is:
if (evt->info.mds.i_change == NCSMDS_NEW_ACTIVE &&
cb->is_avd_down) {
if (cb->led_state == AVND_LED_STATE_GREEN) {
LOG_NO("Sending node up due to
NCSMDS_NEW_ACTIVE");
// node_up, sync sisu, compcsi info to AVND for
recovery
avnd_sync_sisu(cb);
avnd_sync_csicomp(cb);
avnd_send_node_up_msg();
}
}
The proposed code is:
if (evt->info.mds.i_change == NCSMDS_NEW_ACTIVE &&
cb->is_avd_down) {
if (cb->led_state == AVND_LED_STATE_GREEN) {
// node_up, sync sisu, compcsi info to AVND for
recovery
avnd_sync_sisu(cb);
avnd_sync_csicomp(cb);
}
LOG_NO("Sending node up due to NCSMDS_NEW_ACTIVE");
avnd_send_node_up_msg();
}
The behaviour for recovering from headless is the same as before. led_state
will be green, so amfnd will send sisu / csicomp messages.
The failover behaviour is also the same, as is_avd_down will be false, so the
block of the code never runs in the old or new code.
I’m jmaking it also send node_up when led_state is red.
The scenario I’m trying to fix occurred on SC-2 during cluster startup:
- amfd on SC-1 starts
- amfnd on SC-2 receives NCSMDS_UP
- amfd on SC-1 amfd suddenly restarts (so quickly there is no failover)
- amfnd on SC-2 receives NCSMDS_NEW_ACTIVE, but because led_state is red, it
doesn’t send node_up and the startup sequence stops entirely.
Thanks
Gary
> On 14 Nov. 2016, at 10:25 pm, praveen malviya <[email protected]>
> wrote:
>
>
>
> On 14-Nov-16 4:00 PM, Gary Lee wrote:
>> I just moved avnd_send_node_up_msg() outside the if block. The compsci
>> and susi messages are sent in the same conditions as before?
> But when that if condition will hit. After headless state when first
> controller comes up within MDS timer limit we Will get avd_up and we are
> sending only MDS_UP event (If condition is not hit). So now we will not get
> again node_up for same AVD? So how this AMFND will send sync information.
>
> Thanks,
> Praveen
>>
>> Quoting praveen malviya <[email protected]>:
>>
>>> But still when AMFND will send the sync information to AMFD with this
>>> patch?
>>> Those are generally the first messages and they are still in that if
>>> block. Am I missing something?
>>>
>>> Thanks,
>>> Praveen
>>>
>>> On 14-Nov-16 2:26 PM, Gary Lee wrote:
>>>> Hi Praveen
>>>>
>>>> I think it’s unlikely there is a set_leds in the queue. That would
>>>> have been sent from the ‘old’ amfd, before the ‘new’ amfd sends
>>>> node_up. So the set_leds would likely have been processed first.
>>>>
>>>> The patch is just making the behaviour the same as receiving NCSMDS_UP.
>>>>
>>>> Thanks
>>>> Gary
>>>>
>>>>> On 14 Nov. 2016, at 5:48 pm, praveen malviya
>>>>> <[email protected]> wrote:
>>>>>
>>>>> Hi Gary,
>>>>>
>>>>> The reason for asking: patch is sending NODE UP event without
>>>>> sending sync information for COMPCSI and SUSI. AVD_UP event for both
>>>>> adest and vdest comes almost simultaneously. So this function will
>>>>> not get triggerd and this AMFND will remain never be able to sync
>>>>> its compcsi and susi.
>>>>>
>>>>> Thanks,
>>>>> Praveen
>>>>>
>>>>> On 14-Nov-16 11:44 AM, Gary Lee wrote:
>>>>>> Hi Praveen
>>>>>>
>>>>>> I don’t have traces - both that is a possibility. If it is in the
>>>>>> mailbox, amfnd will still be stuck unless an amfd switchover occurs.
>>>>>>
>>>>>> Thanks
>>>>>> Gary
>>>>>>
>>>>>>> On 14 Nov. 2016, at 4:35 pm, praveen malviya
>>>>>>> <[email protected]> wrote:
>>>>>>>
>>>>>>> Hi Gary,
>>>>>>>
>>>>>>> One quick question: Is this that case when AMFD restarted before
>>>>>>> sending set_led to AMFND? I just want to know Is there any
>>>>>>> possibility that set_led message is present in AMFND mail box.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Praveen
>>>>>>>
>>>>>>> On 11-Nov-16 11:16 AM, Gary Lee wrote:
>>>>>>>> osaf/services/saf/amf/amfnd/di.cc | 5 ++---
>>>>>>>> 1 files changed, 2 insertions(+), 3 deletions(-)
>>>>>>>>
>>>>>>>>
>>>>>>>> if amfd restarts before set_leds is received by amfnd, then
>>>>>>>> amfnd will not send node_up. amfnd should send node_up
>>>>>>>> even if led state is not green.
>>>>>>>>
>>>>>>>> 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
>>>>>>>> @@ -562,13 +562,12 @@ uint32_t avnd_evt_mds_avd_up_evh(AVND_CB
>>>>>>>> */
>>>>>>>> if (evt->info.mds.i_change == NCSMDS_NEW_ACTIVE &&
>>>>>>>> cb->is_avd_down) {
>>>>>>>> if (cb->led_state == AVND_LED_STATE_GREEN) {
>>>>>>>> - LOG_NO("Sending node up due to NCSMDS_NEW_ACTIVE");
>>>>>>>> -
>>>>>>>> // node_up, sync sisu, compcsi info to AVND for
>>>>>>>> recovery
>>>>>>>> avnd_sync_sisu(cb);
>>>>>>>> avnd_sync_csicomp(cb);
>>>>>>>> - avnd_send_node_up_msg();
>>>>>>>> }
>>>>>>>> + LOG_NO("Sending node up due to NCSMDS_NEW_ACTIVE");
>>>>>>>> + avnd_send_node_up_msg();
>>>>>>>> }
>>>>>>>> cb->is_avd_down = false;
>>>>>>>> }
>>>>>>>>
>>>>>>
>>>>
>>
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel