diff --git a/dbms/src/Interpreters/Dictionaries.cpp b/dbms/src/Interpreters/Dictionaries.cpp index ee83289af47..bf8b38da787 100644 --- a/dbms/src/Interpreters/Dictionaries.cpp +++ b/dbms/src/Interpreters/Dictionaries.cpp @@ -3,6 +3,7 @@ #include #include #include +#include namespace DB { @@ -125,6 +126,12 @@ void Dictionaries::reloadExternals() if (std::chrono::system_clock::now() < update_time) continue; + scope_exit({ + /// calculate next update time + std::uniform_int_distribution distribution{lifetime.min_sec, lifetime.max_sec}; + update_time = std::chrono::system_clock::now() + std::chrono::seconds{distribution(rnd_engine)}; + }); + /// check source modified if (current->getSource()->isModified()) { @@ -132,10 +139,6 @@ void Dictionaries::reloadExternals() auto new_version = current->clone(); dictionary.second->set(new_version.release()); } - - /// calculate next update time - std::uniform_int_distribution distribution{lifetime.min_sec, lifetime.max_sec}; - update_time = std::chrono::system_clock::now() + std::chrono::seconds{distribution(rnd_engine)}; } } catch (...)