Skip to content
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

Logout with sequence number mismatch #896

Open
marijadstankovic opened this issue Oct 15, 2024 · 1 comment
Open

Logout with sequence number mismatch #896

marijadstankovic opened this issue Oct 15, 2024 · 1 comment

Comments

@marijadstankovic
Copy link

Hello,
I'm trying to test various scenarios with Login/Logout and one in particular popped up as an issue.
ResetOnLogon and ResetOnLogout are set to false on both Acceptor and Initiator.
And this is the sequence of events:
The Acceptor and Initiator are connected, and seqNums on both sides for both sender and target are 2.
The Acceptor sends 10 messages (new orders for example) but the last two are not received by the Initiator.
Acceptor has NextSenderMsgSeqNum set to 12 for example, but Initiator has NextTargetMsgSeqNum set to 10, so it's missing 2 messages.
Initiator wants to logout (for whatever reason), sends logout message and receives logout message by the Acceptor.
Now, the logout message Acceptor sent has seqNum = 12, and even though that's not what Initiator is expecting, the Initiator just rises the NextTargetMsgSeqNum to 11.
When the Initiator then starts the logon, it sends a logon message, receives a logon response with seqNum = 13.
Since it is expecting 11, it sends the resend request, but from 11 to 0, so it never receives the actual message with seqNum = 10 which ends up lost.

20241015-09:45:15.720 : 8=FIX.4.2�9=75�35=A�34=1�49=INITIATOR�52=20241015-09:45:10.604�56=ACCEPTOR�98=0�108=300�10=171�
20241015-09:45:15.807 : 8=FIX.4.2�9=75�35=A�34=1�49=ACCEPTOR�52=20241015-09:45:15.785�56=INITIATOR�98=0�108=300�10=186�
20241015-09:45:34.333 : 8=FIX.4.2�9=176�35=D�34=2�49=ACCEPTOR�52=20241015-09:45:34.331�56=INITIATOR�11=2024101511453432�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:34.326�76=*NONE*�10=190�
20241015-09:45:34.359 : 8=FIX.4.2�9=176�35=D�34=3�49=ACCEPTOR�52=20241015-09:45:34.333�56=INITIATOR�11=2024101511453433�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:34.333�76=*NONE*�10=192�
20241015-09:45:34.374 : 8=FIX.4.2�9=176�35=D�34=4�49=ACCEPTOR�52=20241015-09:45:34.333�56=INITIATOR�11=2024101511453433�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:34.333�76=*NONE*�10=193�
20241015-09:45:34.382 : 8=FIX.4.2�9=176�35=D�34=5�49=ACCEPTOR�52=20241015-09:45:34.333�56=INITIATOR�11=2024101511453433�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:34.333�76=*NONE*�10=194�
20241015-09:45:34.390 : 8=FIX.4.2�9=176�35=D�34=6�49=ACCEPTOR�52=20241015-09:45:34.333�56=INITIATOR�11=2024101511453433�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:34.333�76=*NONE*�10=195�
20241015-09:45:34.401 : 8=FIX.4.2�9=176�35=D�34=7�49=ACCEPTOR�52=20241015-09:45:34.334�56=INITIATOR�11=2024101511453433�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:34.334�76=*NONE*�10=198�
20241015-09:45:34.409 : 8=FIX.4.2�9=176�35=D�34=8�49=ACCEPTOR�52=20241015-09:45:34.334�56=INITIATOR�11=2024101511453433�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:34.334�76=*NONE*�10=199�
20241015-09:45:34.421 : 8=FIX.4.2�9=176�35=D�34=9�49=ACCEPTOR�52=20241015-09:45:34.334�56=INITIATOR�11=2024101511453433�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:34.334�76=*NONE*�10=200�
20241015-09:46:25.192 : 8=FIX.4.2�9=62�35=5�34=2�49=INITIATOR�52=20241015-09:46:25.180�56=ACCEPTOR�10=089�
20241015-09:46:25.197 : 8=FIX.4.2�9=63�35=5�34=12�49=ACCEPTOR�52=20241015-09:46:25.197�56=INITIATOR�10=147�
20241015-09:47:32.948 : 8=FIX.4.2�9=75�35=A�34=3�49=INITIATOR�52=20241015-09:47:32.874�56=ACCEPTOR�98=0�108=300�10=188�
20241015-09:47:32.963 : 8=FIX.4.2�9=76�35=A�34=13�49=ACCEPTOR�52=20241015-09:47:32.952�56=INITIATOR�98=0�108=300�10=235�
20241015-09:47:33.006 : 8=FIX.4.2�9=72�35=2�34=4�49=INITIATOR�52=20241015-09:47:32.997�56=ACCEPTOR�7=11�16=0�10=020�
20241015-09:47:33.107 : 8=FIX.4.2�9=208�35=D�34=11�43=Y�49=ACCEPTOR�52=20241015-09:47:33.010�56=INITIATOR�122=20241015-09:45:47.315�11=2024101511454731�21=1�22=3�38=1000�40=2�44=100�48=IBM US Equity�54=1�55=IBM�60=20241015-11:45:47.314�76=*NONE*�10=238�
20241015-09:47:41.646 : 8=FIX.4.2�9=106�35=4�34=12�43=Y�49=ACCEPTOR�52=20241015-09:47:33.013�56=INITIATOR�122=20241015-09:47:33.013�36=14�123=Y�10=233�
@gbirchmeier
Copy link
Member

Here's that message flow, stripped down to what's important:

-> (1) Logon
                  <- (1) Logon
                  <- (2) NewOrder
                  <- (3) NewOrder
                  <- (4) NewOrder
                  <- (5) NewOrder
                  <- (6) NewOrder
                  <- (7) NewOrder
                  <- (8) NewOrder
                  <- (9) NewOrder
-> (2) Logout
                  <- (12) Logout
-> (3) Logon
                  <- (13) Logon
-> (4) ResendRequest start/end=11/0
                  <- (11) NewOrder with PossDupFlag=Y
                  <- (12) SequenceReset with PossDupFlag=Y, GapFill=Y, NewSeqNo=14

I'm going to need to dig into the FIX specs to remember what the expected behavior of this sequence should be.

Can you tell me a little more about the origins of this scenario? Is one of these sides a simulator? Which of these sides are a QF/n app?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants