{{Quickfixn}} Possible bug in QuickFIX/n?

Thomas Fleming thomas.fleming at sucfin.com
Tue Sep 4 02:04:06 PDT 2012


We are currently failing a conformance test with BARX, and are trying to decide if there is a bug in the QuickFIX/n engine, or not. Apologies for the long message, I wanted to provide as much detail as possible.

The issue: We are sending a resend request. Barx is replying with 2 ExecutionReports followed by a SequenceReset message. All three messages have the PossDupFlag=Y. QuickFix is rejecting the SequenceReset message because it does not have field 122 (OrigSendingTime) present. Barclays say that the third message should not be rejected.

According to FIXimate, for field 122 (OrigSendingTime): “Required for message resent as a result of a ResendRequest. If data is not available set to same value as SendingTime (Can be embedded within encrypted data section.)”

Since the SequenceReset message has PossDupFlag=Y we assume it is sent as part of the ResendRequest, thus falls under the above FIXimate rule. The FIX engine is behaving as we would expect, but Barclays disagree.

Having spoken to a Java developer at my company, he has experienced the same issue with QuickFIX/j when carrying out a conformance test with the CME in the last month. He provided the following link (http://www.quickfixj.org/jira/browse/QFJ-403?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#issue-tabs) which discusses the issue but dates back a couple of years i.e. if it is a bug, it’s been known for a while but not fixed, therefore maybe it’s not a bug?

I believe the equivalent C# code to that discussed in the link is in Session.cs, pasted below.



/// FIXME

        protected bool DoPossDup(Message msg)

        {

            if (!msg.Header.IsSetField(Fields.Tags.OrigSendingTime))

            {

                GenerateReject(msg, FixValues.SessionRejectReason.REQUIRED_TAG_MISSING, Fields.Tags.OrigSendingTime);

                return false;

            }

            var origSendingTime = msg.Header.GetDateTime(Fields.Tags.OrigSendingTime);

            var sendingTime = msg.Header.GetDateTime(Fields.Tags.SendingTime);



            System.TimeSpan tmSpan = origSendingTime - sendingTime;

            if (tmSpan.TotalSeconds > 0)

            {

                GenerateReject(msg, FixValues.SessionRejectReason.SENDING_TIME_ACCURACY_PROBLEM);

                GenerateLogout();

                return false;

            }

            return true;

        }

The first line of this function effectively says, if PossDupFlag=Y and OrigSendingTime is not present, reject message. We are wondering if the SequenceReset message is a special case the does not require field 122, or if Barclays are wrong. There is however a big “FIXME” comment above the function, but I could not find a bug on the GITHUB page pertaining to this function.


Any help would be great.

Thanks, Tom





Below is the command line output from QuickFIX/N. There are two concurrent sessions. Relevant fields have been marked in bold.


<event> Received logon
<event> Received logon
<event> MsgSeqNum too high, expecting 114 but received 116
<event> MsgSeqNum too high, expecting 122 but received 124
---------------------------------------
<outgoing> 8=FIX.4.4☺9=76☺35=2☺34=231☺49=FETDC_SCDN☺52=20120903-15:58:23.741☺56=
BARXFUTSTP☺7=114☺16=0☺10=037☺
---------------------------------------
<outgoing> 8=FIX.4.4☺9=75☺35=2☺34=114☺49=SUCTST-DC☺52=20120903-15:58:23.741☺56=B
ARXFUTSTP☺7=122☺16=0☺10=208☺
<event> Sent ResendRequest FROM: 114 TO: 0
---------------------------------------
<event> Sent ResendRequest FROM: 122 TO: 0
---------------------------------------
<incoming> 8=FIX.4.4☺9=376☺35=8☺49=BARXFUTSTP☺56=FETDC_SCDN☺34=114☺52=20120903-1
5:58:23☺50=fixuser16☺43=Y☺122=20120903-15:58:12☺55=RY☺54=1☺14=0☺38=5☺44=0☺151=5☺
6=0.00000☺59=0☺40=2☺200=201312☺461=FXXXS☺207=CME☺21=3☺11=XTAS:1000511852☺1=FIX16
☺37=258878324☺17=2588783242051271347☺39=A☺150=A☺60=20120903-15:58:12☺32=0☺31=0☺4
53=3☺448=fixuser16☺447=D☺452=12☺448=FIXTEST16☺447=D☺452=3☺448=BARCLAYS☺447=D☺452
=1☺10=081☺
<incoming> 8=FIX.4.4☺9=382☺35=8☺49=BARXFUTSTP☺56=SUCTST-DC☺34=122☺52=20120903-15
:58:23☺50=fixuser16☺43=Y☺122=20120903-15:58:12☺55=RY☺54=1☺14=0☺38=5☺44=0☺151=5☺6
=0.00000☺59=0☺40=2☺200=201312☺461=FXXXS☺207=CME☺21=3☺6084=0☺11=XTAS:1000511852☺1
=FIX16☺37=258878324☺17=2588783242051271347☺39=A☺150=A☺60=20120903-15:58:12☺32=0☺
31=0☺453=3☺448=fixuser16☺447=D☺452=12☺448=FIXTEST16☺447=D☺452=3☺448=BARCLAYS☺447
=D☺452=1☺10=058☺
<event> ResendRequest for messages FROM: 114 TO: 0 has been satisfied.
<event> ResendRequest for messages FROM: 122 TO: 0 has been satisfied.
---------------------------------------
---------------------------------------
<incoming> 8=FIX.4.4☺9=376☺35=8☺49=BARXFUTSTP☺56=FETDC_SCDN☺34=115☺52=20120903-1
5:58:23☺50=fixuser16☺43=Y☺122=20120903-15:58:12☺55=RY☺54=1☺14=0☺38=5☺44=0☺151=5☺
6=0.00000☺59=0☺40=2☺200=201312☺461=FXXXS☺207=CME☺21=3☺11=XTAS:1000511852☺1=FIX16
☺37=258878324☺17=2588783242051271348☺39=0☺150=0☺60=20120903-15:58:12☺32=0☺31=0☺4
53=3☺448=fixuser16☺447=D☺452=12☺448=FIXTEST16☺447=D☺452=3☺448=BARCLAYS☺447=D☺452
=1☺10=049☺
---------------------------------------
<incoming> 8=FIX.4.4☺9=382☺35=8☺49=BARXFUTSTP☺56=SUCTST-DC☺34=123☺52=20120903-15
:58:23☺50=fixuser16☺43=Y☺122=20120903-15:58:12☺55=RY☺54=1☺14=0☺38=5☺44=0☺151=5☺6
=0.00000☺59=0☺40=2☺200=201312☺461=FXXXS☺207=CME☺21=3☺6084=0☺11=XTAS:1000511852☺1
=FIX16☺37=258878324☺17=2588783242051271348☺39=0☺150=0☺60=20120903-15:58:12☺32=0☺
31=0☺453=3☺448=fixuser16☺447=D☺452=12☺448=FIXTEST16☺447=D☺452=3☺448=BARCLAYS☺447
=D☺452=1☺10=026☺
---------------------------------------
<event> Processing queued message: 124
<incoming> 8=FIX.4.4☺9=78☺35=4☺49=BARXFUTSTP☺56=SUCTST-DC☺34=124☺52=20120903-15:
58:23☺43=Y☺123=Y☺36=125☺10=151☺
<event> Processing queued message: 116
<incoming> 8=FIX.4.4☺9=79☺35=4☺49=BARXFUTSTP☺56=FETDC_SCDN☺34=116☺52=20120903-15
:58:23☺43=Y☺123=Y☺36=117☺10=237☺
<event> Message 116 Rejected: Required tag missing (Field=122)
---------------------------------------
<event> Message 124 Rejected: Required tag missing (Field=122)
---------------------------------------
2012-09-03 16:58:26,976 [11] ERROR Sucden.Barx.Client.vshost [Sucden.Barx.Client
.BarxInitiator] - 8=FIX.4.4☺9=115☺35=3☺34=115☺49=SUCTST-DC☺52=20120903-15:58:26.
847☺56=BARXFUTSTP☺45=124☺58=Required tag missing☺371=122☺372=4☺373=1☺10=080☺

<outgoing> 8=FIX.4.4☺9=115☺35=3☺34=115☺49=SUCTST-DC☺52=20120903-15:58:26.847☺56=
BARXFUTSTP☺45=124☺58=Required tag missing☺371=122☺372=4☺373=1☺10=080☺
2012-09-03 16:58:26,976 [12] ERROR Sucden.Barx.Client.vshost [Sucden.Barx.Client
.BarxInitiator] - 8=FIX.4.4☺9=116☺35=3☺34=232☺49=FETDC_SCDN☺52=20120903-15:58:26
.846☺56=BARXFUTSTP☺45=116☺58=Required tag missing☺371=122☺372=4☺373=1☺10=164☺

<outgoing> 8=FIX.4.4☺9=116☺35=3☺34=232☺49=FETDC_SCDN☺52=20120903-15:58:26.846☺56
=BARXFUTSTP☺45=116☺58=Required tag missing☺371=122☺372=4☺373=1☺10=164☺

www.sucdenfinancial.com

Sucden Financial Limited, Plantation Place South, 60 Great Tower Street, London EC3R 5AZ
Telephone +44 203 207 5000

Registered in England no. 1095841
VAT registration no. GB 446 9061 33

Authorised and Regulated by the Financial Services Authority (FSA) and entered in the FSA register under no. 114239

This email, including any files transmitted with it, is confidential and may be privileged. It may be read, copied and used only by the intended recipient. If you are not the intended recipient of this message, please notify postmaster at sucfin.com immediately and delete it from your computer system.

We believe, but do not warrant, that this email and its attachments are virus-free, but you should check.

Sucden Financial Limited may monitor traffic data of both business and personal emails. By replying to this email, you consent to Sucden Financial 's monitoring the content of any emails you send to or receive from Sucden Financial . Sucden Financial is not liable for any opinions expressed by the sender where this is a non-business email.

The contents of this e-mail do not constitute advice and should not be regarded as a recommendation to buy, sell or otherwise deal with any particular investment.

This message has been scanned for viruses by Mimecast.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quickfixn.com/pipermail/quickfixn-quickfixn.com/attachments/20120904/7ebc95ca/attachment-0001.htm>


More information about the Quickfixn mailing list