This is useful only for debugging. The encoded contents of a message are
dumped to the log on message send. This is useful when valgrind is
triggering warnings about uninitialized memory in messages because the
call chain will indicate which message type is to blame, whereas the
usual writer thread context does not tell us any useful information.
Signed-off-by: Sage Weil <sage@inktank.com>
OPTION(ms_inject_delay_max, OPT_DOUBLE, 1) // seconds
OPTION(ms_inject_delay_probability, OPT_DOUBLE, 0) // range [0, 1]
OPTION(ms_inject_internal_delays, OPT_DOUBLE, 0) // seconds
+OPTION(ms_dump_on_send, OPT_BOOL, false) // hexdump msg to log on send
OPTION(inject_early_sigterm, OPT_BOOL, false)
void SimpleMessenger::submit_message(Message *m, Connection *con,
const entity_addr_t& dest_addr, int dest_type, bool lazy)
{
+
+ if (cct->_conf->ms_dump_on_send) {
+ m->encode(-1, true);
+ ldout(cct, 0) << "submit_message " << *m << "\n";
+ m->get_payload().hexdump(*_dout);
+ if (m->get_data().length() > 0) {
+ *_dout << " data:\n";
+ m->get_data().hexdump(*_dout);
+ }
+ *_dout << dendl;
+ m->clear_payload();
+ }
+
// existing connection?
if (con) {
Pipe *pipe = NULL;