Discussion Forums

Re: Rejection Loop
Eva Schmidt
4 Sep 2007 10:45AM ET

Hello Greg,

indeed I I have to Sequence Numbers in my system: SeqNum_rcvd und SeqNum_done. Indeed the SeqNum_rcvd will be incremented also in case of rejection. But I'm not sure if I also shall increment the SeqNum_done - finally the message is not handled correctly.

So in fact it's the question how to react correctly. To loop is wrong, sure. But is it more correct to just ignore and log the message that couldn't be handled? Maybe this leads to some other unexpected effects...

Or does it make sense to close the connection in this case with an error?

Maybe I'm overestimating this case but maybe it's worth to discuss it a little bit?

Bye Eva

> Eva,
>
> You should increment the next expected sequence number when rejecting
> an incoming message. You should not be sending the resend request in
> your scenario.
>
> From the FIX 4.0 & 4.2 specs:
>
> The reject message should be issued when a message is received which
> cannot be passed through to the application level. An example of when a
> reject may be appropriate would be the receipt of a message with invalid
> basic data (e.g. MsgType=&) which successfully passes de-encryption,
> CheckSum and BodyLength checks. (As a rule, messages should be forwarded
> to the trading application for business level rejections whenever
> possible.)
>
> Rejected messages should be logged and the incoming sequence number
> incremented.
>
>
>
> Regards, Greg.
>
> > Hello,
> >
> > I had the following problem and don't really know how it should be
> > handled:
> >
> > First I send an order which is rejected for any reason, for example
> > "Unknown instrument". My counterparty sends me an ExecutionReport with
> > this information, but due to the unknown instrument the value in tag
> > "Symbol" (55) is empty. On my side this leads to a Reject Message.
> >
> > So far so good. But: The ExecutionReport has been received, but not
> > really handled, so I don't increment the incoming SequenceNumber. Due
> > to this, my application sends a ResendRequest and the whole game
> > starts again... The result is a never-ending loop with ResendRequest -
> > ExecutionReport - Reject - SequenceReset ...
> >
> > In my opinion, the counterparty should react somehow to my Reject
> > Message. Or at least doesn't resend the faulty ExecutionReport.
> >
> > Does anybody had the same problem before or any ideas how I should
> > solve this?
> >
> > The FIX 4.2 Specification tells only that "there should be some
> > logic..." ;-) :
> >
> > "Note: The receiving application should disregard any message that is
> > garbled, cannot be parsed or fails a data integrity check. Processing
> > of the next valid FIX message will cause detection of a sequence gap
> > and a Resend Request will be generated. Logic should be included in
> > the FIX engine to recognize the possible infinite resend loop, which
> > may be encountered in this situation."
> >
> > Thanks for any help or ideas! Eva


Rejection Loop
Eva Schmidt   4 Sep 2007 8:59AM ET
Re: Rejection Loop
Greg Orsini / Cameron Systems   4 Sep 2007 10:17AM ET
Re: Rejection Loop
Eva Schmidt   4 Sep 2007 10:45AM ET
Re: Rejection Loop
SriPavan Thayaparan   25 Jun 2008 1:40AM ET