Good point.
Will add the handle value to the log printout.

Then push the updated patch.

/AndersBj 

-----Original Message-----
From: Neelakanta Reddy [mailto:reddy.neelaka...@oracle.com] 
Sent: den 29 november 2013 13:27
To: Anders Björnerstedt; Hans Feldt
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,

Reviewed the patch.Not able to reproduce the problem.
Ack.

Minor comment:

For each warning/Error for "IMMND - Client went down so no response" in 
immnd_evt.c, printing of client_handle along with error/warning message will 
provide information on which handle went down.

/Neel.

On Wednesday 27 November 2013 07:36 PM, Anders Bjornerstedt wrote:
>   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