]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commitdiff
Turn the default Timer in PeriodicTaskScheduler into a leaky Meyers singleton (#12128)
authorLevi Tamasi <ltamasi@meta.com>
Fri, 8 Dec 2023 18:34:07 +0000 (10:34 -0800)
committerLevi Tamasi <ltamasi@fb.com>
Fri, 8 Dec 2023 20:38:07 +0000 (12:38 -0800)
Summary:
Pull Request resolved: https://github.com/facebook/rocksdb/pull/12128

The patch turns the `Timer` Meyers singleton in `PeriodicTaskScheduler::Default()` into one of the leaky variety in order to prevent static destruction order issues.

Reviewed By: akankshamahajan15

Differential Revision: D51963950

fbshipit-source-id: 0fc34113ad03c51fdc83bdb8c2cfb6c9f6913948

db/periodic_task_scheduler.cc
unreleased_history/bug_fixes/avoid_destroying_timer.md [new file with mode: 0644]

index 1306f45da65bba7e872efe7588f7a52663f1efdd..1c4fc16b1c8bcd29fc5e6b23d18bf541f70db26f 100644 (file)
@@ -94,7 +94,7 @@ Status PeriodicTaskScheduler::Unregister(PeriodicTaskType task_type) {
 }
 
 Timer* PeriodicTaskScheduler::Default() {
-  static Timer timer(SystemClock::Default().get());
+  STATIC_AVOID_DESTRUCTION(Timer, timer)(SystemClock::Default().get());
   return &timer;
 }
 
@@ -108,4 +108,3 @@ void PeriodicTaskScheduler::TEST_OverrideTimer(SystemClock* clock) {
 #endif  // NDEBUG
 
 }  // namespace ROCKSDB_NAMESPACE
-
diff --git a/unreleased_history/bug_fixes/avoid_destroying_timer.md b/unreleased_history/bug_fixes/avoid_destroying_timer.md
new file mode 100644 (file)
index 0000000..2a70b6b
--- /dev/null
@@ -0,0 +1 @@
+Avoid destroying the periodic task scheduler's default timer in order to prevent static destruction order issues.