[QFJ-795] "MsgSeqNum too high" should not be an error Created: 13/Jun/14 Updated: 02/Apr/15 Resolved: 18/Jun/14 |
|
Status: | Closed |
Project: | QuickFIX/J |
Component/s: | Engine |
Affects Version/s: | 1.5.3 |
Fix Version/s: | 1.6.0 |
Type: | Bug | Priority: | Default |
Reporter: | Andrzej Hajderek | Assignee: | Christoph John |
Resolution: | Fixed | Votes: | 0 |
Labels: | None |
Attachments: | SessionTest.java.qfj-795 |
Description |
Hi, When QuickFIX/J receives a message with sequence number higher than expected it treats is as an error. For example: <20140613-11:59:37, FIX.4.4:SENDER->TARGET, error> (MsgSeqNum too high, expecting 1 but received 101: 8=FIX.4.49=6635=B34=10149=TARGET52=20140613-11:59:3756=SENDER148=Headline10=005) Not only an error message is logged, but also the internal logic will disconnect the counter-party, if DisconnectOnError=Y. I believe this logic needs to be reviewed. According to the FIX protocol it is not an error to send/receive a message with too high sequence number. A too high sequence number should simply trigger a ResendRequest in order to retrieve the missing messages, which of course QuickFIX/J does. There is a significant difference between receiving a message with too low sequence number and too high sequence number. While the first type of event is an error according to the FIX protocol, the second one isn't. The "MsgSeqNum too high" should be an informational message, or arguably, a warning message - not an error message. Regards, |
Comments |
Comment by Andrzej Hajderek [ 13/Jun/14 ] |
The attached test demonstrates that reception of a message with too high sequence number disconnects the session. The session should not be disconnected because reception of a sequence number that is higher than expected is not an error. It is merely a reason to initiate the resend process. |