When Artio receives a message that is larger than the receiver buffer, it waits for the full message to become available, while at the same time it stops reading any further data because the receiver buffer is full.
This leads to TCP backpressure and, later, the session gets disconnected because of heartbeat time-out: Artio ends up sending a TestRequest, for which it will never be able to receive an answer as it stopped processing/reading incoming messages.
Althought this can be worked aroung by increasing the receiver buffer size using -Dfix.core.receiver_buffer_size=..., Artio doesn't handle such situation gracefully (it doesn't even detect that condition) and this is what this issue is about.
When Artio receives a message that is larger than the receiver buffer, it waits for the full message to become available, while at the same time it stops reading any further data because the receiver buffer is full.
This leads to TCP backpressure and, later, the session gets disconnected because of heartbeat time-out: Artio ends up sending a TestRequest, for which it will never be able to receive an answer as it stopped processing/reading incoming messages.
Althought this can be worked aroung by increasing the receiver buffer size using
-Dfix.core.receiver_buffer_size=...
, Artio doesn't handle such situation gracefully (it doesn't even detect that condition) and this is what this issue is about.