Skip to content

Commit 02ec3a1

Browse files
Merge pull request ClickHouse#88256 from ClickHouse/backport/25.8/88153
Backport ClickHouse#88153 to 25.8: Fix redundant host resolution in DDL Worker
2 parents c346ce9 + b25dc06 commit 02ec3a1

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

src/Interpreters/DDLWorker.cpp

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,6 +1139,7 @@ bool DDLWorker::initializeMainThread()
11391139
auto zookeeper = getAndSetZooKeeper();
11401140
zookeeper->createAncestors(fs::path(queue_dir) / "");
11411141
initializeReplication();
1142+
markReplicasActive(true);
11421143
initialized = true;
11431144
return true;
11441145
}
@@ -1211,14 +1212,6 @@ void DDLWorker::runMainThread()
12111212
}
12121213

12131214
cleanup_event->set();
1214-
try
1215-
{
1216-
markReplicasActive(reinitialized);
1217-
}
1218-
catch (...)
1219-
{
1220-
tryLogCurrentException(log, "An error occurred when markReplicasActive: ");
1221-
}
12221215
scheduleTasks(reinitialized);
12231216
subsequent_errors_count = 0;
12241217

@@ -1297,24 +1290,21 @@ void DDLWorker::createReplicaDirs(const ZooKeeperPtr & zookeeper, const NameSet
12971290
zookeeper->createAncestors(fs::path(replicas_dir) / host_id / "");
12981291
}
12991292

1300-
void DDLWorker::markReplicasActive(bool reinitialized)
1293+
void DDLWorker::markReplicasActive(bool /*reinitialized*/)
13011294
{
13021295
auto zookeeper = getZooKeeper();
13031296

1304-
if (reinitialized)
1297+
// Reset all active_node_holders
1298+
for (auto & it : active_node_holders)
13051299
{
1306-
// Reset all active_node_holders
1307-
for (auto & it : active_node_holders)
1308-
{
1309-
auto & active_node_holder = it.second.second;
1310-
if (active_node_holder)
1311-
active_node_holder->setAlreadyRemoved();
1312-
active_node_holder.reset();
1313-
}
1314-
1315-
active_node_holders.clear();
1300+
auto & active_node_holder = it.second.second;
1301+
if (active_node_holder)
1302+
active_node_holder->setAlreadyRemoved();
1303+
active_node_holder.reset();
13161304
}
13171305

1306+
active_node_holders.clear();
1307+
13181308
for (auto it = active_node_holders.begin(); it != active_node_holders.end();)
13191309
{
13201310
auto & zk = it->second.first;
@@ -1394,7 +1384,12 @@ void DDLWorker::markReplicasActive(bool reinitialized)
13941384
{
13951385
zookeeper->deleteEphemeralNodeIfContentMatches(active_path, active_id);
13961386
}
1397-
zookeeper->create(active_path, active_id, zkutil::CreateMode::Ephemeral);
1387+
Coordination::Requests ops;
1388+
ops.emplace_back(zkutil::makeCreateRequest(active_path, active_id, zkutil::CreateMode::Ephemeral));
1389+
/// To bump node mtime
1390+
ops.emplace_back(zkutil::makeSetRequest(fs::path(replicas_dir) / host_id, "", -1));
1391+
zookeeper->multi(ops);
1392+
13981393
auto active_node_holder_zookeeper = zookeeper;
13991394
auto active_node_holder = zkutil::EphemeralNodeHolder::existing(active_path, *active_node_holder_zookeeper);
14001395
active_node_holders[host_id] = {active_node_holder_zookeeper, active_node_holder};

0 commit comments

Comments
 (0)