]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: protect ops log socket formatter
authorYehuda Sadeh <yehuda@inktank.com>
Fri, 3 May 2013 19:57:00 +0000 (12:57 -0700)
committerSage Weil <sage@inktank.com>
Tue, 21 May 2013 20:05:22 +0000 (13:05 -0700)
Fixes: #4905
Ops log (through the unix domain socket) uses a formatter, which wasn't
protected.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_log.cc
src/rgw/rgw_log.h

index 09fdacf4f2f87b036b4d813b304bc1cc41c39cf9..7fc3634d957c3bcd26b7e41f1fc0a7c870890d4a 100644 (file)
@@ -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);
 }
index 823f0b1767f0186d3a5fc09546b6d98109dc2714..37e387d4ce6d656284abd61af387b3dd07f371aa 100644 (file)
@@ -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);