OK thanks for the explanation. I trust you on this!
I leave it to Neel to review then.
/Hans

> -----Original Message-----
> From: Anders Björnerstedt
> Sent: den 28 november 2013 08:28
> To: Hans Feldt; reddy.neelaka...@oracle.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: RE: [PATCH 1 of 1] IMMND replies BAD_HANDLE if client node is 
> missing for non fevs request [#637]
> 
> This is explained in the commit message of the changeset.
> The function  immnd_evt_proc_rt_object_create is a fevs receiver function,
> i.e. The message is received from the IMMD not the originating client which
> is only local to one of the IMMNDs receiving the message.
> 
> But that rt-object-create, that you are worried about, initially arrives from
> the client (AMFD in this case) as an invoke of immnd_evt_proc_fevs_forward at
> the local IMMND. And if you look into the code, it already catches the missing
> Client case and handles it correctly.
> 
> But should the client node dissapear at the local IMMND after 
> immnd_evt_proc_fevs_forward
> has been successfully processed (the client node existed at the local IMMND 
> at that time,
> But dissapeared after the fevs message was forwarded to the IMMD) then when 
> the fevs message
> (the rt-object-create in this case) arrives back to the IMMNDs, including the 
> originating
> IMMND, then that IMMND can not send any BAD_HANDLE to the client if the 
> client node is gone,
> Because that cliend-node was the only heap structure available having the 
> clients respose
> address.
> 
> 
> /AndersBj
> 
> -----Original Message-----
> From: Hans Feldt
> Sent: den 27 november 2013 15:53
> To: Anders Björnerstedt; reddy.neelaka...@oracle.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: RE: [PATCH 1 of 1] IMMND replies BAD_HANDLE if client node is 
> missing for non fevs request [#637]
> 
> Hi,
> 
> A question, I can see the log message " Client %llu went down so no response 
> " in many places in immnd. The patch only changes four
> locations. What about for example immnd_evt_proc_rt_object_create?
> 
> Thanks,
> Hans
> 
> > -----Original Message-----
> > From: Anders Björnerstedt
> > Sent: den 27 november 2013 15:06
> > To: reddy.neelaka...@oracle.com; Hans Feldt
> > Cc: opensaf-devel@lists.sourceforge.net
> > Subject: [PATCH 1 of 1] IMMND replies BAD_HANDLE if client node is
> > missing for non fevs request [#637]
> >
> >  osaf/services/saf/immsv/immnd/immnd_evt.c |  22
> > ++++++++++++----------
> >  1 files changed, 12 insertions(+), 10 deletions(-)
> >
> >
> > For non fevs requests, if the local IMMND can not find the client node
> > corresponding to the imm-handle sent by the client, then the local
> > IMMND replies directly with SA_AIS_ERR_BAD_HANDLE, instead of just
> > dropping the request and causing client to timeout.
> >
> > This short circuited behavior is not possible for fevs requests,
> > because such requests are forwarded to the IMMD and broadcast back to
> > all IMMNDs including the originating node. The originating node's
> > IMMND then no longer has the reply information on the stack. It
> > expects to find it in the client node on the heap. If the client node
> > does not exist, then no reply, not even ERR_BAD_HANDLE, can be sent to the 
> > client of that fevs request.
> >
> > diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c
> > b/osaf/services/saf/immsv/immnd/immnd_evt.c
> > --- a/osaf/services/saf/immsv/immnd/immnd_evt.c
> > +++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
> > @@ -1913,8 +1913,9 @@ static uint32_t immnd_evt_proc_admowner_
> >     client_hdl = evt->info.adminitReq.client_hdl;
> >     immnd_client_node_get(cb, client_hdl, &cl_node);
> >     if (cl_node == NULL || cl_node->mIsStale) {
> > -           LOG_WA("IMMND - Client %llu went down so no response", 
> > client_hdl);
> > -           return rc;
> > +           LOG_WA("ERR_BAD_HANDLE: Client not found in server");
> > +           send_evt.info.imma.info.admInitRsp.error = 
> > SA_AIS_ERR_BAD_HANDLE;
> > +           goto agent_rsp;
> >     }
> >
> >     if (!immnd_is_immd_up(cb)) {
> > @@ -2018,8 +2019,9 @@ static uint32_t immnd_evt_proc_impl_set(
> >     client_hdl = evt->info.implSet.client_hdl;
> >     immnd_client_node_get(cb, client_hdl, &cl_node);
> >     if (cl_node == NULL || cl_node->mIsStale) {
> > -           LOG_WA("IMMND - Client went down so no response");
> > -           return rc;
> > +           LOG_WA("ERR_BAD_HANDLE: Client not found in server");
> > +           send_evt.info.imma.info.implSetRsp.error = 
> > SA_AIS_ERR_BAD_HANDLE;
> > +           goto agent_rsp;
> >     }
> >
> >     if (!immnd_is_immd_up(cb)) {
> > @@ -2141,9 +2143,9 @@ static uint32_t immnd_evt_proc_ccb_init(
> >     client_hdl = evt->info.ccbinitReq.client_hdl;
> >     immnd_client_node_get(cb, client_hdl, &cl_node);
> >     if (cl_node == NULL || cl_node->mIsStale) {
> > -           LOG_WA("IMMND - Client went down so no response");
> > -           TRACE_LEAVE();
> > -           return rc;
> > +           LOG_WA("ERR_BAD_HANDLE: Client not found in server");
> > +           send_evt.info.imma.info.ccbInitRsp.error = 
> > SA_AIS_ERR_BAD_HANDLE;
> > +           goto agent_rsp;
> >     }
> >
> >     if (!immnd_is_immd_up(cb)) {
> > @@ -2256,9 +2258,9 @@ static uint32_t immnd_evt_proc_rt_update
> >     client_hdl = evt->info.objModify.immHandle;
> >     immnd_client_node_get(cb, client_hdl, &cl_node);
> >     if (cl_node == NULL || cl_node->mIsStale) {
> > -           LOG_WA("IMMND - Client went down so no response");
> > -           TRACE_LEAVE();
> > -           return rc;
> > +           LOG_WA("ERR_BAD_HANDLE: Client not found in server");
> > +           err = SA_AIS_ERR_BAD_HANDLE;
> > +           goto agent_rsp;
> >     }
> >
> >     /* Do broadcast checks BEFORE updating model because we dont want

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to