diff options
Diffstat (limited to 'storage')
-rw-r--r-- | storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp b/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp index 14074b65c5c..04bc098efcd 100644 --- a/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp +++ b/storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp @@ -1023,7 +1023,14 @@ FileStorHandlerImpl::Stripe::schedule_and_get_next_async_message(MessageEntry en { std::unique_lock guard(*_lock); _queue->emplace_back(std::move(entry)); - return get_next_async_message(guard); + auto lockedMessage = get_next_async_message(guard); + if ( ! lockedMessage.second) { + if (guard.owns_lock()) { + guard.unlock(); + } + _cond->notify_all(); + } + return lockedMessage; } void |