From 279d664f8b25d2eeafac0b5d60e532dbcf56218f Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Mon, 25 Apr 2022 13:40:19 -0400 Subject: [PATCH] rgw: remove unnecessary OpsLogFile::flush_mutex this mutex was only held by one function, OpsLogFile::flush(). this private member function is only ever called from the background thread, so doesn't need to be protected by a mutex as a further cleanup, i renamed 'cond' and 'mutex' now that we don't need to differentiate between different locks Signed-off-by: Casey Bodley --- src/rgw/rgw_log.cc | 15 +++++++-------- src/rgw/rgw_log.h | 5 ++--- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index 6f59a8d00a4f2..7f63d5f18aafa 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -354,9 +354,8 @@ void OpsLogFile::reopen() { void OpsLogFile::flush() { - std::scoped_lock flush_lock(flush_mutex); { - std::scoped_lock log_lock(log_mutex); + std::scoped_lock log_lock(mutex); assert(flush_buffer.empty()); flush_buffer.swap(log_buffer); data_size = 0; @@ -389,7 +388,7 @@ void OpsLogFile::flush() } void* OpsLogFile::entry() { - std::unique_lock lock(log_mutex); + std::unique_lock lock(mutex); while (!stopped) { if (!log_buffer.empty()) { lock.unlock(); @@ -397,7 +396,7 @@ void* OpsLogFile::entry() { lock.lock(); continue; } - cond_flush.wait(lock); + cond.wait(lock); } flush(); return NULL; @@ -410,8 +409,8 @@ void OpsLogFile::start() { void OpsLogFile::stop() { { - std::unique_lock lock(log_mutex); - cond_flush.notify_one(); + std::unique_lock lock(mutex); + cond.notify_one(); stopped = true; } join(); @@ -427,14 +426,14 @@ OpsLogFile::~OpsLogFile() int OpsLogFile::log_json(struct req_state* s, bufferlist& bl) { - std::unique_lock lock(log_mutex); + std::unique_lock lock(mutex); if (data_size + bl.length() >= max_data_size) { ldout(s->cct, 0) << "ERROR: RGW ops log file buffer too full, dropping log for txn: " << s->trans_id << dendl; return -1; } log_buffer.push_back(bl); data_size += bl.length(); - cond_flush.notify_all(); + cond.notify_all(); return 0; } diff --git a/src/rgw/rgw_log.h b/src/rgw/rgw_log.h index b36771572403c..874f97079c793 100644 --- a/src/rgw/rgw_log.h +++ b/src/rgw/rgw_log.h @@ -165,11 +165,10 @@ public: class OpsLogFile : public JsonOpsLogSink, public Thread, public DoutPrefixProvider { CephContext* cct; - ceph::mutex log_mutex = ceph::make_mutex("OpsLogFile_log"); - ceph::mutex flush_mutex = ceph::make_mutex("OpsLogFile_flush"); + ceph::mutex mutex = ceph::make_mutex("OpsLogFile"); std::vector log_buffer; std::vector flush_buffer; - ceph::condition_variable cond_flush; + ceph::condition_variable cond; std::ofstream file; bool stopped; uint64_t data_size; -- 2.39.5