And waits for them. That's pointless.
const IMergeTreeDataPart & part) const
{
    String best_replica;
    zkutil::ZooKeeperPtr zookeeper = tryGetZooKeeper();
    if (!zookeeper)
        return best_replica;
    String zookeeper_part_node = fs::path(zookeeper_path) / "zero_copy_s3" / "shared" / part.name;
    Strings ids;
    zookeeper->tryGetChildren(zookeeper_part_node, ids);
    Strings replicas;
    for (const auto & id : ids)
    {
        String zookeeper_part_uniq_node = fs::path(zookeeper_part_node) / id;
        Strings id_replicas;
        zookeeper->tryGetChildren(zookeeper_part_uniq_node, id_replicas);
        LOG_TRACE(log, "Found zookeper replicas for {}: {}", zookeeper_part_uniq_node, id_replicas.size());
        replicas.insert(replicas.end(), id_replicas.begin(), id_replicas.end());
    }
    LOG_TRACE(log, "Found zookeper replicas for part {}: {}", part.name, replicas.size());
    Strings active_replicas;
    
    
    active_replicas.reserve(replicas.size());
    for (const String & replica : replicas)
        if ((replica != replica_name) && (zookeeper->exists(fs::path(zookeeper_path) / "replicas" / replica / "is_active")))
            active_replicas.push_back(replica);