From 7af66db1b2b1e44fb2812406f1aafc31d719ac48 Mon Sep 17 00:00:00 2001 From: Nikita Mikhaylov Date: Wed, 5 Feb 2020 15:16:25 +0300 Subject: [PATCH] after review --- dbms/src/Dictionaries/CacheDictionary.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dbms/src/Dictionaries/CacheDictionary.cpp b/dbms/src/Dictionaries/CacheDictionary.cpp index 73d9b4733c..5eb9d24087 100644 --- a/dbms/src/Dictionaries/CacheDictionary.cpp +++ b/dbms/src/Dictionaries/CacheDictionary.cpp @@ -756,7 +756,7 @@ void CacheDictionary::updateThreadFunction() UpdateUnitPtr current_unit_ptr; - while (update_queue.tryPop(current_unit_ptr)) + while (update_request.size() && update_queue.tryPop(current_unit_ptr)) update_request.emplace_back(std::move(current_unit_ptr)); BunchUpdateUnit bunch_update_unit(update_request); @@ -793,7 +793,7 @@ void CacheDictionary::waitForCurrentUpdateFinish(UpdateUnitPtr & update_unit_ptr std::unique_lock lock(update_mutex); const auto sleeping_result = is_update_finished.wait_for( lock, - std::chrono::minutes(each_update_finish_timeout_seconds), + std::chrono::seconds(each_update_finish_timeout_seconds), [&] {return update_unit_ptr->is_done || update_unit_ptr->current_exception; }); if (!sleeping_result) @@ -806,8 +806,10 @@ void CacheDictionary::waitForCurrentUpdateFinish(UpdateUnitPtr & update_unit_ptr void CacheDictionary::tryPushToUpdateQueueOrThrow(UpdateUnitPtr & update_unit_ptr) const { if (!update_queue.tryPush(update_unit_ptr, update_queue_push_timeout_milliseconds)) - throw DB::Exception("Cannot push to internal update queue. Current queue size is " + - std::to_string(update_queue.size()), ErrorCodes::CACHE_DICTIONARY_UPDATE_FAIL); + throw DB::Exception( + "Cannot push to internal update queue in dictionary " + getFullName() + ". Timelimit of " + + std::to_string(update_queue_push_timeout_milliseconds) + " ms. exceeded. Current queue size is " + + std::to_string(update_queue.size()), ErrorCodes::CACHE_DICTIONARY_UPDATE_FAIL); } void CacheDictionary::update(BunchUpdateUnit & bunch_update_unit) const -- GitLab