[Quickfix-developers] RE: QuickFIX for Python
Brought to you by:
orenmnero
|
From: Shawn Y. <sya...@ge...> - 2006-04-06 02:07:08
|
Hi,
I saw what I think is a rare timing bug, I think located in Session.cpp, =
in the "Session::generateSequenceReset" function.
If the clock increments at exactly the *wrong* time, then the =
SendingTime(52) in the Sequence Reset message can be 1 millisecond off =
from the OrigSendingTime(122). The exchange I care about (CME) rejects =
the message due to the 1 millisecond difference and the session fails =
horribly.
Or maybe I'm misinterpreting the evidence, see for yourself:
The exchange error I saw (thru an exchange report somewhere):
We received a SequenceReset(4) message, but it had the following =
errors:=20
Field OrigSendingTime: we expected '20060406-01:34:15.082', but we =
received '20060406-01:34:15.081'
The relevant messages from the QuickFIX log:
=
8=3DFIX.4.2|9=3D76|35=3D2|49=3DCME|56=3D???|52=3D20060406-01:34:14|34=3D5=
|369=3D6|50=3DG|57=3D???|7=3D1|16=3D0|10=3D161|
=
8=3DFIX.4.2|9=3D113|35=3D4|34=3D1|43=3DY|49=3D???|50=3D???|52=3D20060406-=
01:34:15.082|56=3DCME|57=3DG|122=3D20060406-01:34:15.081|142=3D3|36=3D3|1=
23=3DY|10=3D007|
I see similar code in the "Session::resend" function, but it handles the =
timestamp correctly there. Maybe the code can be copied into =
"Session::generateSequenceReset". The insertOrigSendingTime() call =
needs to not default the second parameter. That second parameter should =
be the timestamp taken from SendingTime.
Shawn Yarbrough
Senior E-Trading Developer
Gelber Group, LLC
sya...@ge...
THE MESSAGES AND DOCUMENTS TRANSMITTED WITH THIS NOTICE CONTAIN =
CONFIDENTIAL INFORMATION BELONGING TO THE SENDER. IF YOU ARE NOT THE =
INTENDED RECIPIENT OF THIS INFORMATION, YOU ARE HEREBY NOTIFIED THAT ANY =
DISCLOSURE, COPYING, DISTRIBUTION OR USE OF THE INFORMATION IS STRICTLY =
PROHIBITED. IF YOU HAVE RECEIVED THIS TRANSMISSION IN ERROR, PLEASE =
NOTIFY THE SENDER IMMEDIATELY.
|