quickfixj
quickfixj copied to clipboard
Enabling a previously disabled session might lead to message loss
Describe the bug
When a session is disabled (i.e. after calling logout()) it will no longer get reset as defined by its SessionSchedule. This is because next() returns early when a session is disabled:
https://github.com/quickfix-j/quickfixj/blob/f8ba074829c5e362e5caf1820804be878d02b63d/quickfixj-core/src/main/java/quickfix/Session.java#L1952-L1963
To Reproduce
Will try to create a unit test in due course.
Manual steps:
- have a session that is disabled and has not been used at the current day (i.e. there was no established session for that day)
- send messages to that Session via
sendToTarget()- the messages will end up in the Session's message store. - establish a connection to the session
- based on QFJ's internal timer, the
next()method will be called within a second and a reset will be done, effectively removing the Sessions's message store
Expected behavior
Session should get reset based on its schedule even when it is disabled.