And waits for them. That's pointless.
ErrorCodes::CANNOT_ASSIGN_ALTER);
            continue;
        }
        else
        {
            throw Coordination::Exception("Alter cannot be assigned because of Zookeeper error", rc);
        }
    }
    table_lock_holder.reset();
    std::vector<String> unwaited;
    if (query_context->getSettingsRef().replication_alter_partitions_sync == 2)
    {
        LOG_DEBUG(log, "Updated shared metadata nodes in ZooKeeper. Waiting for replicas to apply changes.");
        unwaited = waitForAllReplicasToProcessLogEntry(*alter_entry, false);
    }
    else if (query_context->getSettingsRef().replication_alter_partitions_sync == 1)
    {
        LOG_DEBUG(log, "Updated shared metadata nodes in ZooKeeper. Waiting for replicas to apply changes.");
        waitForReplicaToProcessLogEntry(replica_name, *alter_entry);
    }
    if (!unwaited.empty())
        throw Exception("Some replicas doesn't finish metadata alter", ErrorCodes::UNFINISHED);
    if (mutation_znode)
    {
        LOG_DEBUG(log, "Metadata changes applied. Will wait for data changes.");
        waitMutation(*mutation_znode, query_context->getSettingsRef().replication_alter_partitions_sync);
        LOG_DEBUG(log, "Data changes applied.");
    }
}
static String getPartNamePossiblyFake(MergeTreeDataFormatVersion format_version, const MergeTreePartInfo & part_info)