And waits for them. That's pointless.
*/
    bool waiting_itself = replica == replica_name;
    const auto & stop_waiting = [&]()
    {
        bool stop_waiting_itself = waiting_itself && (partial_shutdown_called || is_dropped);
        bool stop_waiting_non_active = !wait_for_non_active && !getZooKeeper()->exists(fs::path(table_zookeeper_path) / "replicas" / replica / "is_active");
        return stop_waiting_itself || stop_waiting_non_active;
    };
    
    constexpr auto event_wait_timeout_ms = 3000;
    if (startsWith(entry.znode_name, "log-"))
    {
        
        UInt64 log_index = parse<UInt64>(entry.znode_name.substr(entry.znode_name.size() - 10));
        log_node_name = entry.znode_name;
        LOG_DEBUG(log, "Waiting for {} to pull {} to queue", replica, log_node_name);
        
        while (!stop_waiting())
        {
            zkutil::EventPtr event = std::make_shared<Poco::Event>();
            String log_pointer = getZooKeeper()->get(fs::path(table_zookeeper_path) / "replicas" / replica / "log_pointer", nullptr, event);
            if (!log_pointer.empty() && parse<UInt64>(log_pointer) > log_index)
                break;
            
            
            
            
            event->tryWait(event_wait_timeout_ms);
        }
    }