aboutsummaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-10-14 10:00:53 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-10-14 10:00:53 +0000
commit24dd0d9445e072fe3de5c146b92f75605e140da9 (patch)
tree985846690a2c7d632a403ce6a1e848fe97089d20 /storage
parent8039539c2717ef46c58060533eab5019d1b2a72e (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.cpp16
-rw-r--r--storage/src/vespa/storage/persistence/persistencethread.h2
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;