Hi Vu

Ack

Thanks
Lennart

> -----Original Message-----
> From: Vu Minh Nguyen [mailto:vu.m.ngu...@dektech.com.au]
> Sent: den 27 september 2016 14:41
> To: Lennart Lund <lennart.l...@ericsson.com>; mahesh.va...@oracle.com
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 1 of 1] log: fix runtime log stream is deleted after 
> restarting
> from headless [#2071]
> 
>  osaf/services/saf/logsv/lgs/lgs_evt.cc |  54 +++++++++++++++++-------------
> ----
>  1 files changed, 27 insertions(+), 27 deletions(-)
> 
> 
> Did not look up in recovery list for openning streams, then there was case
> the openning log stream did not exist in stream database but existing in
> recovery list. So, creating this log stream would lead to ERR_EXIST (14)
> and logsv deleted the stream from IMM.
> 
> This patch fixes this. Looking up in the recovery first, if not found
> then creating log stream.
> 
> diff --git a/osaf/services/saf/logsv/lgs/lgs_evt.cc
> b/osaf/services/saf/logsv/lgs/lgs_evt.cc
> --- a/osaf/services/saf/logsv/lgs/lgs_evt.cc
> +++ b/osaf/services/saf/logsv/lgs/lgs_evt.cc
> @@ -1027,33 +1027,34 @@ static uint32_t proc_stream_open_msg(lgs
>        goto snd_rsp;
>      }
> 
> +    /*
> +     * Check if the stream is in the list of stream objects
> +     * not recovered. If in list, recover the stream and
> +     * add it to the client
> +     */
> +    if (lgs_cb->lgs_recovery_state == LGS_RECOVERY) {
> +      TRACE("%s LGS_RECOVERY",__FUNCTION__);
> +      i_rc = lgs_restore_one_app_stream(name,
> +                                        open_sync_param->client_id,
> +                                        &logStream);
> +      if (i_rc == -1) {
> +        // Not find the opening stream in recovery database.
> +        // Goto next for checking other inputs.
> +        goto next;
> +      }
> +
> +      TRACE("%s Stream %s is recovered", __FUNCTION__, name.c_str());
> +      log_stream_print(logStream); /* TRACE */
> +      lstr_id = logStream->streamId;
> +      goto snd_rsp;
> +    }
> +
> + next:
>      if ((open_sync_param->lstr_open_flags & SA_LOG_STREAM_CREATE) ==
> 0) {
> -      /* The stream does not exist but the create flag is not
> -       * set. If lgs_state is LGS_RECOVERY then:
> -       * Check if the stream is in the list of stream objects
> -       * not recovered. If in list, recover the stream and
> -       * add it to the client
> -       */
> -      if (lgs_cb->lgs_recovery_state == LGS_RECOVERY) {
> -        TRACE("%s LGS_RECOVERY",__FUNCTION__);
> -        i_rc = lgs_restore_one_app_stream(name,
> -                                          open_sync_param->client_id,
> -                                          &logStream);
> -        if (i_rc == -1) {
> -          TRACE("%s lgs_restore_one_stream Fail", __FUNCTION__);
> -          ais_rv = SA_AIS_ERR_NOT_EXIST;
> -          goto snd_rsp;
> -        }
> -        TRACE("%s Stream %s is recovered", __FUNCTION__, name.c_str());
> -        log_stream_print(logStream); /* TRACE */
> -        lstr_id = logStream->streamId;
> -        goto snd_rsp;
> -      } else {
> -        /* Trying to open a non existing stream */
> -        TRACE("%s Attempt to open not existing stream", __FUNCTION__);
> -        ais_rv = SA_AIS_ERR_NOT_EXIST;
> -        goto snd_rsp;
> -      }
> +      /* Trying to open a non existing stream */
> +      TRACE("%s Attempt to open not existing stream", __FUNCTION__);
> +      ais_rv = SA_AIS_ERR_NOT_EXIST;
> +      goto snd_rsp;
>      }
> 
>      if (check_max_stream()) {
> @@ -1066,7 +1067,6 @@ static uint32_t proc_stream_open_msg(lgs
>       *  - Check parameters
>       *  - Create the stream in the stream "data base"
>       *  - If active create IMM runtime object
> -     *  - If recover do not create IMM object
>       *
>       * Note: Files are not created here
>       */

------------------------------------------------------------------------------
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