Uploaded image for project: 'QuickFIX/J'
  1. QuickFIX/J
  2. QFJ-291

Problems with initiator reconnect will block heartbeats on other sessions

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.2.1, 1.3.0, 1.3.1
    • Fix Version/s: 1.3.2
    • Component/s: Engine
    • Labels:
      None

      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

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                ryarran Rhys Yarranton
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: