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