NOTE: Jira is for bug reports and feature requests.
If you are entering an issue to ask a question,
please use the QuickFIX/J support options. Thank you.

Issue Details (XML | Word | Printable)

Key: QFJ-522
Type: Bug Bug
Status: Open Open
Priority: Default Default
Assignee: Unassigned
Reporter: Brent Bradbury
Votes: 1
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
QuickFIX/J

Engine incorrectly assumes CstmApplVerID implies Session and DataDictionary uniqueness

Created: 10/May/10 11:31 PM   Updated: 11/Aug/10 05:27 PM
Return to search
Issue 67 of 71 issue(s)
Component/s: Engine
Affects Version/s: 1.4.0, Future Releases
Fix Version/s: None

File Attachments: 1. File CORRECTED_executorExampleAddendum.diff (0.8 kB)
2. File cstmApplVerIDFix.diff (14 kB)
3. File executorExampleAddendum.diff (0.5 kB)

Environment: Centos 5.3, Sun JDK 1.6


 Description  « Hide
To show bug:
1) Create FIXT1.1 / FIX.5.0 session with custom TransportDataDictionary and ApplicationDataDictionary
2) Start session, send session level logins
3) Try sending Application-level message to QFix/J session with CstmApplVerID (field 1129) set in the header to some value (I chose '5.4' for the value)
4) QFix/J emits exception trying to find DataDictionary FIX50_5_4, where '5_4' reflects value of the CstmApplVerID field

Why it happens:
QFix/J indexes DataDictionaries by a AppVersionKey. This key uses ApplVerID and CstmApplVerID fields to generate a unique reference to a given DataDictionary. I think it is a correct interpretation of the FIX spec to say that it should only use ApplVerID, because CstmApplVerID (1) is not a required field, and thus may or may not consistently appear in message headers, (2) does not have a required default value in a configuration file (e.g. DefaultApplVerID) (3) is defined in the FIX spec as "Used to support bilaterally agreed custom functionality", in no way affecting the DataDictionary or implying that a specific one should be used.

The fix:
I fixed this by removing all references to CstmApplVerID in the Engine, which allows CstmApplVerID to behave like a normal header field, leaving the implementation of any functionality based on its value up to the user. Most of the revolved around DefaultDataDictionaryProvider.java.

 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Brent Bradbury added a comment - 10/May/10 11:38 PM
Apply the patch to trunk/core/src.

I'm not sure how the unit tests shake out, because I don't see where the specifics of failures/errors is shown?


Brent Bradbury added a comment - 10/May/10 11:39 PM
Also, the patch is against rev 949 of trunk SVN.

Grant Birchmeier added a comment - 11/Aug/10 05:18 PM
If you patch cstmApplVerIDFix.diff on a clean checkout and build, or if you patch then "ant clean" then rebuild, you'll get a compile error for the "executor" example.

It needed to be updated to match an updated interface, which is a one-line fix described in attached patch executorExampleAddendum.diff.


Grant Birchmeier added a comment - 11/Aug/10 05:27 PM
Oops. I messed up my patch file. Use this one. Apologies.