One of our users just killed mutations produced by `ALTER MODIFY` queries on 21 servers. After that new alters on three servers stuck with:
```
Cannot execute alter metadata with version: 8 because another alter 7 must be executed before
```

However, there is no corresponding alter №7 in the replication queue and no undone mutations:
```
select * from system.mutations where is_done = 0
```

However, in the ZooKeeper, we have the correct state of metadata_version:
```
Row 13:
───────
name:           metadata_version
value:          7
czxid:          23078663291
mzxid:          29401964979
ctime:          2020-09-02 17:52:08
mtime:          2020-11-13 00:43:18
version:        7
cversion:       0
aversion:       0
ephemeralOwner: 0
dataLength:     1
numChildren:    0
pzxid:          23078663291
```
`SYSTEM RESTART REPLICA dbname.table_name` solves the issue, but it seems like` KILL MUTATION` in some cases can lead to unfinished alter.
Strings children = zookeeper->getChildren(queue_path);
        auto to_remove_it = std::remove_if(
            children.begin(), children.end(), [&](const String & path)
            {
                return already_loaded_paths.count(path);
            });
        LOG_DEBUG(log, "Having {} queue entries to load, {} entries already loaded.", (to_remove_it - children.begin()), (children.end() - to_remove_it));
        children.erase(to_remove_it, children.end());
        std::sort(children.begin(), children.end());
        zkutil::AsyncResponses<Coordination::GetResponse> futures;
        futures.reserve(children.size());
        for (const String & child : children)
            futures.emplace_back(child, zookeeper->asyncGet(queue_path + "/" + child));
        for (auto & future : futures)
        {
            Coordination::GetResponse res = future.second.get();
            LogEntryPtr entry = LogEntry::parse(res.data, res.stat);
            entry->znode_name = future.first;
            std::lock_guard lock(state_mutex);
            insertUnlocked(entry, min_unprocessed_insert_time_changed, lock);
            updated = true;
        }
        zookeeper->tryGet(replica_path + "/mutation_pointer", mutation_pointer);
    }
    updateTimesInZooKeeper(zookeeper, min_unprocessed_insert_time_changed, {});
    merge_strategy_picker.refreshState();
    LOG_TRACE(log, "Loaded queue");
    return updated;
}
void ReplicatedMergeTreeQueue::insertUnlocked(