Hi Neel,

I included your comment when pushing.

Thanks,

Hung Nguyen - DEK Technologies


--------------------------------------------------------------------------------
From: Neelakanta Reddy [email protected]
Sent: Monday, March 21, 2016 6:09PM
To: Hung Nguyen, Zoran Milinkovic
     [email protected], [email protected]
Cc: Opensaf-devel
     [email protected]
Subject: Re: [PATCH 1 of 1] imm: Wait for veterans when IMMD starts [#1698]


Hi Hung,

Yes, the scenario explained in the ticket may happen.
Reviewed and tested the patch.
Ack.

minor comment below.

Thanks,
Neel.

On Monday 21 March 2016 03:30 PM, Hung Nguyen wrote:
> Hi Neel,
>
> The newly joined IMMND is not from the SC, it's from a PL.
> Please check the ticket description again.
> I attached the log there.
>
> BR,
>
> Hung Nguyen - DEK Technologies
>
>
> --------------------------------------------------------------------------------
>  
>
> From: Neelakanta Reddy [email protected]
> Sent: Monday, March 21, 2016 4:52PM
> To: Hung Nguyen, Zoran Milinkovic
>     [email protected], [email protected]
> Cc: Opensaf-devel
>     [email protected]
> Subject: Re: [PATCH 1 of 1] imm: Wait for veterans when IMMD starts 
> [#1698]
>
>
> Hi Hung,
>
> comments inline.
>
> On Monday 21 March 2016 02:22 PM, Hung Nguyen wrote:
>> Hi Neel,
>>
>> Without increasing the priority for intro message from veteran nodes, 
>> we can't fix the problem reported in the ticket.
>>
> sleeping for 3 seconds, after immd_initialize.  By this time the 
> veteran IMMND will send INTRO to IMMD.
>> The sleep is required for the intro messages from IMMNDs to reach IMMD.
>>
>> But we still can't make sure that IMMD will process intro message 
>> from veteran first.
>> That's why we need to increase the priority of intro message from 
>> veteran.
>>
> local IMMND starts only after the 3 seconds, by this time veteran 
> IMMND INTRO should have reached IMMD.
> sleep for 3 seconds should be more than enough to reach IMMD.
> If still the INTRO message is not reached then there is a problem 
> either in Transport/node.
>
> Regards,
> Neel.
>
>>
>> BR,
>>
>> Hung Nguyen - DEK Technologies
>>
>>
>> --------------------------------------------------------------------------------
>>  
>>
>> From: Neelakanta Reddy [email protected]
>> Sent: Monday, March 21, 2016 3:38PM
>> To: Hung Nguyen, Zoran Milinkovic
>>     [email protected], [email protected]
>> Cc: Opensaf-devel
>>     [email protected]
>> Subject: Re: [PATCH 1 of 1] imm: Wait for veterans when IMMD starts 
>> [#1698]
>>
>>
>> Hi Hung,
>>
>> Ok, then the patch should be sleep for 3 seconds after immd_initialize.
>> Sleeping for 3 seconds, is more and increase the priority of posting 
>> to local mail box may not be required.
>> Please, republish the patch.
>>
>> Thanks,
>> Neel.
>>
>>
>> On Monday 21 March 2016 02:02 PM, Hung Nguyen wrote:
>>> Hi Neel,
>>>
>>> I think that sleep should be after MDS initialization.
>>> The log says that wait for mds attachements, how can we wait without 
>>> MDS initialized.
>>>
>>>
>>> BR,
>>>
>>> Hung Nguyen - DEK Technologies
>>>
>>>
>>> --------------------------------------------------------------------------------
>>>  
>>>
>>> From: Neelakanta Reddy [email protected]
>>> Sent: Monday, March 21, 2016 3:23PM
>>> To: Hung Nguyen, Zoran Milinkovic
>>>     [email protected], [email protected]
>>> Cc: Opensaf-devel
>>>     [email protected]
>>> Subject: Re: [PATCH 1 of 1] imm: Wait for veterans when IMMD starts 
>>> [#1698]
>>>
>>>
>>> Hi Hung,
>>>
>>> There is no much  significance of sleeping before immd_initialize
>>>
>>> LOG_NO("Waiting 3 seconds to allow IMMND MDS attachments to get 
>>> processed.");
>>>                 sleep(3);
>>>
>>> The above  sleep should be after immd_initialize?
>>>
>>> Regards,
>>> Neel.
>>>
>>> On Monday 21 March 2016 01:09 PM, Hung Nguyen wrote:
>>>> Hi Neel,
>>>>
>>>> The current code has 3 second sleep before initializing MDS.
>>>> The change the patch makes is to wait (not sleep) for veteran PL 
>>>> after initializing MDS.
>>>>
>>>> The priority is to make sure that IMMD will process intro message 
>>>> from veteran PL before intro message from newly-joined nodes.
>>>> Otherwise IMMND on newly-joined node will crash, please see ticket 
>>>> description for details.
>>>>
>>>> BR,
>>>>
>>>> Hung Nguyen - DEK Technologies
>>>>
>>>>
>>>> --------------------------------------------------------------------------------
>>>>  
>>>>
>>>> From: Neelakanta Reddy [email protected]
>>>> Sent: Monday, March 21, 2016 2:03PM
>>>> To: Hung Nguyen, Zoran Milinkovic
>>>>     [email protected], [email protected]
>>>> Cc: Opensaf-devel
>>>>     [email protected]
>>>> Subject: Re: [PATCH 1 of 1] imm: Wait for veterans when IMMD starts 
>>>> [#1698]
>>>>
>>>>
>>>> Hi Hung,
>>>>
>>>> The present code already has 3seconds delay.
>>>> Published patch, also sleeps for same 3 seconds.
>>>> If the veteran IMMD can not send the INTRO event for 3 seconds , 
>>>> then there is some problem with the system.
>>>> waiting for 3 seconds is a long wait to send intro.  the priority 
>>>> part also may not be required.
>>>>
>>>> Thanks,
>>>> Neel.
>>>>
>>>> On Thursday 10 March 2016 12:56 PM, Hung Nguyen wrote:
>>>>> osaf/services/saf/immsv/immd/immd_cb.h |   3 ++
>>>>>   osaf/services/saf/immsv/immd/immd_main.c |  36 
>>>>> ++++++++++++++++++++++++++++---
>>>>>   osaf/services/saf/immsv/immd/immd_mds.c  |  20 ++++++++++++++++-
>>>>>   3 files changed, 53 insertions(+), 6 deletions(-)
>>>>>
>>>>>
>>>>> IMMD will wait for intro message from veterans and give up after 3 
>>>>> seconds if can't find any veteran.
>>>>>
>>>>> This patch also improves the startup time of IMMD.
>>>>> IMMD will not always 'sleep' for 3 seconds. It will just wait 
>>>>> until a veteran attaches.
>>>>> Also the standby IMMD will not have any delay in startup process.
>>>>>
>>>>> diff --git a/osaf/services/saf/immsv/immd/immd_cb.h 
>>>>> b/osaf/services/saf/immsv/immd/immd_cb.h
>>>>> --- a/osaf/services/saf/immsv/immd/immd_cb.h
>>>>> +++ b/osaf/services/saf/immsv/immd/immd_cb.h
>>>>> @@ -141,6 +141,9 @@ typedef struct immd_cb_tag {
>>>>>       SaUint16T mScAbsenceAllowed; /* Non zero if SC absence is 
>>>>> allowed (loss of both IMMDs/SCs).
>>>>>                          Value is number of seconds of SC absence 
>>>>> tolerated. */
>>>>>       MDS_DEST payload_coord_dest; /* IMMND coord may be at 
>>>>> payload if mScAbsenceAllowed is nonzero */
>>>>> +
>>>>> +    NCS_LOCK veteran_sync_lock;   /* Sync up with veteran payload 
>>>>> after headless */
>>>>> +    NCS_SEL_OBJ veteran_sync_sel; /* Sync up with veteran payload 
>>>>> after headless */
>>>>>   } IMMD_CB;
>>>>>     uint32_t immd_immnd_info_tree_init(IMMD_CB *cb);
>>>>> diff --git a/osaf/services/saf/immsv/immd/immd_main.c 
>>>>> b/osaf/services/saf/immsv/immd/immd_main.c
>>>>> --- a/osaf/services/saf/immsv/immd/immd_main.c
>>>>> +++ b/osaf/services/saf/immsv/immd/immd_main.c
>>>>> @@ -33,6 +33,7 @@
>>>>>   #include <rda_papi.h>
>>>>>   #include <daemon.h>
>>>>>   #include <nid_api.h>
>>>>> +#include "osaf_poll.h"
>>>>>     #include "immd.h"
>>>>>   #include <immd_proc.h>
>>>>> @@ -257,10 +258,16 @@ int main(int argc, char *argv[])
>>>>>       }
>>>>>         if(scAbsenceAllowed) {
>>>>> -        LOG_NO("******* SC_ABSENCE_ALLOWED (Headless Hydra) is 
>>>>> configured: %u ***********",
>>>>> -            scAbsenceAllowed);
>>>>> -        LOG_NO("Waiting 3 seconds to allow IMMND MDS attachments 
>>>>> to get processed.");
>>>>> -        sleep(3);
>>>>> +        /* Create the sel-obj before initializing MDS.
>>>>> +         * This way, we can avoid an extra 'veteran_sync_awaited' 
>>>>> variable in IMMD_CB */
>>>>> +        if (m_NCS_LOCK_INIT(&immd_cb->veteran_sync_lock) != 
>>>>> NCSCC_RC_SUCCESS) {
>>>>> +            LOG_ER("Failed to get veteran_sync_lock lock");
>>>>> +            goto done;
>>>>> +        }
>>>>> +        if (m_NCS_SEL_OBJ_CREATE(&immd_cb->veteran_sync_sel)!= 
>>>>> NCSCC_RC_SUCCESS) {
>>>>> +            LOG_ER("Failed to create veteran_sync_sel sel_obj");
>>>>> +            goto done;
>>>>> +        }
>>>>>       }
>>>>>         immd_cb->mScAbsenceAllowed = scAbsenceAllowed;
>>>>> @@ -270,6 +277,27 @@ int main(int argc, char *argv[])
>>>>>           goto done;
>>>>>       }
>>>>>   +    if(scAbsenceAllowed) {
>>>>> +        LOG_NO("******* SC_ABSENCE_ALLOWED (Headless Hydra) is 
>>>>> configured: %u ***********",
>>>>> +            scAbsenceAllowed);
>>>>> +
>>>>> +        /* If this IMMD has active role, wait for veteran payloads.
>>>>> +         * Give up after 3 seconds if there's no veteran payload. */
>>>>> +        if (immd_cb->ha_state == SA_AMF_HA_ACTIVE) {
>>>>> +            LOG_NO("Waiting 3 seconds to allow IMMND MDS 
>>>>> attachments to get processed.");
>>>>> +
>>>>> +            if 
>>>>> (osaf_poll_one_fd(m_GET_FD_FROM_SEL_OBJ(immd_cb->veteran_sync_sel), 3000) 
>>>>> != 1) {
>>>>> +                TRACE("osaf_poll_one_fd on veteran_sync_sel 
>>>>> failed or timed out");
>>>>> +            } else {
>>>>> +                TRACE("osaf_poll_one_fd on veteran_sync_sel 
>>>>> succeeded");

The above trace should be NOTICE, because in previous notice says there 
is a wait for 3 seconds,
if the veteran is found it will come immediately.

>>>>> +            }
>>>>> +        }
>>>>> +
>>>>> + m_NCS_LOCK(&immd_cb->veteran_sync_lock,NCS_LOCK_WRITE);
>>>>> + m_NCS_SEL_OBJ_DESTROY(&immd_cb->veteran_sync_sel);
>>>>> + m_NCS_UNLOCK(&immd_cb->veteran_sync_lock,NCS_LOCK_WRITE);
>>>>> +    }
>>>>> +
>>>>>       daemon_sigterm_install(&term_fd);
>>>>>         /* Get file descriptor for mailbox */
>>>>> diff --git a/osaf/services/saf/immsv/immd/immd_mds.c 
>>>>> b/osaf/services/saf/immsv/immd/immd_mds.c
>>>>> --- a/osaf/services/saf/immsv/immd/immd_mds.c
>>>>> +++ b/osaf/services/saf/immsv/immd/immd_mds.c
>>>>> @@ -489,6 +489,7 @@ static uint32_t immd_mds_rcv(IMMD_CB *cb
>>>>>   {
>>>>>       uint32_t rc = NCSCC_RC_SUCCESS;
>>>>>       IMMSV_EVT *pEvt = (IMMSV_EVT *)rcv_info->i_msg;
>>>>> +    NCS_IPC_PRIORITY prio = NCS_IPC_PRIORITY_NORMAL;
>>>>>         pEvt->sinfo.ctxt = rcv_info->i_msg_ctxt;
>>>>>       pEvt->sinfo.dest = rcv_info->i_fr_dest;
>>>>> @@ -497,8 +498,23 @@ static uint32_t immd_mds_rcv(IMMD_CB *cb
>>>>>           pEvt->sinfo.stype = MDS_SENDTYPE_RSP;
>>>>>       }
>>>>>   +    /* Set priority of intro messages from veteran payloads to 
>>>>> PRIORITY_HIGH.
>>>>> +     * IMMD will process them before the intro messages from 
>>>>> other IMMNDs. */
>>>>> +    if (cb->mScAbsenceAllowed &&
>>>>> +            pEvt->info.immd.type == IMMD_EVT_ND2D_INTRO &&
>>>>> +            pEvt->info.immd.info.ctrl_msg.refresh == 2) {
>>>>> +
>>>>> +        prio = NCS_IPC_PRIORITY_HIGH;
>>>>> +
>>>>> + m_NCS_LOCK(&immd_cb->veteran_sync_lock,NCS_LOCK_WRITE);
>>>>> +        if (cb->veteran_sync_sel.raise_obj != -1) { /* Check if 
>>>>> the sel_obj is not destroyed */
>>>>> + m_NCS_SEL_OBJ_IND(&cb->veteran_sync_sel);
>>>>> +        }
>>>>> + m_NCS_UNLOCK(&immd_cb->veteran_sync_lock,NCS_LOCK_WRITE);
>>>>> +    }
>>>>> +
>>>>>       /* Put it in IMMD's Event Queue */
>>>>> -    rc = m_NCS_IPC_SEND(&cb->mbx, (NCSCONTEXT)pEvt, 
>>>>> NCS_IPC_PRIORITY_NORMAL);
>>>>> +    rc = m_NCS_IPC_SEND(&cb->mbx, (NCSCONTEXT)pEvt, prio);
>>>>>       if (NCSCC_RC_SUCCESS != rc) {
>>>>>           LOG_WA("IMMD - IPC SEND FAILED");
>>>>>       }
>>>>> @@ -542,7 +558,7 @@ static uint32_t immd_mds_svc_evt(IMMD_CB
>>>>>       evt->info.immd.info.mds_info.node_id = svc_evt->i_node_id;
>>>>>         /* Put it in IMMD's Event Queue */
>>>>> -    rc = m_NCS_IPC_SEND(&cb->mbx, (NCSCONTEXT)evt, 
>>>>> NCS_IPC_PRIORITY_HIGH);
>>>>> +    rc = m_NCS_IPC_SEND(&cb->mbx, (NCSCONTEXT)evt, 
>>>>> NCS_IPC_PRIORITY_VERY_HIGH);
>>>>>       if (NCSCC_RC_SUCCESS != rc) {
>>>>>           LOG_WA("IMMD - IPC SEND FAILED");
>>>>>           free(evt);
>>>>
>>>>
>>>
>>>
>>
>>
>
>



------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to