-
Notifications
You must be signed in to change notification settings - Fork 564
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incorrect handling of SequenceRest Gap Fill Message #309
Comments
We have same issue, :( |
Here is all msg from server 2015/05/27 17:49:07:836: FIXPump: FIX session established on connection: QECAP 2015/05/27 17:49:07:913: FIXPump: Received data on connection {QECAP} [8=FIX.4.4^A9=108^A35=4^A34=4026^A43=Y^A49=...^A52=20150527-09:49:03.971^A56=...^A122=20150527-09:49:03.971^A36=4035^A123=Y^A10=052^A] |
message log client side: 20150527-09:45:37.052 : 8=FIX.4.4�9=91�35=0�34=4025�49=Client�52=20150527-09:45:37.052�56=Server�112=Appia-20150527-09:45:40�10=160� |
20150527-09:45:37.052 : 8=FIX.4.4�9=91�35=0�34=4025�49=Client�52=20150527-09:45:37.052�56=Server�112=Appia-20150527-09:45:40�10=160� —Reply to this email directly or view it on GitHub. |
After 2-3 request reset msg: the initator store.get() return list msg with count = 0. We dont know why, and try to re-make this case again. |
Original report is from a while ago but I have recreated this issue. Basically as OP states the GapFill=Y causes the SequenceReset Verify call to fail: Below the ResendRequest was for 17907 to 0 (last seen message was 19102), Next expected Sequence number is therefore 19103. The last 4 messages of the resend are (trade info redacted): 19103 was an admin message so gap fill sent to cover and set next seq num to 19104 Next msg (19104) received Due to fault in Session.Verify for SequenceReset messages, NewSeqNo will not be set (from SequenceReset message above), and a new ResendRequest is generated. The next SequenceReset message received will actually have the next expected msgseqnum (19103 in this case) and Session.Verify will return true at which point then the NewSeqNo(36) will be acted upon. The problem I have is that with very heavy message flow, once the first resend is satisfied, the Sender then continues to send stored up messages at which point it then recieves the second ResendRequest (generated in error) and causes a large cycle of resends which can kill the connection. I will create a PR if I can rationalise a fix |
recieving a SequenceReset with GapFill=Y Reversing logic allows the GapFill to be applied during message resend. Discussion: connamara#309 (comment)
Reverse logic for testing TooLow and TooHigh when recieving a SequenceReset with GapFill=Y Reversing logic allows the GapFill to be applied during message resend. Discussion: connamara#309 (comment)
Hi All,
While performing a message recovery operation in chunks of 2500 messages per resend request,
drop copy gap fills the administrative messages.
Assuming sending "resend request’s” from 10260 till 36264.
1st resend request 10260 till 12759
2nd resend request 12760 till 15259
3rd resend request 15260 till 17759
4th resend request 17760 till 20259
And so on……
While responding the 3rd resend request,
the counter party sends the SequenceReset as there was a gap fill for administrative messages.
However the NewSequence number in that SequenceReset is 36265 (that is actually greater than 3rd resend request end sequence no 17759).
Please advice.
The text was updated successfully, but these errors were encountered: