Poss Dupe and SeqReset-Gap Fill
Ryan Pierce / Townsend Analytics Ltd. / Archipelago LLC
3 Dec 1997 3:47PM ETDuilio Gamba's question concerning Poss Dupe and SeqReset-Resets brought to light what looks like a contradiction concerning Poss Dupe and SeqReset-Gap Fills.
I interpret "all messages created as the result of a resend request will contain the PossDupFlag set to 'Y'" as meaning that a SeqReset-Gap Fill *must* be flagged as Poss Dup. Otherwise, the following error could result. You send:
10 - normal message
11 - admin
12 - admin
13 - normal message
14 - normal message
The other party misses 11 and 12, sees 13, and sends a Resend Request of 11-999999. Before you've gotten their Resend Request, you send message 14. The other party sees 14, and sends another Resend Request of 11-999999. Then you get both of their resend requests.
You send:
11 SeqReset-Gap Fill -> 13
13 Poss Dup normal message
14 Poss Dup normal message
in response to the first Resend Request. The other party receives these messages, processes them, and is expecting message 15. Then you process the second Resesd Request and send the same thing again:
11 SeqReset-Gap Fill -> 13
13 Poss Dup normal message
14 Poss Dup normal message
If you have not set Poss Dup on the SeqReset, the other party, expecting 15 and seeing 11, is required to drop the connection. Now if the SeqReset-Gap Fill was a Poss Dup, the other party, expecting 15, would ignore 11, 13 and 14 and everything would be happy. Hence I believe it is critical that all SeqReset-Gap Fill messages must be Poss Dup.
The Message Recovery section (p. 9) of the specification states that a FIX application must drop all Poss Dupe admins, which seems like a contradiction.
If people agree that Poss Dupe SeqReset-Gap Fills are the desired behavior, I suggest the following clarifications to the spec:
Under the Sequence Reset section (pp. 16-17), make it clear that all SeqReset - Gap Fills must be flagged Poss Dup.
Under the Message Recovery section (p. 9), add an exception that the only Admin message that should ever be sent Poss Dup is a SeqReset-Gap Fill. Also, on p. 8, mention in item 2. that the SeqReset-Gap Fill must be Poss Dupe, just like in item 1.
Comments?
Ryan Pierce
Townsend Analytics Ltd.