From c77edb8d15e8fb9b17cdbd5af0db789cb2112c03 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 (cherry picked from commit 279d664f8b25d2eeafac0b5d60e532dbcf56218f) --- 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 a140c42a0944c..4631697724cb1 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -350,9 +350,8 @@ OpsLogFile::OpsLogFile(CephContext* cct, std::string& path, uint64_t max_data_si 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; @@ -380,7 +379,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(); @@ -388,7 +387,7 @@ void* OpsLogFile::entry() { lock.lock(); continue; } - cond_flush.wait(lock); + cond.wait(lock); } flush(); return NULL; @@ -401,8 +400,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(); @@ -418,14 +417,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 3495ef086290d..7bcb62b18579c 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