https://s3.amazonaws.com/clickhouse-test-reports/0/10dc83b7a9c18228c4a4fc0dcfe6b18d2427462e/stress_test__debug__actions_.html

I found weird exception while investigating why ephemeral nodes were not removed for a long time:
https://pastila.nl/?00ec9776/d8858e442f8453f9b9e31a2f1da3cc8b
ZooKeeperRequest(const ZooKeeperRequest &) = default;
    ~ZooKeeperRequest() override;
    virtual OpNum getOpNum() const = 0;
    
    void write(WriteBuffer & out) const;
    std::string toString() const;
    virtual void writeImpl(WriteBuffer &) const = 0;
    virtual void readImpl(ReadBuffer &) = 0;
    virtual std::string toStringImpl() const { return ""; }
    static std::shared_ptr<ZooKeeperRequest> read(ReadBuffer & in);
    virtual ZooKeeperResponsePtr makeResponse() const = 0;
    ZooKeeperResponsePtr setTime(ZooKeeperResponsePtr response) const;
    virtual bool isReadRequest() const = 0;
    virtual void createLogElements(LogElements & elems) const;
};
using ZooKeeperRequestPtr = std::shared_ptr<ZooKeeperRequest>;
struct ZooKeeperHeartbeatRequest final : ZooKeeperRequest
{
    String getPath() const override { return {}; }
    OpNum getOpNum() const override { return OpNum::Heartbeat; }
    void writeImpl(WriteBuffer &) const override {}
    void readImpl(ReadBuffer &) override {}
    ZooKeeperResponsePtr makeResponse() const override;
    bool isReadRequest() const override { return false; }
};
struct ZooKeeperSyncRequest final : ZooKeeperRequest
{
    String path;
    String getPath() const override { return path; }
    OpNum getOpNum() const override { return OpNum::Sync; }