Hi Nguyen,

Thanks for ack.
I use that comment because it's short and opposite with comment before posting 
evt.

/* Increment the cbk count.*/
hdl_list->cnt++;
rc = m_NCS_IPC_SEND(
...
/* Descrease the cbk count */
smfa_cbk_ok_resp_process()

Also, decrease cbk count is mandatory but release resource is only if count == 
0.

Best Regards,
Thuan

-----Original Message-----
From: Nguyen Luu <nguyen.tk....@dektech.com.au> 
Sent: Tuesday, July 17, 2018 11:44 AM
To: thuan.tran <thuan.t...@dektech.com.au>; nagen...@hasolutions.in; 
lennart.l...@ericsson.com; gary....@dektech.com.au
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [PATCH 1/1] smf: Increase cbk count before post the evt to client 
[#2882]

Hi Thuan,

Ack from me.

Just a suggestion for more correct comment (in case there's only one handle 
matching the callback label):

/* Descrease the cbk count */ => /* Remove the agent hdl from the cbk_list */

Thanks,
Nguyen

On 7/13/2018 10:52 AM, thuan.tran wrote:
> Sometimes, callback agent dispatch and fail at saSmfReponse() because 
> cbk list is empty, agent by somehow handle evt before increase cbk 
> count. To avoid this, increase cbk count before post the evt.
> ---
>   src/smf/agent/smfa_utils.c | 40 +++++++++++++++++++++-----------------
>   1 file changed, 22 insertions(+), 18 deletions(-)
>
> diff --git a/src/smf/agent/smfa_utils.c b/src/smf/agent/smfa_utils.c 
> index fb31a9ae1..3436785cd 100644
> --- a/src/smf/agent/smfa_utils.c
> +++ b/src/smf/agent/smfa_utils.c
> @@ -615,8 +615,8 @@ SMFA_CBK_HDL_LIST *smfa_inv_hdl_add(SaInvocationT inv_id, 
> SaSmfHandleT hdl)
>   }
>   
>   /***************************************************************************
> -@brief               : Match the filter. If matches, post the evt to the 
> client MBX
> -               and increment the cbk count of the the corresponding hdl node.
> +@brief               : Match the filter. If matches, increment the cbk count 
> of
> +               the corresponding hdl node and post the evt to the client MBX.
>                 If for a client, more than one scope matches, then those many
>                 no of evts are posted to the MBX.
>   @param[in]  : client_info - For which filter match to be performed.
> @@ -694,27 +694,31 @@ uint32_t smfa_cbk_filter_match(SMFA_CLIENT_INFO 
> *client_info,
>                                       &cbk_evt->object_name),
>                                   &evt->evt.cbk_evt.object_name);
>   
> -                             if (m_NCS_IPC_SEND(&client_info->cbk_mbx,
> -                                                (NCSCONTEXT)evt,
> -                                                NCS_IPC_PRIORITY_NORMAL)) {
> -                                     /* Increment the cbk count.*/
> -                                     if (NULL != hdl_list) {
> -                                             /* There are two scope id
> -                                              * matching for the same hdl.*/
> -                                     } else {
> -                                             /* First scope id matching for
> -                                              * this hdl.*/
> -                                             hdl_list = smfa_inv_hdl_add(
> -                                                 cbk_evt->inv_id,
> -                                                 client_info->client_hdl);
> -                                     }
> -                                     hdl_list->cnt++;
> -                                     rc = NCSCC_RC_SUCCESS;
> +                             /* Increment the cbk count.*/
> +                             if (NULL != hdl_list) {
> +                                     /* There are two scope id
> +                                      * matching for the same hdl.*/
>                               } else {
> +                                     /* First scope id matching for
> +                                      * this hdl.*/
> +                                     hdl_list = smfa_inv_hdl_add(
> +                                         cbk_evt->inv_id,
> +                                         client_info->client_hdl);
> +                             }
> +                             hdl_list->cnt++;
> +                             rc = m_NCS_IPC_SEND(
> +                                     &client_info->cbk_mbx,
> +                                     (NCSCONTEXT)evt,
> +                                     NCS_IPC_PRIORITY_NORMAL);
> +                             if (rc != NCSCC_RC_SUCCESS) {
>                                       LOG_ER(
>                                           "SMFA: Posting to MBX failed. hdl: 
> %llu, scoe_id: %u",
>                                           client_info->client_hdl,
>                                           cbk_evt->scope_id);
> +                                     /* Descrease the cbk count */
> +                                     smfa_cbk_ok_resp_process(
> +                                             client_info->client_hdl,
> +                                             cbk_evt->inv_id);
>                               }
>   
>                               /* If one of the filter matches then go to the



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to