diff --git a/redis/src/storages/redis/impl/standalone_topology_holder.cpp b/redis/src/storages/redis/impl/standalone_topology_holder.cpp index 284e8b3c8933..fb689780793e 100644 --- a/redis/src/storages/redis/impl/standalone_topology_holder.cpp +++ b/redis/src/storages/redis/impl/standalone_topology_holder.cpp @@ -21,6 +21,7 @@ StandaloneTopologyHolder::StandaloneTopologyHolder( create_node_watch_(ev_thread_, [this] { // NOLINTNEXTLINE(clang-analyzer-cplusplus.NewDelete) CreateNode(); + create_node_watch_.Start(); }) { LOG_DEBUG() << "Created StandaloneTopologyHolder with " << conn.host << ":" << conn.port; } @@ -177,6 +178,8 @@ void StandaloneTopologyHolder::CreateNode() { return; } topology_holder->GetSignalNodeStateChanged()(host_port, state); + { std::lock_guard lock{topology_holder->mutex_}; } + topology_holder->cv_.NotifyAll(); }); NodesStorage nodes; @@ -194,7 +197,6 @@ void StandaloneTopologyHolder::CreateNode() { } signal_topology_changed_(1); - cv_.NotifyAll(); } void StandaloneTopologyHolder::UpdatePassword(const Password& password) {