Ok

ACK from me not tested.

-AVM


On 10/4/2016 7:48 AM, Vu Minh Nguyen wrote:
> Hi Mahesh,
>
> See my responses inline.
>
> Regards, Vu
>
>> -----Original Message-----
>> From: A V Mahesh [mailto:mahesh.va...@oracle.com]
>> Sent: Monday, October 3, 2016 5:52 PM
>> To: Vu Minh Nguyen <vu.m.ngu...@dektech.com.au>;
>> lennart.l...@ericsson.com
>> Cc: opensaf-devel@lists.sourceforge.net
>> Subject: Re: [PATCH 1 of 1] log: fix runtime log stream is deleted after
>> restarting from headless [#2071]
>>
>> Hi Vu,
>>
>> In case of  LGS_RECOVERY logic is going next  `next` but
>> `open_sync_param->lstr_open_flags & SA_LOG_STREAM_CREATE` will be
>> false
> [Vu] Will end up with SA_AIS_ERR_NOT_EXIST.
>>       if (i_rc == -1) {
>>           // Not find the opening stream in recovery database.
>>           // Goto next for checking other inputs.
>>           goto next;
>>         }
>>
>> we will end up with SA_AIS_ERR_NO_RESOURCES for LGS_RECOVERY , is
>> that ok ?
> [Vu] I guess you referred to wrong place.
> Get error code SA_AIS_ERR_NO_RESOURCES if following condition meet:
> (open_sync_param->lstr_open_flags & SA_LOG_STREAM_CREATE) == true *AND*
> (check_max_stream() == true).
>
> Means: create an new app stream, but number of existing app streams reaches
> the limitation.
> In that case, returning NO_RESOURCES to log client.
>> -AVM
>>
>>
>> On 9/27/2016 6:10 PM, Vu Minh Nguyen wrote:
>>>    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