Sessions in clickhouse-keeper are local entity for each quorum participant but some information about session are global for the state of keeper: session_ids and corresponding ephemeral nodes. It make sense to send close requests to RAFT during server shutdown so all connected sessions will be closed properly and corresponding ephemeral nodes will be removed from state.

{
    void loadFromConfig(const String & config_elem, const Poco::Util::AbstractConfiguration & config);
};
using CoordinationSettingsPtr = std::shared_ptr<CoordinationSettings>;
struct KeeperConfigurationAndSettings
{
    static constexpr int NOT_EXIST = -1;
    static const String DEFAULT_FOUR_LETTER_WORD_CMD;
    KeeperConfigurationAndSettings();
    int server_id;
    bool enable_ipv6;
    int tcp_port;
    int tcp_port_secure;
    String four_letter_word_allow_list;
    String super_digest;
    bool standalone_keeper;
    CoordinationSettingsPtr coordination_settings;
    String log_storage_path;
    String snapshot_storage_path;
    String state_file_path;
    void dump(WriteBufferFromOwnString & buf) const;
    static std::shared_ptr<KeeperConfigurationAndSettings> loadFromConfig(const Poco::Util::AbstractConfiguration & config, bool standalone_keeper_);
private:
    static String getLogsPathFromConfig(const Poco::Util::AbstractConfiguration & config, bool standalone_keeper_);
    static String getSnapshotsPathFromConfig(const Poco::Util::AbstractConfiguration & config, bool standalone_keeper_);
    static String getStateFilePathFromConfig(const Poco::Util::AbstractConfiguration & config, bool standalone_keeper_);
};
using KeeperConfigurationAndSettingsPtr = std::shared_ptr<KeeperConfigurationAndSettings>;
}