[QFJ-567] Would like QuickFix/J to natively support tag NextExpectedMsgSeqNum on logon as detailed in FIX Session Protocol 1.1 Errata Created: 23/Nov/10  Updated: 08/Nov/12  Resolved: 08/Nov/12

Status: Resolved
Project: QuickFIX/J
Component/s: Engine
Affects Version/s: 1.5.0, 1.5.2
Fix Version/s: 1.5.3

Type: New Feature Priority: Default
Reporter: Christopher Hurst Assignee: Christoph John
Resolution: Fixed Votes: 0
Labels: None
Environment:

ALL


Attachments: PDF File FIX Tag 789(NextExpectedMsgSeqNum) Description 1.7.pdf     PDF File FIX Tag 789(NextExpectedMsgSeqNum) Description.pdf     Zip Archive QuickFixJ789Change.zip     Zip Archive Tag789v1.3PDF.zip    
Issue Links:
Relates
is related to QFJ-705 Redundant ResendRequest is sent after... Closed

 Description   

The NextExpectedMsgSeqNum (789) field has been added in FIX 4.4 to the logon message to support a proposed way to resynchronize a FIX session. I was led to believe there is no internal QuickFix/J implementation pending and I have coded a configurable solution (as I have a pressing need for it), which I am currently testing I would like the solution to be integrated into QuickFix/J proper in a future version as that would make it a lot easier for me to maintain going forward.

I can supply source code changes and /or an additional document describing the work flow in various scenarios on request for feedback.



 Comments   
Comment by Christopher Hurst [ 17/Mar/11 ]

Updated version of the document following feedback.

Comment by Eric Deshayes [ 31/May/11 ]

Committed in Rev#1041.
A new setting has been added: EnableNextExpectedMsgSeqNum
By default,set to false. When set to true, the field 789 is sent on the logon message.

Comment by Christopher Hurst [ 06/Mar/12 ]

Hi,

I don't think this issue is resolved, can we change the status.

I supplied a fully tested 789 implementation all we've done in the released implementation is set to the 789 (which could have been added to a QFJ client application) to the next expected sequence number but the current implementation can't cope with any implicit resend or 789 being sent back in the logon response. Any performance benefits of 789 are lost.

The issue is you can't add this on top of QuickFIX this has to go into the core fix engine so I'm forced to branch QFJ.

I tried 1.5.1 with a sever that supports 789 and it actually failed to recover a session with the tag on (not sure why yet I'll have to dig). The server responded to the implicit logon but QFJ are requested an unnecessary resend.

Comment by Christopher Hurst [ 06/Mar/12 ]

Code changes requited.

Comment by Andrzej Hajderek [ 17/Sep/12 ]

Just proposed a small change that would push things forward just a little bit:

http://www.quickfixj.org/jira/browse/QFJ-705

Chris,

If you could comment on it, it would be great. (We're trying to connect to your MAPI engine with QuickFIX/J.)

Comment by Christopher Hurst [ 17/Sep/12 ]

Hi,

I would suggest the ideal solution was to fully support 789 (albeit optionally), I supplied a fully working solution all scenarios supported / scenario tested and soak tested against (1.5.0).
For reasons I'm not aware of, my solution wasn't used and a less than complete simplistic solution was added in its place (personally I would have suggested all or nothing was the better option in general).
As 789 functionality was added in the version I expected it to be, I assumed it was fully compliant until I later had time to inspect the code.
The less than full solution in a way complicates the problem in that we have to extend our test cases to partial support of 789.

As 789 is incomplete and required by us I had to do a less than trivial merge for 1.5.2 to enable my internal branch to work correctly again.

If you look at the code I originally submitted you can see the work I did on 1.5.0 nextLogon to compare and contrast with the suggested changes.

Chris

Comment by Christoph John [ 17/Sep/12 ]

hi,
so I think we should do the complete solution in QFJ-705
Do you agree?
cheers
Christoph

Comment by Andrzej Hajderek [ 17/Sep/12 ]

Hi,

I proposed the yet another partial solution under QFJ-705 because of the already taken incremental approach. And those 2 proposed lines of code seem to sort out our use case, in our tests.

The fact that this QFJ-567 was marked as fixed is a bit surprising, because it wasn't. At least someone could have commented on the reasons why only a fraction of the proposed solution was used.

I agree that the full solution proposed here would be best, although it will require additional work now.

Regards,
Andrzej

Comment by Christopher Hurst [ 18/Sep/12 ]

Hi,
First I suggest the initial closed report is re-opened ASAP as it holds useful detail and would preclude opening of new reports on the same issue.

I still think the full solution is the simplest. We're in a strong position to test this at the moment; that may not be the case in the future as it requires I can shadow the current builds and have access to the same test resources.

If we extend the existing acceptance scenarios in the existing 789 tests to all the scenarios in the original document we uploaded we should have full acceptance coverage.
Those scenarios were tested by hand and sanity checked between two 789 compliant engines (one QFJ 1.5.0).

I currently have a version of QF/J with my 789 changes, which I can soak test against another compliant FIX engine for increased confidence.

Obviously 789 is optional by (default) configuration so we should have no harms.
As 789 is optional and not used by default, some additional no-harms tests will be required to prove interoperability

Chris

Comment by Andrzej Hajderek [ 18/Sep/12 ]

Hi,

I agree with CH - QFJ-705 is not meant to replace QFJ-567. It is meant as a little step towards proper implementation of this QFJ-567.

The two line chane I proposed will not provide the full support for tag 789. This QFJ-567 is the best place to register and discuss the 789 support as such.

In fact it would be better to close QFJ-705 and resurrect this QFJ-567, as it was incorrectly marked as fixed in the past.

Regards,
Andrzej

Comment by Andrzej Hajderek [ 18/Sep/12 ]

BTW:

I wouldn't ignore Christopher's offer to test the full change. As far as I'm aware he's already got a production version of his COMPLETE fix running.

(Especially after he was being ignored since March .

Andrzej

Comment by Christoph John [ 18/Sep/12 ]

Agreed.

Comment by gemma hagen [ 03/Oct/12 ]

Hi,

We have the requirement to support this behaviour on logon for MAPI.
Is there a tested patch that can be applied to Quickfix 1.5.2 - if not, what are other people doing? When is 1.5.3 due?

Thanks

Gemma

Comment by Christoph John [ 12/Oct/12 ]

We plan to release end of October/beginning of November.

Comment by Christoph John [ 07/Nov/12 ]

Committed as rev #1094. Thanks to Christopher Hurst for suggested patch against 1.5.0 and doing quite some tests.

Generated at Sat Nov 23 08:43:47 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.