mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 23:52:03 +00:00
fix too strict assertion
This commit is contained in:
parent
778416f576
commit
e8b7f963b7
@ -350,6 +350,12 @@ void DDLWorker::scheduleTasks(bool reinitialized)
|
|||||||
bool maybe_concurrently_deleting = task && !zookeeper->exists(fs::path(task->entry_path) / "active");
|
bool maybe_concurrently_deleting = task && !zookeeper->exists(fs::path(task->entry_path) / "active");
|
||||||
return task && !maybe_concurrently_deleting && !maybe_currently_processing;
|
return task && !maybe_concurrently_deleting && !maybe_currently_processing;
|
||||||
}
|
}
|
||||||
|
else if (last_skipped_entry_name.has_value() && !queue_fully_loaded_after_initialization_debug_helper)
|
||||||
|
{
|
||||||
|
/// If connection was lost during queue loading
|
||||||
|
/// we may start processing from finished task (because we don't know yet that it's finished) and it's ok.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/// Return true if entry should not be scheduled.
|
/// Return true if entry should not be scheduled.
|
||||||
@ -365,7 +371,11 @@ void DDLWorker::scheduleTasks(bool reinitialized)
|
|||||||
|
|
||||||
String reason;
|
String reason;
|
||||||
auto task = initAndCheckTask(entry_name, reason, zookeeper);
|
auto task = initAndCheckTask(entry_name, reason, zookeeper);
|
||||||
if (!task)
|
if (task)
|
||||||
|
{
|
||||||
|
queue_fully_loaded_after_initialization_debug_helper = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
LOG_DEBUG(log, "Will not execute task {}: {}", entry_name, reason);
|
LOG_DEBUG(log, "Will not execute task {}: {}", entry_name, reason);
|
||||||
updateMaxDDLEntryID(entry_name);
|
updateMaxDDLEntryID(entry_name);
|
||||||
|
@ -131,6 +131,9 @@ protected:
|
|||||||
std::optional<String> first_failed_task_name;
|
std::optional<String> first_failed_task_name;
|
||||||
std::list<DDLTaskPtr> current_tasks;
|
std::list<DDLTaskPtr> current_tasks;
|
||||||
|
|
||||||
|
/// This flag is needed for debug assertions only
|
||||||
|
bool queue_fully_loaded_after_initialization_debug_helper = false;
|
||||||
|
|
||||||
Coordination::Stat queue_node_stat;
|
Coordination::Stat queue_node_stat;
|
||||||
std::shared_ptr<Poco::Event> queue_updated_event = std::make_shared<Poco::Event>();
|
std::shared_ptr<Poco::Event> queue_updated_event = std::make_shared<Poco::Event>();
|
||||||
std::shared_ptr<Poco::Event> cleanup_event = std::make_shared<Poco::Event>();
|
std::shared_ptr<Poco::Event> cleanup_event = std::make_shared<Poco::Event>();
|
||||||
|
Loading…
Reference in New Issue
Block a user