]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/LogMonitor: reopen log files on SIGHUP 46124/head
author胡玮文 <huww98@outlook.com>
Tue, 3 May 2022 09:35:48 +0000 (17:35 +0800)
committer胡玮文 <huww98@outlook.com>
Tue, 3 May 2022 09:39:25 +0000 (17:39 +0800)
Fixes: https://tracker.ceph.com/issues/55383
Signed-off-by: 胡玮文 <huww98@outlook.com>
src/mon/LogMonitor.cc
src/mon/LogMonitor.h
src/mon/Monitor.cc

index c196e8429fbe94e279811d374cae0d3de17fea27..80e069d593af0f37132ac58eeaef07a77582b50f 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 ef7a7008129c318c90811fa2aed3b7b5493da4e1..1cc8da3d6614cfb4212f373034dfe157815add01 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();