src/log/logd/lgs_dest.cc  |   4 +---
 src/log/logd/lgs_dest.h   |   1 +
 src/log/logd/lgs_evt.cc   |   1 +
 src/log/logd/lgs_imm.cc   |  10 ++++++++++
 src/log/logd/lgs_mbcsv.cc |   5 +++++
 src/log/logd/lgs_stream.h |   1 +
 6 files changed, 19 insertions(+), 3 deletions(-)


MSGID currently is calculated whenever sending log record
to UNIX_SOCKET type, it may impact more or less on performance.

This ticket is to cache the value at the time of log stream creation,
and just refering to it whenever need that value.

diff --git a/src/log/logd/lgs_dest.cc b/src/log/logd/lgs_dest.cc
--- a/src/log/logd/lgs_dest.cc
+++ b/src/log/logd/lgs_dest.cc
@@ -386,10 +386,8 @@ bool WriteToDestination(const RecordData
   // Origin is FQDN = <hostname>[.<networkname>]
   // hostname = where the log record comes from (not active node)
   const std::string origin = std::string {data.hostname} + networkname;
-  const std::string msgid = DestinationHandler::Instance().GenerateMsgId(
-      data.name, data.isRtStream);
 
-  info.msgid      = msgid.c_str();
+  info.msgid      = data.msgid;
   info.log_record = data.logrec;
   info.record_id  = data.recordId;
   info.stream_dn  = data.name;
diff --git a/src/log/logd/lgs_dest.h b/src/log/logd/lgs_dest.h
--- a/src/log/logd/lgs_dest.h
+++ b/src/log/logd/lgs_dest.h
@@ -71,6 +71,7 @@ struct RecordData {
   const char* hostname;
   const char* networkname;
   const char* appname;
+  const char* msgid;
   bool isRtStream;
   uint32_t recordId;
   uint16_t sev;
diff --git a/src/log/logd/lgs_evt.cc b/src/log/logd/lgs_evt.cc
--- a/src/log/logd/lgs_evt.cc
+++ b/src/log/logd/lgs_evt.cc
@@ -1401,6 +1401,7 @@ static uint32_t proc_write_log_async_msg
   data.networkname = lgs_get_networkname().c_str();
   data.appname = osaf_extended_name_borrow(
       param->logRecord->logHeader.genericHdr.logSvcUsrName);
+  data.msgid = stream->rfc5424MsgId.c_str();
   data.isRtStream = stream->isRtStream;
   data.recordId = stream->logRecordId;
   data.sev = param->logRecord->logHeader.genericHdr.logSeverity;
diff --git a/src/log/logd/lgs_imm.cc b/src/log/logd/lgs_imm.cc
--- a/src/log/logd/lgs_imm.cc
+++ b/src/log/logd/lgs_imm.cc
@@ -2378,6 +2378,11 @@ static SaAisErrorT stream_create_and_con
     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;
@@ -2877,6 +2882,11 @@ static SaAisErrorT stream_create_and_con
     }
   }
 
+  // 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_mbcsv.cc b/src/log/logd/lgs_mbcsv.cc
--- a/src/log/logd/lgs_mbcsv.cc
+++ b/src/log/logd/lgs_mbcsv.cc
@@ -2043,6 +2043,11 @@ uint32_t ckpt_proc_open_stream(lgs_cb_t 
         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);
     }
   }
 
diff --git a/src/log/logd/lgs_stream.h b/src/log/logd/lgs_stream.h
--- a/src/log/logd/lgs_stream.h
+++ b/src/log/logd/lgs_stream.h
@@ -52,6 +52,7 @@ typedef struct log_stream {
   SaTimeT creationTimeStamp;
   SaUint32T numOpeners;
   SaUint64T filtered;     /* discarded by server due to filtering */
+  std::string rfc5424MsgId;
   /* --- end correspond to IMM Class --- */
 
   uint32_t streamId;      /* The unique stream id for this stream */

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