And waits for them. That's pointless.
if (ops.size() > zkutil::MULTI_BATCH_SIZE)
            {
                
                zookeeper->multi(ops);
                ops.clear();
            }
        }
        if (auto txn = query_context->getZooKeeperMetadataTransaction())
            txn->moveOpsTo(ops);
        delimiting_block_lock->getUnlockOps(ops);
        
        ops.emplace_back(zkutil::makeCheckRequest(alter_partition_version_path, alter_partition_version_stat.version));
        ops.emplace_back(zkutil::makeSetRequest(alter_partition_version_path, "", -1));
        
        ops.emplace_back(zkutil::makeSetRequest(fs::path(zookeeper_path) / "log", "", -1));
        ops.emplace_back(zkutil::makeCreateRequest(fs::path(zookeeper_path) / "log/log-", entry.toString(), zkutil::CreateMode::PersistentSequential));
        Transaction transaction(*this);
        {
            auto data_parts_lock = lockParts();
            for (MutableDataPartPtr & part : dst_parts)
                renameTempPartAndReplace(part, nullptr, &transaction, data_parts_lock);
        }
        Coordination::Error code = zookeeper->tryMulti(ops, op_results);
        if (code == Coordination::Error::ZOK)
            delimiting_block_lock->assumeUnlocked();
        else if (code == Coordination::Error::ZBADVERSION)
            throw Exception(ErrorCodes::CANNOT_ASSIGN_ALTER, "Cannot assign ALTER PARTITION, because another ALTER PARTITION query was concurrently executed");
        else
            zkutil::KeeperMultiException::check(code, ops, op_results);
        {