Uploaded image for project: 'QuickFIX/J'
  1. QuickFIX/J
  2. QFJ-522

Engine incorrectly assumes CstmApplVerID implies Session and DataDictionary uniqueness

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Default
    • Resolution: Fixed
    • Affects Version/s: 1.4.0, Future Releases
    • Fix Version/s: None
    • Component/s: Engine
    • Labels:
      None
    • Environment:
      Centos 5.3, Sun JDK 1.6

      Description

      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.

        Attachments

        1. CORRECTED_executorExampleAddendum.diff
          0.8 kB
          Grant Birchmeier
        2. cstmApplVerIDFix.diff
          14 kB
          Brent Bradbury
        3. executorExampleAddendum.diff
          0.5 kB
          Grant Birchmeier

          Activity

            People

            • Assignee:
              grantb Grant Birchmeier
              Reporter:
              bbradbury@connamara.com Brent Bradbury
            • Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: