diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-01-12 21:25:41 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-01-12 21:25:41 +0000 |
commit | c157618a91a7a8e5ce5cebaeedf6e186918ca73d (patch) | |
tree | aff9731845e50f3fdf8f52f0f0cf4f8eb9cd9ea7 /storage | |
parent | 3807c33ce945cf6a0f87977970a834d9109c6792 (diff) |
Drop the lock before notifying
Diffstat (limited to 'storage')
-rw-r--r-- | storage/src/vespa/storage/persistence/filestorage/filestorhandlerimpl.cpp | 11 |
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; |