Imported from previous forum
Resend Request Response (i.e. SequenceReset ) : Indicating unavailability of message in resend cache
Hi Asanka,
The case where application messages cannot be recovered, is consider as disaster.
Per handling this case in FIX engines… that is a question of each fix engine implementation.
I believe that QuickFix C++ handles this case. One should implement (/override) the ‘Application::fromAdmin’ callback… where the SequenceReset(35=4) message is captured (together with other ‘admin’ messages’) and may be processed by the application.
I hope this helps.
Yuval
Hi,
Page 12 in: http://www.fixtradingcommunity.org/pg/file/fplpo/read/30045/fixt-11-specification-documents-pdf
mentions Sequence Reset::GapFillFlag=N to be used only as a disaster recovery step.
Since Applications are required to maintain only a finite amount of most reasonable messages in FIX resend cache, does counter party requesting a message out side the cached amount constitutes a “disaster situation” ?
More importantly, Is FIX Engines (which implements the FIX session layer) are expected to notify the application layer the reception of a “Sequence Reset::GapFillFlag=N”, so that Application level recovery processes can be initiated ?
Hi Asanka,
Please read the Message Recovery section (page 12) in: http://www.fixtradingcommunity.org/pg/file/fplpo/read/30045/fixt-11-specification-documents-pdf
It mention this specific case (as a third case: “SeqReset-Reset”)
Also FIX-WIKI is correct: note that: Sequence Reset::GapFillFlag=N is NOT a normal response! it indicates that there are lost messages.
Again: To indicate that message are not available: send SequenceReset(35=4) having GapFillFlag(123)=Sequence Reset(N)
(to force sequence number synchronization)
I hope this helps,
Yuval
Hi,
Thanks for your response,
But http://fixwiki.org/fixwiki/SequenceReset mentions Sequence Reset::GapFillFlag=N not to be used as a response to a Resend Request.
“
Sequence Reset - Reset should NOT be used as a normal response to a Resend Request (use Sequence Reset - Gap Fill mode). The Sequence Reset - Reset should ONLY be used to recover from a disaster situation which cannot be recovered via the use of Sequence Reset - Gap Fill. Note that the use of Sequence Reset - Reset may result in the possibility of lost messages.
”
Hi Asanka,
To indicate only admin messages are available: send SequenceReset(35=4) having GapFillFlag(123)=Gap Fill(Y)
(to replace the retransmission of administrative messages)
To indicate that message are not available: send SequenceReset(35=4) having GapFillFlag(123)=Sequence Reset(N)
(to force sequence number synchronization)
In both above cases: PossDupFlag set to “Y”
I hope this helps,
Yuval
When responding to a FIX Resend Request a Sequence reset is sent in below scenarios
- Only Admin messages are available in mentioned range
- Mentioned messages are not available in Resend Cache
From peer side, there is no issue with #1. But for #2, he will miss some messages (which needs to be notified to Application layer so that Application level recovery steps can be followed.).
My question is how can the FIX Session layer (i.e. in SequenceReset) differentiate between above #1 and #2 ?
How can we indicate to the peer side that you have missed messages ?