From f21a7f7bf3db61bd533e777297bff1346112a0db Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 3 May 2013 12:57:00 -0700 Subject: [PATCH] rgw: protect ops log socket formatter Fixes: #4905 Ops log (through the unix domain socket) uses a formatter, which wasn't protected. Signed-off-by: Yehuda Sadeh (cherry picked from commit d48f1edb07a4d8727ac956f70e663c1b4e33e1dd) --- src/rgw/rgw_log.cc | 4 +++- src/rgw/rgw_log.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index e999f623a018b..62dd8c0c46cc8 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -233,7 +233,7 @@ void OpsLogSocket::init_connection(bufferlist& bl) bl.append("["); } -OpsLogSocket::OpsLogSocket(CephContext *cct, uint64_t _backlog) : OutputDataSocket(cct, _backlog) +OpsLogSocket::OpsLogSocket(CephContext *cct, uint64_t _backlog) : OutputDataSocket(cct, _backlog), lock("OpsLogSocket") { formatter = new JSONFormatter; delim.append(",\n"); @@ -248,8 +248,10 @@ void OpsLogSocket::log(struct rgw_log_entry& entry) { bufferlist bl; + lock.Lock(); rgw_format_ops_log_entry(entry, formatter); formatter_to_bl(bl); + lock.Unlock(); append_output(bl); } diff --git a/src/rgw/rgw_log.h b/src/rgw/rgw_log.h index 823f0b1767f01..37e387d4ce6d6 100644 --- a/src/rgw/rgw_log.h +++ b/src/rgw/rgw_log.h @@ -119,6 +119,7 @@ WRITE_CLASS_ENCODER(rgw_intent_log_entry) class OpsLogSocket : public OutputDataSocket { Formatter *formatter; + Mutex lock; void formatter_to_bl(bufferlist& bl); -- 2.39.5