Hi, ACK , tested
Please re-base before publishing. -AVM On 8/4/2016 9:36 AM, Canh Van Truong wrote: > osaf/services/saf/logsv/lgs/lgs_imm.cc | 52 > +++++++++++++++++----------------- > 1 files changed, 26 insertions(+), 26 deletions(-) > > > When changing saLogStreamFileName with other attributes, the action > "closing current log file", "rename", "create new cfg and log file" are > duplicated. This cause the ER in syslog, because lgsv can not find log > file when closing secondly. Name of current log file was changed at first > time. > > This patch make lgsv just do above action only once. > > diff --git a/osaf/services/saf/logsv/lgs/lgs_imm.cc > b/osaf/services/saf/logsv/lgs/lgs_imm.cc > --- a/osaf/services/saf/logsv/lgs/lgs_imm.cc > +++ b/osaf/services/saf/logsv/lgs/lgs_imm.cc > @@ -2275,7 +2275,7 @@ static void stream_ccb_apply_modify(cons > bool new_cfg_file_needed = false; > struct timespec curtime_tspec; > std::string fileName; > - bool modify = false; > + bool stream_filename_modified = false; > > TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, > opdata->objectName.value); > > @@ -2295,7 +2295,7 @@ static void stream_ccb_apply_modify(cons > > if (!strcmp(attribute->attrName, "saLogStreamFileName")) { > fileName = *((char **)value); > - modify = true; > + stream_filename_modified = true; > } else if (!strcmp(attribute->attrName, > "saLogStreamMaxLogFileSize")) { > SaUint64T maxLogFileSize = *((SaUint64T *)value); > stream->maxLogFileSize = maxLogFileSize; > @@ -2337,7 +2337,30 @@ static void stream_ccb_apply_modify(cons > time_t cur_time = curtime_tspec.tv_sec; > std::string root_path = static_cast<const char > *>(lgs_cfg_get(LGS_IMM_LOG_ROOT_DIRECTORY)); > > - if (new_cfg_file_needed) { > + /* Fix for ticket #1346 */ > + if (stream_filename_modified) { > + int rc; > + if ((rc = log_stream_config_change(!LGS_STREAM_CREATE_FILES, > + root_path, stream, current_logfile_name, &cur_time)) > + != 0) { > + LOG_ER("log_stream_config_change failed: %d", rc); > + } > + > + stream->fileName = fileName; > + > + if ((rc = lgs_create_config_file_h(root_path, stream)) != 0) { > + LOG_ER("lgs_create_config_file_h failed: %d", rc); > + } > + > + char *current_time = lgs_get_time(&cur_time); > + stream->logFileCurrent = stream->fileName + "_" + current_time; > + > + // Create the new log file based on updated configuration > + if ((*stream->p_fd = log_file_open(root_path, > + stream, stream->logFileCurrent, NULL)) == -1) > + LOG_ER("New log file could not be created for stream: > %s", > + stream->name); > + } else if (new_cfg_file_needed) { > int rc; > if ((rc = log_stream_config_change(LGS_STREAM_CREATE_FILES, > root_path, stream, > @@ -2347,29 +2370,6 @@ static void stream_ccb_apply_modify(cons > } > } > > - /* Fix for ticket #1346 */ > - if (modify) { > - int rc; > - if ((rc = log_stream_config_change(!LGS_STREAM_CREATE_FILES, > - root_path, stream, current_logfile_name, &cur_time)) > - != 0) { > - LOG_ER("log_stream_config_change failed: %d", rc); > - } > - > - stream->fileName = fileName; > - > - if ((rc = lgs_create_config_file_h(root_path, stream)) != 0) { > - LOG_ER("lgs_create_config_file_h failed: %d", rc); > - } > - > - char *current_time = lgs_get_time(&cur_time); > - stream->logFileCurrent = stream->fileName + "_" + current_time; > - > - // Create the new log file based on updated configuration > - *stream->p_fd = log_file_open(root_path, > - stream, stream->logFileCurrent, NULL); > - } > - > /* Checkpoint to standby LOG server */ > /* Save time change was done for standby */ > stream->act_last_close_timestamp = cur_time; ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel