Hello,
we are experiencing a similar situation as the one mentioned on this thread https://community.developers.refinitiv.com/questions/43780/an-established-connection-was-aborted-by-the-softw.html.
We have attempted horizontal scaling, as shown in this example https://github.com/Refinitiv/Real-Time-SDK/blob/master/Cpp-C/Ema/Examples/Training/Consumer/400_Series/410_MP_HorizontalScaling/Consumer.cpp.
However, we are still hitting the connection lost issue.
To further isolate the cause of the problem, we need to understand whether there still exists a risk
of an internal buffer ending up full.
For example, each consumer thread issues this call https://github.com/Refinitiv/Real-Time-SDK/blob/master/Cpp-C/Ema/Examples/Training/Consumer/400_Series/410_MP_HorizontalScaling/ConsumerManager.cpp#L38.
In the dispatch method, we see that there is a specified time budget for several things to happen.
That is, part of the time budget is spent on reading data from a pipe (?), and the remaining time is
spent on executing all kinds of functors that are wrapped in `TimeOut` objects. If our understanding
is correct, then these functors should be responsible for calling the `ConsumerClient::onUpdateMsg` and
similar virtual methods.
If this is the case and our understanding matches what is actually happening in the engine, then
what is the likeliest cause of our trouble?
Can it be that an internal buffer still reaching maximum capacity because we exceed the timeout budget too many times?