Re: [devel] [PATCH 1 of 1] mds: Use sequenceId for message sequence numbers [#2292]
On 2/17/2017 2:59 PM, Anders Widell wrote: > we should check that our README refers to the RFC somewhere. That will be even good for completely understand the New MDS log format. -AVM On 2/17/2017 2:59 PM, Anders Widell wrote: > Hi! > > > On 02/17/2017 10:16 AM, A V Mahesh wrote: >> Hi Anders Widell, >> >> ACK with following ( tested as well ) >> >> On 2/17/2017 2:22 PM, Anders Widell wrote: >>> Yes the max value is INT_MAX (2147483647), after which the next >>> sequence number will start from 1 again. >> >> Do we have to mention the things in some README ? > > This limit is documented in the RFC, but we should check that our > README refers to the RFC somewhere. > >> >> -AVM >> >> On 2/17/2017 2:22 PM, Anders Widell wrote: >>> See below. >>> >>> regards, >>> >>> Anders Widell >>> >>> >>> On 02/17/2017 06:21 AM, A V Mahesh wrote: Hi Anders Widell, Can you please clarify below : 1) is this meta sequenceId is rotates after reaching some value ? ( Max value ) >>> >>> Yes the max value is INT_MAX (2147483647), after which the next >>> sequence number will start from 1 again. >>> 2) is this meta sequenceId persistent even after application respawn ? >>> >>> No, but you can detect application restart using the PID, which is >>> also included in the log message. >>> = <143>1 2017-02-17T10:44:21.59772+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431572"] MDS_SND_RCV : calling cb ptr enc or enc flatin mcm_msg_encode_full_or_flat_and_send <143>1 2017-02-17T10:44:21.597733+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431573"] >> mds_get_subtn_res_tbl_by_adest <143>1 2017-02-17T10:44:21.597771+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431576"] << mcm_msg_encode_full_or_flat_and_send <142>1 2017-02-17T10:44:21.597784+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431577"] MDTM: User Sending Data lenght=384 From svc_id = IMMA_OM(26) to svc_id = IMMND(25) <143>1 2017-02-17T10:44:21.597798+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431578"] MDTM: Sending message with Service Seqno=7482, TO Dest_id=<0x0002020f:9253> <143>1 2017-02-17T10:44:21.597875+05:30 PL-1 osafimmnd 9253 - [meta sequenceId="1532911"] >> mds_vdest_tbl_get_role <143>1 2017-02-17T10:44:21.597879+05:30 PL-1 osafimmnd 9253 - [meta sequenceId="1532912"] << mds_vdest_tbl_get_role = -AVM On 2/13/2017 8:11 PM, Anders Widell wrote: > src/mds/mds_log.cc | 24 > 1 files changed, 16 insertions(+), 8 deletions(-) > > > Use the meta sequenceId structured element for message sequence > numbers instead > of the MSGID field, as per RFC-5424. > > Also use a mutex to protect the UnixSocket instance, since users > of this class > will be reponsible for thread safety after ticket [#2293]. > > diff --git a/src/mds/mds_log.cc b/src/mds/mds_log.cc > --- a/src/mds/mds_log.cc > +++ b/src/mds/mds_log.cc > @@ -27,7 +27,6 @@ > #include > #include > #include > -#include > #include > #include > #include > @@ -35,6 +34,7 @@ > #include "base/buffer.h" > #include "base/log_message.h" > #include "base/macros.h" > +#include "base/mutex.h" > #include "base/ncsgl_defs.h" > #include "base/osaf_utility.h" > #include "base/time.h" > @@ -54,12 +54,14 @@ class MdsLog { > uint32_t proc_id, const char* socket_name); > void LogInternal(base::LogMessage::Severity severity, const > char *fmt, > va_list ap); > + static constexpr const uint32_t kMaxSequenceId = > uint32_t{0x7fff}; > static MdsLog* instance_; > const base::LogMessage::HostName host_name_; > const base::LogMessage::AppName app_name_; > const base::LogMessage::ProcId proc_id_; > - std::atomic msg_id_; > + uint32_t sequence_id_; > base::UnixClientSocket log_socket_; > + base::Mutex mutex_; > DELETE_COPY_AND_MOVE_OPERATORS(MdsLog); > }; > @@ -72,8 +74,9 @@ MdsLog::MdsLog(const char* host_name, co > host_name_{base::LogMessage::HostName{host_name}}, > app_name_{base::LogMessage::AppName{app_name}}, > proc_id_{base::LogMessage::ProcId{std::to_string(proc_id)}}, > -msg_id_{0}, > -log_socket_{socket_name} { > +sequence_id_{1}, > +log_socket_{socket_name}, > +mutex_{} { > }
Re: [devel] [PATCH 1 of 1] mds: Use sequenceId for message sequence numbers [#2292]
Hi Anders Widell, ACK with following ( tested as well ) On 2/17/2017 2:22 PM, Anders Widell wrote: > Yes the max value is INT_MAX (2147483647), after which the next > sequence number will start from 1 again. Do we have to mention the things in some README ? -AVM On 2/17/2017 2:22 PM, Anders Widell wrote: > See below. > > regards, > > Anders Widell > > > On 02/17/2017 06:21 AM, A V Mahesh wrote: >> Hi Anders Widell, >> >> Can you please clarify below : >> >> 1) is this meta sequenceId is rotates after reaching some value ? >> ( Max value ) > > Yes the max value is INT_MAX (2147483647), after which the next > sequence number will start from 1 again. > >> >> 2) is this meta sequenceId persistent even after application >> respawn ? > > No, but you can detect application restart using the PID, which is > also included in the log message. > >> >> = >> >> >> >> <143>1 2017-02-17T10:44:21.59772+05:30 PL-1 osafimmloadd 10183 - >> [meta sequenceId="431572"] MDS_SND_RCV : calling cb ptr enc or enc >> flatin mcm_msg_encode_full_or_flat_and_send >> <143>1 2017-02-17T10:44:21.597733+05:30 PL-1 osafimmloadd 10183 - >> [meta sequenceId="431573"] >> mds_get_subtn_res_tbl_by_adest >> >> <143>1 2017-02-17T10:44:21.597771+05:30 PL-1 osafimmloadd 10183 - >> [meta sequenceId="431576"] << mcm_msg_encode_full_or_flat_and_send >> <142>1 2017-02-17T10:44:21.597784+05:30 PL-1 osafimmloadd 10183 - >> [meta sequenceId="431577"] MDTM: User Sending Data lenght=384 From >> svc_id = IMMA_OM(26) to svc_id = IMMND(25) >> <143>1 2017-02-17T10:44:21.597798+05:30 PL-1 osafimmloadd 10183 - >> [meta sequenceId="431578"] MDTM: Sending message with Service >> Seqno=7482, TO Dest_id=<0x0002020f:9253> >> >> <143>1 2017-02-17T10:44:21.597875+05:30 PL-1 osafimmnd 9253 - [meta >> sequenceId="1532911"] >> mds_vdest_tbl_get_role >> <143>1 2017-02-17T10:44:21.597879+05:30 PL-1 osafimmnd 9253 - [meta >> sequenceId="1532912"] << mds_vdest_tbl_get_role >> >> = >> >> >> >> -AVM >> >> >> On 2/13/2017 8:11 PM, Anders Widell wrote: >>> src/mds/mds_log.cc | 24 >>> 1 files changed, 16 insertions(+), 8 deletions(-) >>> >>> >>> Use the meta sequenceId structured element for message sequence >>> numbers instead >>> of the MSGID field, as per RFC-5424. >>> >>> Also use a mutex to protect the UnixSocket instance, since users of >>> this class >>> will be reponsible for thread safety after ticket [#2293]. >>> >>> diff --git a/src/mds/mds_log.cc b/src/mds/mds_log.cc >>> --- a/src/mds/mds_log.cc >>> +++ b/src/mds/mds_log.cc >>> @@ -27,7 +27,6 @@ >>> #include >>> #include >>> #include >>> -#include >>> #include >>> #include >>> #include >>> @@ -35,6 +34,7 @@ >>> #include "base/buffer.h" >>> #include "base/log_message.h" >>> #include "base/macros.h" >>> +#include "base/mutex.h" >>> #include "base/ncsgl_defs.h" >>> #include "base/osaf_utility.h" >>> #include "base/time.h" >>> @@ -54,12 +54,14 @@ class MdsLog { >>> uint32_t proc_id, const char* socket_name); >>> void LogInternal(base::LogMessage::Severity severity, const char >>> *fmt, >>> va_list ap); >>> + static constexpr const uint32_t kMaxSequenceId = >>> uint32_t{0x7fff}; >>> static MdsLog* instance_; >>> const base::LogMessage::HostName host_name_; >>> const base::LogMessage::AppName app_name_; >>> const base::LogMessage::ProcId proc_id_; >>> - std::atomic msg_id_; >>> + uint32_t sequence_id_; >>> base::UnixClientSocket log_socket_; >>> + base::Mutex mutex_; >>> DELETE_COPY_AND_MOVE_OPERATORS(MdsLog); >>> }; >>> @@ -72,8 +74,9 @@ MdsLog::MdsLog(const char* host_name, co >>> host_name_{base::LogMessage::HostName{host_name}}, >>> app_name_{base::LogMessage::AppName{app_name}}, >>> proc_id_{base::LogMessage::ProcId{std::to_string(proc_id)}}, >>> -msg_id_{0}, >>> -log_socket_{socket_name} { >>> +sequence_id_{1}, >>> +log_socket_{socket_name}, >>> +mutex_{} { >>> } >>> /* >>> @@ -130,16 +133,21 @@ void MdsLog::Log(base::LogMessage::Sever >>> void MdsLog::LogInternal(base::LogMessage::Severity severity, >>> const char *fmt, >>>va_list ap) { >>> - uint64_t id = msg_id_++; >>> + base::Lock lock(mutex_); >>> + uint32_t id = sequence_id_; >>> + sequence_id_ = id < kMaxSequenceId ? id + 1 : 1; >>> base::Buffer<256> buffer; >>> - base::LogMessage::Write(base::LogMessage::Facility::kLocal0, >>> + base::LogMessage::Write(base::LogMessage::Facility::kLocal1, >>> severity, >>>
Re: [devel] [PATCH 1 of 1] mds: Use sequenceId for message sequence numbers [#2292]
See below. regards, Anders Widell On 02/17/2017 06:21 AM, A V Mahesh wrote: > Hi Anders Widell, > > Can you please clarify below : > > 1) is this meta sequenceId is rotates after reaching some value ? ( > Max value ) Yes the max value is INT_MAX (2147483647), after which the next sequence number will start from 1 again. > > 2) is this meta sequenceId persistent even after application respawn ? No, but you can detect application restart using the PID, which is also included in the log message. > > = > > > > <143>1 2017-02-17T10:44:21.59772+05:30 PL-1 osafimmloadd 10183 - [meta > sequenceId="431572"] MDS_SND_RCV : calling cb ptr enc or enc flatin > mcm_msg_encode_full_or_flat_and_send > <143>1 2017-02-17T10:44:21.597733+05:30 PL-1 osafimmloadd 10183 - > [meta sequenceId="431573"] >> mds_get_subtn_res_tbl_by_adest > > <143>1 2017-02-17T10:44:21.597771+05:30 PL-1 osafimmloadd 10183 - > [meta sequenceId="431576"] << mcm_msg_encode_full_or_flat_and_send > <142>1 2017-02-17T10:44:21.597784+05:30 PL-1 osafimmloadd 10183 - > [meta sequenceId="431577"] MDTM: User Sending Data lenght=384 From > svc_id = IMMA_OM(26) to svc_id = IMMND(25) > <143>1 2017-02-17T10:44:21.597798+05:30 PL-1 osafimmloadd 10183 - > [meta sequenceId="431578"] MDTM: Sending message with Service > Seqno=7482, TO Dest_id=<0x0002020f:9253> > > <143>1 2017-02-17T10:44:21.597875+05:30 PL-1 osafimmnd 9253 - [meta > sequenceId="1532911"] >> mds_vdest_tbl_get_role > <143>1 2017-02-17T10:44:21.597879+05:30 PL-1 osafimmnd 9253 - [meta > sequenceId="1532912"] << mds_vdest_tbl_get_role > > = > > > > -AVM > > > On 2/13/2017 8:11 PM, Anders Widell wrote: >> src/mds/mds_log.cc | 24 >> 1 files changed, 16 insertions(+), 8 deletions(-) >> >> >> Use the meta sequenceId structured element for message sequence >> numbers instead >> of the MSGID field, as per RFC-5424. >> >> Also use a mutex to protect the UnixSocket instance, since users of >> this class >> will be reponsible for thread safety after ticket [#2293]. >> >> diff --git a/src/mds/mds_log.cc b/src/mds/mds_log.cc >> --- a/src/mds/mds_log.cc >> +++ b/src/mds/mds_log.cc >> @@ -27,7 +27,6 @@ >> #include >> #include >> #include >> -#include >> #include >> #include >> #include >> @@ -35,6 +34,7 @@ >> #include "base/buffer.h" >> #include "base/log_message.h" >> #include "base/macros.h" >> +#include "base/mutex.h" >> #include "base/ncsgl_defs.h" >> #include "base/osaf_utility.h" >> #include "base/time.h" >> @@ -54,12 +54,14 @@ class MdsLog { >> uint32_t proc_id, const char* socket_name); >> void LogInternal(base::LogMessage::Severity severity, const char >> *fmt, >> va_list ap); >> + static constexpr const uint32_t kMaxSequenceId = >> uint32_t{0x7fff}; >> static MdsLog* instance_; >> const base::LogMessage::HostName host_name_; >> const base::LogMessage::AppName app_name_; >> const base::LogMessage::ProcId proc_id_; >> - std::atomic msg_id_; >> + uint32_t sequence_id_; >> base::UnixClientSocket log_socket_; >> + base::Mutex mutex_; >> DELETE_COPY_AND_MOVE_OPERATORS(MdsLog); >> }; >> @@ -72,8 +74,9 @@ MdsLog::MdsLog(const char* host_name, co >> host_name_{base::LogMessage::HostName{host_name}}, >> app_name_{base::LogMessage::AppName{app_name}}, >> proc_id_{base::LogMessage::ProcId{std::to_string(proc_id)}}, >> -msg_id_{0}, >> -log_socket_{socket_name} { >> +sequence_id_{1}, >> +log_socket_{socket_name}, >> +mutex_{} { >> } >> /* >> @@ -130,16 +133,21 @@ void MdsLog::Log(base::LogMessage::Sever >> void MdsLog::LogInternal(base::LogMessage::Severity severity, >> const char *fmt, >>va_list ap) { >> - uint64_t id = msg_id_++; >> + base::Lock lock(mutex_); >> + uint32_t id = sequence_id_; >> + sequence_id_ = id < kMaxSequenceId ? id + 1 : 1; >> base::Buffer<256> buffer; >> - base::LogMessage::Write(base::LogMessage::Facility::kLocal0, >> + base::LogMessage::Write(base::LogMessage::Facility::kLocal1, >> severity, >> base::ReadRealtimeClock(), >> host_name_, >> app_name_, >> proc_id_, >> - base::LogMessage::MsgId{std::to_string(id)}, >> - {}, >> + base::LogMessage::MsgId{""}, >> + {{base::LogMessage::SdName{"meta"}, >> + {base::LogMessage::Parameter{ >> +
Re: [devel] [PATCH 1 of 1] mds: Use sequenceId for message sequence numbers [#2292]
Hi Anders Widell, Can you please clarify below : 1) is this meta sequenceId is rotates after reaching some value ? ( Max value ) 2) is this meta sequenceId persistent even after application respawn ? = <143>1 2017-02-17T10:44:21.59772+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431572"] MDS_SND_RCV : calling cb ptr enc or enc flatin mcm_msg_encode_full_or_flat_and_send <143>1 2017-02-17T10:44:21.597733+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431573"] >> mds_get_subtn_res_tbl_by_adest <143>1 2017-02-17T10:44:21.597771+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431576"] << mcm_msg_encode_full_or_flat_and_send <142>1 2017-02-17T10:44:21.597784+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431577"] MDTM: User Sending Data lenght=384 From svc_id = IMMA_OM(26) to svc_id = IMMND(25) <143>1 2017-02-17T10:44:21.597798+05:30 PL-1 osafimmloadd 10183 - [meta sequenceId="431578"] MDTM: Sending message with Service Seqno=7482, TO Dest_id=<0x0002020f:9253> <143>1 2017-02-17T10:44:21.597875+05:30 PL-1 osafimmnd 9253 - [meta sequenceId="1532911"] >> mds_vdest_tbl_get_role <143>1 2017-02-17T10:44:21.597879+05:30 PL-1 osafimmnd 9253 - [meta sequenceId="1532912"] << mds_vdest_tbl_get_role = -AVM On 2/13/2017 8:11 PM, Anders Widell wrote: > src/mds/mds_log.cc | 24 > 1 files changed, 16 insertions(+), 8 deletions(-) > > > Use the meta sequenceId structured element for message sequence numbers > instead > of the MSGID field, as per RFC-5424. > > Also use a mutex to protect the UnixSocket instance, since users of this class > will be reponsible for thread safety after ticket [#2293]. > > diff --git a/src/mds/mds_log.cc b/src/mds/mds_log.cc > --- a/src/mds/mds_log.cc > +++ b/src/mds/mds_log.cc > @@ -27,7 +27,6 @@ > #include > #include > #include > -#include > #include > #include > #include > @@ -35,6 +34,7 @@ > #include "base/buffer.h" > #include "base/log_message.h" > #include "base/macros.h" > +#include "base/mutex.h" > #include "base/ncsgl_defs.h" > #include "base/osaf_utility.h" > #include "base/time.h" > @@ -54,12 +54,14 @@ class MdsLog { > uint32_t proc_id, const char* socket_name); > void LogInternal(base::LogMessage::Severity severity, const char *fmt, > va_list ap); > + static constexpr const uint32_t kMaxSequenceId = uint32_t{0x7fff}; > static MdsLog* instance_; > const base::LogMessage::HostName host_name_; > const base::LogMessage::AppName app_name_; > const base::LogMessage::ProcId proc_id_; > - std::atomic msg_id_; > + uint32_t sequence_id_; > base::UnixClientSocket log_socket_; > + base::Mutex mutex_; > > DELETE_COPY_AND_MOVE_OPERATORS(MdsLog); > }; > @@ -72,8 +74,9 @@ MdsLog::MdsLog(const char* host_name, co > host_name_{base::LogMessage::HostName{host_name}}, > app_name_{base::LogMessage::AppName{app_name}}, > proc_id_{base::LogMessage::ProcId{std::to_string(proc_id)}}, > -msg_id_{0}, > -log_socket_{socket_name} { > +sequence_id_{1}, > +log_socket_{socket_name}, > +mutex_{} { > } > > /* > @@ -130,16 +133,21 @@ void MdsLog::Log(base::LogMessage::Sever > > void MdsLog::LogInternal(base::LogMessage::Severity severity, const char > *fmt, >va_list ap) { > - uint64_t id = msg_id_++; > + base::Lock lock(mutex_); > + uint32_t id = sequence_id_; > + sequence_id_ = id < kMaxSequenceId ? id + 1 : 1; > base::Buffer<256> buffer; > - base::LogMessage::Write(base::LogMessage::Facility::kLocal0, > + base::LogMessage::Write(base::LogMessage::Facility::kLocal1, > severity, > base::ReadRealtimeClock(), > host_name_, > app_name_, > proc_id_, > - base::LogMessage::MsgId{std::to_string(id)}, > - {}, > + base::LogMessage::MsgId{""}, > + {{base::LogMessage::SdName{"meta"}, > + {base::LogMessage::Parameter{ > + base::LogMessage::SdName{"sequenceId"}, > + std::to_string(id), > fmt, > ap, > ); -- Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org!
[devel] [PATCH 1 of 1] mds: Use sequenceId for message sequence numbers [#2292]
src/mds/mds_log.cc | 24 1 files changed, 16 insertions(+), 8 deletions(-) Use the meta sequenceId structured element for message sequence numbers instead of the MSGID field, as per RFC-5424. Also use a mutex to protect the UnixSocket instance, since users of this class will be reponsible for thread safety after ticket [#2293]. diff --git a/src/mds/mds_log.cc b/src/mds/mds_log.cc --- a/src/mds/mds_log.cc +++ b/src/mds/mds_log.cc @@ -27,7 +27,6 @@ #include #include #include -#include #include #include #include @@ -35,6 +34,7 @@ #include "base/buffer.h" #include "base/log_message.h" #include "base/macros.h" +#include "base/mutex.h" #include "base/ncsgl_defs.h" #include "base/osaf_utility.h" #include "base/time.h" @@ -54,12 +54,14 @@ class MdsLog { uint32_t proc_id, const char* socket_name); void LogInternal(base::LogMessage::Severity severity, const char *fmt, va_list ap); + static constexpr const uint32_t kMaxSequenceId = uint32_t{0x7fff}; static MdsLog* instance_; const base::LogMessage::HostName host_name_; const base::LogMessage::AppName app_name_; const base::LogMessage::ProcId proc_id_; - std::atomic msg_id_; + uint32_t sequence_id_; base::UnixClientSocket log_socket_; + base::Mutex mutex_; DELETE_COPY_AND_MOVE_OPERATORS(MdsLog); }; @@ -72,8 +74,9 @@ MdsLog::MdsLog(const char* host_name, co host_name_{base::LogMessage::HostName{host_name}}, app_name_{base::LogMessage::AppName{app_name}}, proc_id_{base::LogMessage::ProcId{std::to_string(proc_id)}}, -msg_id_{0}, -log_socket_{socket_name} { +sequence_id_{1}, +log_socket_{socket_name}, +mutex_{} { } /* @@ -130,16 +133,21 @@ void MdsLog::Log(base::LogMessage::Sever void MdsLog::LogInternal(base::LogMessage::Severity severity, const char *fmt, va_list ap) { - uint64_t id = msg_id_++; + base::Lock lock(mutex_); + uint32_t id = sequence_id_; + sequence_id_ = id < kMaxSequenceId ? id + 1 : 1; base::Buffer<256> buffer; - base::LogMessage::Write(base::LogMessage::Facility::kLocal0, + base::LogMessage::Write(base::LogMessage::Facility::kLocal1, severity, base::ReadRealtimeClock(), host_name_, app_name_, proc_id_, - base::LogMessage::MsgId{std::to_string(id)}, - {}, + base::LogMessage::MsgId{""}, + {{base::LogMessage::SdName{"meta"}, + {base::LogMessage::Parameter{ + base::LogMessage::SdName{"sequenceId"}, + std::to_string(id), fmt, ap, ); -- 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