[QFJ-832] Multi-Version support is busted in 1.6.0 Created: 08/Apr/15  Updated: 24/Jul/15  Resolved: 24/Jul/15

Status: Closed
Project: QuickFIX/J
Component/s: None
Affects Version/s: 1.6.0
Fix Version/s: 1.6.1

Type: Bug Priority: Blocker
Reporter: James Olsen Assignee: ManuReno
Resolution: Duplicate Votes: 6
Labels: None

Issue Links:
Duplicate
duplicates QFJ-845 Change packaging strategy of quickfix... Closed
is duplicated by QFJ-836 new quickfix.fix44.NewOrderSingle fail Closed
Relates
is related to QFJ-855 Change packaging strategy for quickfi... Closed

 Description   

The issue discussed in http://sourceforge.net/p/quickfixj/mailman/message/32791285/ has not been resolved.

It is impossible to have a system that works with multiple FIX versions due to these VerifyErrors.

Even pre 1.6.0 systems that currently work and use only a single version may now fail depending on their classpath ordering as 'core' contains one variant of the Fields and may conflict with the desired 'messages' project.

This was not an issue in 1.5.3 and earlier where there was only one copy of the Fields.



 Comments   
Comment by Christoph John [ 13/Apr/15 ]

Thanks for the report. Regarding classpath ordering: if the desired "messages" project is listed before "core" it should be OK (at least for single FIX versions)?
Maybe I should have opened a specific JIRA issue for this problem earlier.

Comment by Chris [ 13/May/15 ]

I have to support 4.4 and 5.0SP2 for different connections - they both run in separate JVMs, so its not an issue for these per se, but I have a test harness that needs to load both.

I've tried adding the jars as follows:

  • 50sp2 messages
  • FIX11 messages
  • 44 messages
  • core

But the 4.4 related part fails with:

07:06:46:525|TH3 ERROR: NameError:cannot link Java class quickfix.fix44.NewOrderSingle, probable missing dependency: (class: quickfix/fix44/NewOrderSingle, method: set signature: (Lquickfix/field/SettlType;)V) Incompatible argument to function

If I move the 44 messages jar to be first, I get this:

07:17:37:538|TH3 ERROR: NameError:cannot link Java class quickfix.fix50sp2.Quote, probable missing dependency: (class: quickfix/fix50sp2/Quote, method: set signature: (Lquickfix/field/SettlType;)V) Incompatible argument to function

I don't suppose there is an jar ordering that will work with the current setup? Guess I need to look at spinning my tests off into separate VMs...

Comment by Christoph John [ 13/May/15 ]

I'm afraid that won't work.
Just an idea: I was asking myself if it worked when modifying the affected data dictionaries (in your case FIX44 and 50SP2) to have the same data type for the problematic fields (e.g. SettlType) and then rebuilding the message and field classes.

Comment by Christoph John [ 14/May/15 ]

Hi Chris, there is a pull request by ManuReno linked to QFJ-845. Maybe you could check if it fixes your problem.

Comment by Christoph John [ 24/Jul/15 ]

Closed in favour of QFJ-845 which fixes the problem when using the messages-all JAR file. Please note that there is still QFJ-855 which can occur when using specific message JAR files.

Generated at Sat Nov 23 10:42:09 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.