Imported from previous forum
Hi,
We are making order router and exchange simulator.Order router pass FIX messages to Exchange simulator.But when Exchange simulator means our acceptor is closed nongracefully than initiator gets message of telecommunication link error.after that i start acceptor again and at that time initiator tries to connect to acceptor but after immediatly i got message “The incoming message has a sequence number (1) less than expected (2) and the PossDupFlag is not set. This indicates a serious error.”.and session was destroyed. Engine statastics saw 2 acceptors.Is this a main problem?
what is the solution of this problem?
How will i recover order messages from acceptors after connecting again?
How will i set possDupFlag in logon message?
Thx in advance.
Plz help me.
Kardam,
Hi, We are making order router and exchange simulator.Order router pass
FIX messages to Exchange simulator.But when Exchange simulator means our
acceptor is closed nongracefully than initiator gets message of
telecommunication link error.after that i start acceptor again and at
that time initiator tries to connect to acceptor but after immediatly i
got message “The incoming message has a sequence number (1) less than
expected (2) and the PossDupFlag is not set. This indicates a serious
error.”.and session was destroyed. Engine statastics saw 2 acceptors.Is
this a main problem?
Of course it depends heavily on the FIX Engine you use but probably after the restart your Exchange Simulator creates a new session-acceptor instead of restoring the sequence numbers from the previous run.
what is the solution of this problem?
Sending the log files to the vendor of you FIX Engine could be the best way to find the solution because it looks like this problem depends on the implementation details of your FIX Engine.
How will i set possDupFlag in
logon message?
It depends on the FIX Engine that you use. Thus the vendor of your FIX Engine could give you the best advice.
For example, for FIXForge .NET FIX Engine you can use a custom Logon message (www.onixs.biz/dotNetFIXEngineProgrammerGuide_webEdition.html#_Custom_Logon_Message), but I am not sure that it would solve you problem.
Maybe using of the ResetSeqNumFlag <141> field (www.onixs.biz/fixdictionary/4.2/tagNum_141.html) in a custom Logon message could be a temporary workaround (as long as it is processed correctly by your FIX Engine).
Regards,
Onix Solutions,
www.onixs.biz
Hi, We are making order router and exchange simulator.Order router pass
FIX messages to Exchange simulator.But when Exchange simulator means our
acceptor is closed nongracefully than initiator gets message of
telecommunication link error.after that i start acceptor again and at
that time initiator tries to connect to acceptor but after immediatly i
got message “The incoming message has a sequence number (1) less than
expected (2) and the PossDupFlag is not set. This indicates a serious
error.”.and session was destroyed. Engine statastics saw 2 acceptors.Is
this a main problem?what is the solution of this problem? How will i recover order messages
from acceptors after connecting again? How will i set possDupFlag in
logon message?
First question: Do you implement your own FIX engine or do you use an already existing one (which one)? Normally, you would not bother about resending messages and PossDupFlag. This is what the engine is doing for you.
Some FIX background:
A FIX session is independent of the existence of a network connection.
It starts at MsgSeqNo=1 for both sides, and stops at any MsgSeqNo as soon as the MsgSeqNo is reset to 1 (usually on both sides).
A FIX connection starts with a Logon message from the Initiator to the Acceptor, which in turn acknowledges it with a Logon message. Then normal FIX message exchange occurs. It ends with a Logout message from either side, which is acknowledged by another Logout message from the other side.
So a FIX session may consist of several FIX connections.
If a FIX connection breaks without Logout, the Initiator tries to reconnect, and after the initial Logon message exchange, the MsgSeqNos are synchronized, i.e. message which were in-transit during the break will be recovered. In this way, you would not use any application data.
Some FIX engines have an option which forces a MsgSeqNo reset on Logout
or even on a disconnect. In that case, the engine reconnects again with number 1, but recovery is not possible.
If the other side did not reset its numbers to 1 as in your case, your side cannot connect. In that case, manual intervention is required, ie the other side has to reset its session to 1.
Hope that helps at bit!
Cheers, Jörg
Now Assume that if i am disconnect initiator nongracefully and before that it sends 100 of messages to acceptor and all are executed and before sending their updates back to initiator my ainitiator is crash.now when i start my initiator again than how can i will get those updates?
and what is the meaning of IntradayLogoutTolerance ? is it going to help me?
Thanx in advance,
Hi, We are making order router and exchange simulator.Order router
pass FIX messages to Exchange simulator.But when Exchange simulator
means our acceptor is closed nongracefully than initiator gets message
of telecommunication link error.after that i start acceptor again and
at that time initiator tries to connect to acceptor but after
immediatly i got message “The incoming message has a sequence number
(1) less than expected (2) and the PossDupFlag is not set. This
indicates a serious error.”.and session was destroyed. Engine
statastics saw 2 acceptors.Is this a main problem?what is the solution of this problem? How will i recover order
messages from acceptors after connecting again? How will i set
possDupFlag in logon message?First question: Do you implement your own FIX engine or do you use an
already existing one (which one)? Normally, you would not bother
about resending messages and PossDupFlag. This is what the engine is
doing for you.Some FIX background:
A FIX session is independent of the existence of a network connection.
It starts at MsgSeqNo=1 for both sides, and stops at any MsgSeqNo as
soon as the MsgSeqNo is reset to 1 (usually on both sides).A FIX connection starts with a Logon message from the Initiator to the
Acceptor, which in turn acknowledges it with a Logon message. Then
normal FIX message exchange occurs. It ends with a Logout message from
either side, which is acknowledged by another Logout message from the
other side.So a FIX session may consist of several FIX connections.
If a FIX connection breaks without Logout, the Initiator tries to
reconnect, and after the initial Logon message exchange, the MsgSeqNos
are synchronized, i.e. message which were in-transit during the break
will be recovered. In this way, you would not use any application data.Some FIX engines have an option which forces a MsgSeqNo reset on Logout
or even on a disconnect. In that case, the engine reconnects again with
number 1, but recovery is not possible.If the other side did not reset its numbers to 1 as in your case, your
side cannot connect. In that case, manual intervention is required, ie
the other side has to reset its session to 1.Hope that helps at bit!
Cheers, Jörg
Just wanted to add one point.
If the other side does not resets its sequence numbers, still your side can connect and immediately after connection your side will send a resend request saying message seq no 100 is more than expected 1, please fill the gap from Tag 7=1 to 16=99. The other side will respond with gap fill messages with 43=Y.