typo in io/Cursor.h
[folly.git] / folly / Singleton-inl.h
index 2e69d90e2d9a0673bbaac750b6ada2999c7078eb..762a9ec57376089e6804e0f543f8e195f2a7f125 100644 (file)
@@ -155,8 +155,8 @@ void SingletonHolder<T>::destroyInstance() {
   instance_copy_.reset();
   if (destroy_baton_) {
     constexpr std::chrono::seconds kDestroyWaitTime{5};
-    auto last_reference_released = destroy_baton_->timed_wait(
-        std::chrono::steady_clock::now() + kDestroyWaitTime);
+    auto last_reference_released =
+        destroy_baton_->try_wait_for(kDestroyWaitTime);
     if (last_reference_released) {
       teardown_(instance_ptr_);
     } else {
@@ -238,8 +238,12 @@ void SingletonHolder<T>::createInstance() {
       stack_trace = "Stack trace:\n" + stack_trace;
     }
 
-    LOG(DFATAL) << "Singleton " << type().name() << " requested before "
-                << "registrationComplete() call. " << stack_trace;
+    LOG(FATAL) << "Singleton " << type().name() << " requested before "
+               << "registrationComplete() call.\n"
+               << "This usually means that either main() never called "
+               << "folly::init, or singleton was requested before main() "
+               << "(which is not allowed).\n"
+               << stack_trace;
   }
   if (state->state == SingletonVault::SingletonVaultState::Quiescing) {
     return;
@@ -292,6 +296,6 @@ void SingletonHolder<T>::createInstance() {
   vault_.creationOrder_.wlock()->push_back(type());
 }
 
-}
+} // namespace detail
 
-}
+} // namespace folly