From: Casey Bodley Date: Mon, 25 Apr 2022 17:40:19 +0000 (-0400) Subject: rgw: remove unnecessary OpsLogFile::flush_mutex X-Git-Tag: v16.2.11~517^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5e6c5bcaaf9c1e793a6cea0a207fad21e6034d8d;p=ceph.git 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) --- diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc index 8d53909eacad..59f2ed64dfc3 100644 --- a/src/rgw/rgw_log.cc +++ b/src/rgw/rgw_log.cc @@ -347,9 +347,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; @@ -377,7 +376,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(); @@ -385,7 +384,7 @@ void* OpsLogFile::entry() { lock.lock(); continue; } - cond_flush.wait(lock); + cond.wait(lock); } flush(); return NULL; @@ -398,8 +397,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(); @@ -415,14 +414,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 5f5951f9e243..e42bbf503552 100644 --- a/src/rgw/rgw_log.h +++ b/src/rgw/rgw_log.h @@ -163,11 +163,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;