]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/LogMonitor: reopen log files on SIGHUP 46374/head
author胡玮文 <huww98@outlook.com>
Tue, 3 May 2022 09:35:48 +0000 (17:35 +0800)
committerVikhyat Umrao <vikhyat@redhat.com>
Mon, 23 May 2022 20:13:30 +0000 (13:13 -0700)
Fixes: https://tracker.ceph.com/issues/55383
Signed-off-by: 胡玮文 <huww98@outlook.com>
(cherry picked from commit ee80f9fe766fe765d79051ff59a1bcc94fc1f9e7)

src/mon/LogMonitor.cc
src/mon/LogMonitor.h
src/mon/Monitor.cc

index 9103ddf7c5b5d307e936457a462419e31dfe425f..eb489e5dfc734d55b2b66ea55de5adf800bb5c7f 100644 (file)
@@ -387,6 +387,10 @@ void LogMonitor::log_external(const LogEntry& le)
   }
 
   if (g_conf()->mon_cluster_log_to_file) {
+    if (this->log_rotated.exchange(false)) {
+      this->log_external_close_fds();
+    }
+
     auto p = channel_fds.find(channel);
     int fd;
     if (p == channel_fds.end()) {
index 715f380af6a4ed407ef0b5b8fafa0685fb6423c9..01909264ae3b7f76cd7489b01daa6aa5448cf5e7 100644 (file)
@@ -15,6 +15,7 @@
 #ifndef CEPH_LOGMONITOR_H
 #define CEPH_LOGMONITOR_H
 
+#include <atomic>
 #include <map>
 #include <set>
 
@@ -51,6 +52,7 @@ private:
   std::map<std::string, int> channel_fds;
 
   fmt::memory_buffer file_log_buffer;
+  std::atomic<bool> log_rotated = false;
 
   struct log_channel_info {
 
@@ -167,6 +169,9 @@ private:
   void check_subs();
   void check_sub(Subscription *s);
 
+  void reopen_logs() {
+    this->log_rotated.store(true);
+  }
   void log_external_close_fds();
   void log_external(const LogEntry& le);
   void log_external_backlog();
index d647316e9e5c119b1b83e4c2b1923d932f95e622..ac6d6632c39a3a1399915aaf66b86e9d1d864e8a 100644 (file)
@@ -501,6 +501,7 @@ void Monitor::handle_signal(int signum)
   derr << "*** Got Signal " << sig_str(signum) << " ***" << dendl;
   if (signum == SIGHUP) {
     sighup_handler(signum);
+    logmon()->reopen_logs();
   } else {
     ceph_assert(signum == SIGINT || signum == SIGTERM);
     shutdown();