]> git-server-git.apps.pok.os.sepia.ceph.com Git - rocksdb.git/commitdiff
~SleepingBackgroundTask() to wake up the sleeping task (#11036)
authorsdong <siying.d@fb.com>
Wed, 14 Dec 2022 20:06:24 +0000 (12:06 -0800)
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
Wed, 14 Dec 2022 20:06:24 +0000 (12:06 -0800)
Summary:
Right now, in unit tests, when background tests are sleeping using SleepingBackgroundTask, and the test exits with test assertion failure, the process will hang and it might prevent us to see the test failure message in CI runs. Try to wake up the thread so that the test can exit correctly.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/11036

Test Plan: Watch CI succeeds

Reviewed By: riversand963

Differential Revision: D42020489

fbshipit-source-id: 5b8441b18d5f67bbb3ade59a1225a8d3c860c2eb

test_util/testutil.h

index 1f43156ab36e1e63579665d486ea544c34153ec6..c2289dd819f30b2fee315ba4625baec35982d39b 100644 (file)
@@ -363,6 +363,16 @@ class SleepingBackgroundTask {
         done_with_sleep_(false),
         sleeping_(false) {}
 
+  ~SleepingBackgroundTask() {
+    MutexLock l(&mutex_);
+    should_sleep_ = false;
+    while (sleeping_) {
+      assert(!should_sleep_);
+      bg_cv_.SignalAll();
+      bg_cv_.Wait();
+    }
+  }
+
   bool IsSleeping() {
     MutexLock l(&mutex_);
     return sleeping_;