From: Levi Tamasi Date: Fri, 8 Dec 2023 18:34:07 +0000 (-0800) Subject: Turn the default Timer in PeriodicTaskScheduler into a leaky Meyers singleton (#12128) X-Git-Tag: v8.9.1~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b8d41c55e79f00bec70670a08a162f374dd9f2d8;p=rocksdb.git Turn the default Timer in PeriodicTaskScheduler into a leaky Meyers singleton (#12128) 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 --- diff --git a/db/periodic_task_scheduler.cc b/db/periodic_task_scheduler.cc index 1306f45da..1c4fc16b1 100644 --- a/db/periodic_task_scheduler.cc +++ b/db/periodic_task_scheduler.cc @@ -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 index 000000000..2a70b6b31 --- /dev/null +++ b/unreleased_history/bug_fixes/avoid_destroying_timer.md @@ -0,0 +1 @@ +Avoid destroying the periodic task scheduler's default timer in order to prevent static destruction order issues.