Details
Description
The session timer and initiator reconnect tasks run on the same single threaded executor (SessionConnector.scheduledExecutorService). As a result, if there is a problem reconnecting on one session, it will block the heartbeat on other sessions, leading to test requests from the counterparties and, if bad enough, disconnects. We have seen this scenario in production twice and view it as serious. Other similar scenarios are possible.
Suggested fix is to switch to an unbounded pool, i.e.,
scheduledExecutorService = Executors.newScheduledThreadPool(1, new QFTimerThreadFactory());
(There is no obvious reason the tasks cannot execute in parallel.)
Attachments
Issue Links
- is related to
-
QFJ-555 Problems with heartbeating in one session can obstruct heartbeating on other sessions
- Open