Hi Vu,

Please find query inline [Praveen].

Thanks,
Praveen

On 17-Nov-16 11:58 AM, Vu Minh Nguyen wrote:
>  osaf/services/saf/ntfsv/ntfs/ntfs_clm.c |  14 +++++++++++++-
>  1 files changed, 13 insertions(+), 1 deletions(-)
>
>
> NTF did not deal with TRY_AGAIN error code of `saClmInitialize()`,
> NTF would exit, and cause node reboot if getting TRY_AGAIN.
>
> The patch adds a while loop to do retry when getting TRY_AGAIN.
>
> diff --git a/osaf/services/saf/ntfsv/ntfs/ntfs_clm.c 
> b/osaf/services/saf/ntfsv/ntfs/ntfs_clm.c
> --- a/osaf/services/saf/ntfsv/ntfs/ntfs_clm.c
> +++ b/osaf/services/saf/ntfsv/ntfs/ntfs_clm.c
> @@ -101,13 +101,25 @@ void *ntfs_clm_init_thread(void *cb)
>  {
>       ntfs_cb_t *_ntfs_cb = (ntfs_cb_t *) cb;
>       SaAisErrorT rc = SA_AIS_OK;
> +     uint32_t msecs_waited = 0;
> +     const uint32_t max_waiting_time_10s = 10 * 1000; /* 10 secs */
> +
>       TRACE_ENTER();
> +
>       rc = saClmInitialize_4(&_ntfs_cb->clm_hdl, &clm_callbacks, &clmVersion);
> +     while (((rc == SA_AIS_ERR_TRY_AGAIN) || (rc == SA_AIS_ERR_TIMEOUT) ||
> +             (rc == SA_AIS_ERR_UNAVAILABLE)) &&
[Praveen] Based on discussion on ticket #1828 related to CLM 
initialization, I remember this API does not return ERR_UNAVAILABLE even 
on a CLM locked node also. This provision is to enable application on 
CLM locked node to perform tracking of CLM status of nodes.

But I think even CLM Agent can return this code when CLMS server has not 
got node related information from CLM agent and in that case CLMS will 
return ERR_UNAVAILABLE. If it is not so, then I think we are not 
required to handle rc == SA_AIS_ERR_UNAVAILABLE.

Thanks,
Praveen
> +            (msecs_waited < max_waiting_time_10s)) {
> +             usleep(100*1000);
> +             msecs_waited += 100;
> +             rc = saClmInitialize_4(&_ntfs_cb->clm_hdl, &clm_callbacks, 
> &clmVersion);
> +     }
>       if (rc != SA_AIS_OK) {
>               LOG_ER("saClmInitialize failed with error: %d", rc);
>               TRACE_LEAVE();
> -                exit(EXIT_FAILURE);
> +             exit(EXIT_FAILURE);
>       }
> +
>       rc = saClmSelectionObjectGet(_ntfs_cb->clm_hdl, 
> &ntfs_cb->clmSelectionObject);
>       if (rc != SA_AIS_OK) {
>               LOG_ER("saClmSelectionObjectGet failed with error: %d", rc);
>

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to