[QFJ-412] DynamicAcceptorSessionProvider does not correctly handle disconnected clients Created: 10/Mar/09 Updated: 15/Nov/12 Resolved: 14/Mar/09 |
|
Status: | Closed |
Project: | QuickFIX/J |
Component/s: | Engine |
Affects Version/s: | 1.3.3 |
Fix Version/s: | 1.5.0 |
Type: | Bug | Priority: | Default |
Reporter: | Toli Kuznets | Assignee: | Toli Kuznets |
Resolution: | Fixed | Votes: | 0 |
Labels: | None |
Attachments: | qfj-412-examples-repro.patch qfj-412.patch |
Description |
The existing implementation of DynamicAcceptorSessionProvider does not correctly handle the case where a client disconnects due to network failure - the DynamicAcceptorSessionProvider never detects the disconnect, and the connection appears to still be "active" and the Session is never removed. The DynamicAcceptorSessionProvider is setup to accept all incoming connections (based on a specified template). Currently, a new session is created and added to the sessions list, but if you are running a SingleThreadedEventHandlingStrategy the new session is never added to the list of sessions for the SessionConnector. The solution is to have the SessionConnector be available to the DynamicAcceptorSessionProvider class, and to add the session to the list of sessions at creation. You can reproduce this by changing the Executor example to use the DynamicAcceptorSessionProvider, and then connecting to it via Banzai from a different machine. |
Comments |
Comment by Toli Kuznets [ 10/Mar/09 ] |
patch with changes to fix this bug |
Comment by Toli Kuznets [ 10/Mar/09 ] |
Temp changes to example Executor to reproduce this problem |
Comment by Toli Kuznets [ 14/Mar/09 ] |
fix checked in rev 919 |