|
From: Zhu T. <zh...@gm...> - 2023-03-17 13:59:12
|
Hello, I am using quickfixj 2.1.1 to connect to CME DropCopy 4.0. CME DC requires all Resend Requests not to request more than the maximum limit of 2500 messages (see https://www.cmegroup.com/confluence/display/EPICSANDBOX/Drop+Copy+Session+Layer+-+Resend+Request). Therefore. I set ResendRequestChunkSize=2000, however, I am having issue to pass the automated failover certification test due to the test expect multiple resend request messages to recover all missed messages. I.e. seems QFJ failed to send the resend request for the first chunk only as the fix messages below: 2023-03-17 06:06:13.510 [INFO ] [QFJ Timer] quickfixj.msg.outgoing - 8=FIX.4.2|9=225|35=A|34=48|49=OAEAAAN|50=9Q5|52=20230317-06:06:13.437|56=CME|57=G|142=GB|98=0|108=30|354=20|355=zXQ7fgakpLQ9ng5x4HZ0|1400=CME-1-SHA-256|1401=43|1402=R8yifHbBZbJGiKua50B5o-pwlcrbe71fbk3N6Tw6VNk|1603=COM_RISK|1604=1.0|1605=COM|10=111| 2023-03-17 06:06:13.662 [INFO ] [NioProcessor-2] quickfixj.msg.incoming - 8=FIX.4.2|9=126|35=A|34=8042|369=48|52=20230317-06:06:13.606|49=CME|50=G|56=OAEAAAN|57=9Q5|143=GB|98=0|108=30|1603=COM_RISK|1604=1.0|1605=COM|10=109| 2023-03-17 06:06:13.670 [INFO ] [NioProcessor-2] quickfixj.msg.incoming - 8=FIX.4.2|9=97|35=1|34=8043|369=48|52=20230317-06:06:13.607|49=CME|50=G|56=OAEAAAN|57=9Q5|143=GB|112=IDlf5n3zty|10=159| 2023-03-17 06:06:13.676 [INFO ] [QF/J Session dispatcher: FIX.4.2:OAEAAAN/9Q5/GB->CME/G:cgw] quickfixj.msg.outgoing - 8=FIX.4.2|9=88|35=2 |34=49|49=OAEAAAN|50=9Q5|52=20230317-06:06:13.675|56=CME|57=G|142=GB|7=4042|16=6041|10=055| 2023-03-17 06:06:18.800 [INFO ] [NioProcessor-2] quickfixj.msg.incoming - 8=FIX.4.2|9=127|35=4|34=4042|369=49|52=20230317-06:06:18.758|43=Y|49=CME|50=G|56=OAEAAAN|57=9Q5|122=20230317-06:06:18.758|143=GB|36=8044|123=Y|10=021| 2023-03-17 06:06:44.432 [INFO ] [QFJ Timer] quickfixj.msg.outgoing - 8=FIX.4.2|9=73|35=0|34=50|49=OAEAAAN|50=9Q5|52=20230317-06:06:44.431|56=CME|57=G|142=GB|10=114| 2023-03-17 06:06:44.730 [INFO ] [NioProcessor-2] quickfixj.msg.incoming - 8=FIX.4.2|9=97|35=1|34=8044|369=49|52=20230317-06:06:44.688|49=CME|50=G|56=OAEAAAN|57=9Q5|143=GB|112=IDlf5n3ztz|10=175| 2023-03-17 06:06:44.734 [INFO ] [QF/J Session dispatcher: FIX.4.2:OAEAAAN/9Q5/GB->CME/G:cgw] quickfixj.msg.outgoing - 8=FIX.4.2|9=88|35=0|34=51|49=OAEAAAN|50=9Q5|52=20230317-06:06:44.734|56=CME|57=G|142=GB|112=IDlf5n3ztz|10=238| 2023-03-17 06:07:15.428 [INFO ] [QFJ Timer] quickfixj.msg.outgoing - 8=FIX.4.2|9=73|35=0|34=52|49=OAEAAAN|50=9Q5|52=20230317-06:07:15.427|56=CME|57=G|142=GB|10=120| 2023-03-17 06:07:15.732 [INFO ] [NioProcessor-2] quickfixj.msg.incoming - 8=FIX.4.2|9=97|35=1|34=8045|369=51|52=20230317-06:07:15.691|49=CME|50=G|56=OAEAAAN|57=9Q5|143=GB|112=IDlf5n3zu0|10=089| 2023-03-17 06:07:15.736 [INFO ] [QF/J Session dispatcher: FIX.4.2:OAEAAAN/9Q5/GB->CME/G:cgw] quickfixj.msg.outgoing - 8=FIX.4.2|9=88|35=0|34=53|49=OAEAAAN|50=9Q5|52=20230317-06:07:15.735|56=CME|57=G|142=GB|112=IDlf5n3zu0|10=167| Also found this old thread ( https://www.quickfixj.org/jira/browse/QFJ-880?focusedCommentId=12807&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-1280 ) that identified the issue was due to the check, newSequence < range.getEndSeqNo() At https://github.com/quickfix-j/quickfixj/blob/0ef2ac42ac9966a965b9e811713b9b8c6bc7c32c/quickfixj-core/src/main/java/quickfix/Session.java#L1549 Which makes sense to me. *upon receiving SequenceReset messages QuickFIX/J will determine if a new ResendRequest chunk message needs to get sent out based on the following criteria in the nextSequenceReset method of the Session class by checking if newSequence < range.getEndSeqNo(). Since this fails, some ResendRequests fail to ever get sent out.* A solution has been proposed in the thread too. Not sure what has been fixed following the thread. But the code in Session.java has the newSequence < range.getEndSeqNo() check in github currently. Have anyone successfully certified with CME DC 4.0 with quickfixj. Any help would be very appreciated. Best, Zhu |