diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-14 10:00:53 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-10-14 10:00:53 +0000 |
commit | 24dd0d9445e072fe3de5c146b92f75605e140da9 (patch) | |
tree | 985846690a2c7d632a403ce6a1e848fe97089d20 /storage | |
parent | 8039539c2717ef46c58060533eab5019d1b2a72e (diff) |
Drain all messages on flush to avoid the odd signaling on every message.
Diffstat (limited to 'storage')
-rw-r--r-- | storage/src/vespa/storage/persistence/persistencethread.cpp | 16 | ||||
-rw-r--r-- | storage/src/vespa/storage/persistence/persistencethread.h | 2 |
2 files changed, 4 insertions, 14 deletions
diff --git a/storage/src/vespa/storage/persistence/persistencethread.cpp b/storage/src/vespa/storage/persistence/persistencethread.cpp index 0050ec0012d..d23e329ed28 100644 --- a/storage/src/vespa/storage/persistence/persistencethread.cpp +++ b/storage/src/vespa/storage/persistence/persistencethread.cpp @@ -12,6 +12,7 @@ #include <vespa/vespalib/util/exceptions.h> #include <vespa/vespalib/util/isequencedtaskexecutor.h> #include <vespa/vespalib/stllike/hash_map.hpp> +#include <thread> #include <vespa/log/log.h> LOG_SETUP(".persistence.thread"); @@ -106,9 +107,7 @@ PersistenceThread::PersistenceThread(vespalib::ISequencedTaskExecutor * sequence _spi(provider), _processAllHandler(_env, provider), _mergeHandler(_spi, _env), - _bucketOwnershipNotifier(), - _flushMonitor(), - _closed(false) + _bucketOwnershipNotifier() { std::ostringstream threadName; threadName << "Disk " << _env._partition << " thread " << _stripeId; @@ -950,22 +949,15 @@ PersistenceThread::run(framework::ThreadHandle& thread) if (lock.first) { processLockedMessage(std::move(lock)); } - - vespalib::MonitorGuard flushMonitorGuard(_flushMonitor); - flushMonitorGuard.broadcast(); } LOG(debug, "Closing down persistence thread"); - vespalib::MonitorGuard flushMonitorGuard(_flushMonitor); - _closed = true; - flushMonitorGuard.broadcast(); } void PersistenceThread::flush() { - vespalib::MonitorGuard flushMonitorGuard(_flushMonitor); - if (!_closed) { - flushMonitorGuard.wait(); + while (_env._fileStorHandler.getQueueSize() != 0) { + std::this_thread::sleep_for(1ms); } } diff --git a/storage/src/vespa/storage/persistence/persistencethread.h b/storage/src/vespa/storage/persistence/persistencethread.h index 32387bc6826..ddc1a0ac217 100644 --- a/storage/src/vespa/storage/persistence/persistencethread.h +++ b/storage/src/vespa/storage/persistence/persistencethread.h @@ -56,8 +56,6 @@ private: ServiceLayerComponent::UP _component; framework::Thread::UP _thread; std::unique_ptr<BucketOwnershipNotifier> _bucketOwnershipNotifier; - vespalib::Monitor _flushMonitor; - bool _closed; bool checkProviderBucketInfoMatches(const spi::Bucket&, const api::BucketInfo&) const; |