Hi Vu,
Ack.
-AVM
On 4/26/2017 12:25 PM, Vu Minh Nguyen wrote:
> rfc5424_msgid is only referred when streaming and
> having destination name set on that log stream.
>
> It means it does meaningless job sometimes,
> that is do hash calculation even there is no destination name set.
>
> This ticket will fix that.
> ---
> src/log/logd/lgs_dest.cc | 6 ++++++
> src/log/logd/lgs_imm.cc | 41 +++++++++++++++++++++++++++++++----------
> src/log/logd/lgs_main.cc | 2 --
> src/log/logd/lgs_mbcsv.cc | 21 +++++++++++++++------
> 4 files changed, 52 insertions(+), 18 deletions(-)
>
> diff --git a/src/log/logd/lgs_dest.cc b/src/log/logd/lgs_dest.cc
> index ec8fcc6..9f8be27 100644
> --- a/src/log/logd/lgs_dest.cc
> +++ b/src/log/logd/lgs_dest.cc
> @@ -73,6 +73,12 @@ std::string DestinationHandler::GenerateMsgId(const
> std::string& dn,
> msgid = ((isRtStream == true) ? std::string{sname + 'R'}
> : std::string{sname + 'C'});
> } else {
> + // Do `InitializeHashFunction()` once
> + static bool init_invoked = false;
> + if (init_invoked == false) {
> + base::InitializeHashFunction();
> + init_invoked = true;
> + }
> msgid = base::Hash(dn);
> }
>
> diff --git a/src/log/logd/lgs_imm.cc b/src/log/logd/lgs_imm.cc
> index caf0cc9..1b22c15 100644
> --- a/src/log/logd/lgs_imm.cc
> +++ b/src/log/logd/lgs_imm.cc
> @@ -2353,7 +2353,17 @@ static SaAisErrorT stream_create_and_configure1(
> char *value_str = *(reinterpret_cast<char **>(value));
> vstring.push_back(value_str);
> }
> +
> log_stream_add_dest_name(*stream, vstring);
> + if (vstring.empty() == false) {
> + // Generate & cache `MSGID` to `rfc5424MsgId` which later
> + // used in RFC5424 protocol
> + (*stream)->rfc5424MsgId =
> + DestinationHandler::Instance().GenerateMsgId(
> + (*stream)->name, (*stream)->isRtStream);
> + TRACE("%s: stream %s - msgid = %s", __func__,
> (*stream)->name.c_str(),
> + (*stream)->rfc5424MsgId.c_str());
> + }
> }
> }
> i++;
> @@ -2390,11 +2400,6 @@ static SaAisErrorT stream_create_and_configure1(
> osaf_abort(0);
> }
>
> - // Generate & cache `MSGID` to `rfc5424MsgId` which later
> - // used in RFC5424 protocol
> - (*stream)->rfc5424MsgId = DestinationHandler::Instance().GenerateMsgId(
> - (*stream)->name, (*stream)->isRtStream);
> -
> done:
> TRACE_LEAVE2("rc: %s", saf_error(rc));
> return rc;
> @@ -2519,7 +2524,20 @@ static void stream_ccb_apply_modify(const
> CcbUtilOperationData_t *opdata) {
> char *value_str = *(reinterpret_cast<char **>(value));
> vstring.push_back(value_str);
> }
> +
> apply_destination_names_change(stream, vstring, attrMod->modType);
> + // Make sure generated msg is only called when
> + // 1) Have destination set
> + // 2) Not yet generated
> + if (vstring.empty() == false && stream->rfc5424MsgId.empty() == true) {
> + // Generate & cache `MSGID` to `rfc5424MsgId` which later
> + // used in RFC5424 protocol
> + stream->rfc5424MsgId =
> + DestinationHandler::Instance().GenerateMsgId(
> + stream->name, stream->isRtStream);
> + TRACE("%s: stream %s - msgid = %s", __func__, stream->name.c_str(),
> + stream->rfc5424MsgId.c_str());
> + }
> } else {
> LOG_ER("Error: Unknown attribute name");
> osafassert(0);
> @@ -2860,6 +2878,14 @@ static SaAisErrorT stream_create_and_configure(
> vstring.push_back(value_str);
> }
> log_stream_add_dest_name(stream, vstring);
> + if (vstring.empty() == false) {
> + // Generate & cache `MSGID` to `rfc5424MsgId` which later
> + // used in RFC5424 protocol
> + stream->rfc5424MsgId = DestinationHandler::Instance().GenerateMsgId(
> + dn, stream->isRtStream);
> + TRACE("%s: stream %s - msgid = %s", __func__, stream->name.c_str(),
> + stream->rfc5424MsgId.c_str());
> + }
> } else if (!strcmp(attribute->attrName,
> "saLogStreamCreationTimestamp")) {
> if (attribute->attrValuesNumber != 0) {
> /* Restore creation timestamp if exist
> @@ -2890,11 +2916,6 @@ static SaAisErrorT stream_create_and_configure(
> }
> }
>
> - // Generate & cache `MSGID` to `rfc5424MsgId` which later
> - // used in RFC5424 protocol
> - stream->rfc5424MsgId =
> - DestinationHandler::Instance().GenerateMsgId(dn, stream->isRtStream);
> -
> done:
> TRACE_LEAVE2("rc: %s", saf_error(rc));
> return rc;
> diff --git a/src/log/logd/lgs_main.cc b/src/log/logd/lgs_main.cc
> index d8e54a6..fe2f9a2 100644
> --- a/src/log/logd/lgs_main.cc
> +++ b/src/log/logd/lgs_main.cc
> @@ -281,8 +281,6 @@ static uint32_t log_initialize(void) {
>
> TRACE_ENTER();
>
> - base::InitializeHashFunction();
> -
> /**
> * Setup immutils profile once and for all.
> * This profile says immutil_ API will be blocked
> diff --git a/src/log/logd/lgs_mbcsv.cc b/src/log/logd/lgs_mbcsv.cc
> index 59232e1..e46dfb8 100644
> --- a/src/log/logd/lgs_mbcsv.cc
> +++ b/src/log/logd/lgs_mbcsv.cc
> @@ -2103,7 +2103,6 @@ uint32_t ckpt_proc_open_stream(lgs_cb_t *cb, void
> *data) {
> stream->logFileCurrent = param->logFileCurrent;
> stream->stb_prev_actlogFileCurrent = param->logFileCurrent;
> stream->stb_logFileCurrent = param->logFileCurrent;
> -
> osaf_extended_name_lend(param->logStreamName, &objectName);
> SaImmClassNameT className = immutil_get_className(&objectName);
> if (className != nullptr && strcmp(className, "SaLogStreamConfig") ==
> 0) {
> @@ -2119,15 +2118,16 @@ uint32_t ckpt_proc_open_stream(lgs_cb_t *cb, void
> *data) {
> TRACE("Dest_name %s", param->dest_names);
> stream->stb_dest_names = std::string{param->dest_names};
> stream->dest_names = logutil::Parser(stream->stb_dest_names, ";");
> + // Generate & cache `MSGID` to `rfc5424MsgId` which later
> + // used in RFC5424 protocol
> + stream->rfc5424MsgId = DestinationHandler::Instance().GenerateMsgId(
> + stream->name, stream->isRtStream);
> + TRACE("%s: stream %s - msgid = %s", __func__, stream->name.c_str(),
> + stream->rfc5424MsgId.c_str());
> } else {
> stream->stb_dest_names = "";
> stream->dest_names.clear();
> }
> -
> - // Generate & cache `MSGID` to `rfc5424MsgId` which later
> - // used in RFC5424 protocol
> - stream->rfc5424MsgId = DestinationHandler::Instance().GenerateMsgId(
> - stream->name, stream->isRtStream);
> }
> }
>
> @@ -2366,6 +2366,15 @@ static uint32_t ckpt_proc_cfg_stream(lgs_cb_t *cb,
> void *data) {
> TRACE("dest_names: %s", dest_names);
> stream->stb_dest_names = std::string{dest_names};
> stream->dest_names = logutil::Parser(stream->stb_dest_names, ";");
> + // Make sure generated msg is only called when
> + // 1) Have destination set
> + // 2) Not yet generated
> + if (stream->rfc5424MsgId.empty() == true) {
> + stream->rfc5424MsgId = DestinationHandler::Instance().GenerateMsgId(
> + stream->name, stream->isRtStream);
> + TRACE("%s: stream %s - msgid = %s", __func__, stream->name.c_str(),
> + stream->rfc5424MsgId.c_str());
> + }
> } else {
> stream->stb_dest_names = "";
> stream->dest_names.clear();
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel