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
