I am using EventStore 4.0.3 and EventStore.ClientAPI.NetCore 4.0.2-rc. I experience a weird behavior IMHO.
I start an EventStore node, I connect to it with KeepReconnecting, so I avoid “Object Disposed” error if my unique connection is closed (server down for example).
=> 1) First, is there any better way to manage an always up unique connection? Should I instanciate manually a new connection when connection is closed?
The strange behavior with KeepReconnecting is that if I append events while my connection is down (and then trying reconnection), all AppendToStreamOperation are enqueued but never timeout.
I checked the code, and I saw that “_operations.CheckTimeoutsAndRetry(_connection);” is called only when state is Connected (see TimerTick in EventStoreConnectionLogicHandler). So I understand that when reconnecting, messages enqueues and operations never timeout until connection is up again. If I have a web app, it means every request will block until reconnection, with lots of parallel waiting Task until we raise a max…and then boom, web app down.
=> 2) Isn’t there a potential issue ? Shouldn’t operation timeout if reconnecting takes longer than defined Timeout for operation?
Let me know if I should create an issue on GitHub. Note I checked source code of EventStore.ClientAPI, it looks like it is the same behavior.
Thanks a lot.