@antonio2368 , after https://github.com/ClickHouse/ClickHouse/pull/36258 and https://github.com/ClickHouse/ClickHouse/issues/35465

I tried to test your --force-recovery implementation and failed, totally

when we try to scale down zookeeper cluster from 3 nodes to 1 nodes we need only one keeper node 
`clickhouse-keeper --force-recovery` can't start properly, cause still wait 2 other nodes, even when have only one node in peer list in XML config

```
 <Information> KeeperDispatcher: Server is recovering, will not apply configuration until recovery is finished
```

> Again, keep in mind that such configuration changes are already possible with the Keeper if there is a quorum by just changing the XML.

I can't to do it inside all other keeper nodes, inside Kubernetes

kubernetes operates pods and containers in declarative manner, I see only one opportunity to use
```yaml
          lifecycle:
            preStop: |
              shell script which will rewrite XML config
```
but it doesn't allow us to change XML configs on other pods during scale down

Moreover, we don't have support `reconfigure add` and `reconfigure remove` zookeeper commands and can't remove Pod from Quorum peer list dynamic

So, it makes --force-recovery useless in Kubernetes ;(

@alesapin maybe you could suggest how to run clickhouse-keeper in Kubernetes with scale down operation support?

else
    {
        LOG_INFO(log, "No config in log store and snapshot, probably it's initial run. Will use config from .xml on disk");
    }
}
void KeeperServer::enterRecoveryMode(nuraft::raft_params & params)
{
    LOG_WARNING(
        log,
        "This instance is in recovery mode. Until the quorum is restored, no requests should be sent to any "
        "of the cluster instances. This instance will start accepting requests only when the recovery is finished.");
    auto latest_config = state_manager->load_config();
    nuraft::ptr<nuraft::cluster_config> new_config = std::make_shared<nuraft::cluster_config>(0, latest_config ? latest_config->get_log_idx() : 0);
    new_config->set_log_idx(state_manager->load_log_store()->next_slot());
    new_config->get_servers() = last_local_config->get_servers();
    state_manager->save_config(*new_config);
    params.with_custom_commit_quorum_size(1);
    params.with_custom_election_quorum_size(1);
}
void KeeperServer::forceRecovery()
{
    
    is_recovering = true;
    std::lock_guard lock{server_write_mutex};
    auto params = raft_instance->get_current_params();
    enterRecoveryMode(params);
    raft_instance->setConfig(state_manager->load_config());
    raft_instance->update_params(params);
}
void KeeperServer::launchRaftServer(bool enable_ipv6)