summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp b/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp
index 402beef0f11..967f6b6e195 100644
--- a/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp
+++ b/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp
@@ -1101,9 +1101,11 @@ FileStorHandlerImpl::Stripe::abort(std::vector<std::shared_ptr<api::StorageReply
bool
FileStorHandlerImpl::Stripe::schedule(MessageEntry messageEntry)
{
- std::lock_guard guard(*_lock);
- _queue->emplace_back(std::move(messageEntry));
- update_cached_queue_size(guard);
+ {
+ std::lock_guard guard(*_lock);
+ _queue->emplace_back(std::move(messageEntry));
+ update_cached_queue_size(guard);
+ }
_cond->notify_one();
return true;
}
@@ -1116,6 +1118,9 @@ FileStorHandlerImpl::Stripe::schedule_and_get_next_async_message(MessageEntry en
update_cached_queue_size(guard);
auto lockedMessage = get_next_async_message(guard);
if ( ! lockedMessage.msg) {
+ if (guard.owns_lock()) {
+ guard.unlock();
+ }
_cond->notify_one();
}
return lockedMessage;