[QFJ-792] Wrong order of fields in a repeating group makes the group ignored Created: 10/Jun/14  Updated: 27/Jul/17  Resolved: 13/Apr/17

Status: Closed
Project: QuickFIX/J
Component/s: Engine
Affects Version/s: 1.5.3
Fix Version/s: 1.6.4

Type: Bug Priority: Default
Reporter: Andrzej Hajderek Assignee: Christoph John
Resolution: Fixed Votes: 0
Labels: None

Attachments: File MessageTest.java.diff     Text File MessageTest.java.patch    
Issue Links:
Relates
relates to QFJ-770 Message fromString don't report about... Closed

 Description   

Hi,

Another issue related to repeating groups in the message parsing logic. If two fields within a repeating group are in different order than expected the entire repeating group is ignored. The parsed message does not contain the ignored repeating group.

The better approach would be to process the repeating group regardless of the order of fields or to report and error in order to signal the wrong order (assuming ValidateUnorderedGroupFields=Y).

Regards,
Andrzej Hajderek



 Comments   
Comment by Andrzej Hajderek [ 10/Jun/14 ]

Unit test attached.

Comment by Andrzej Hajderek [ 10/Jun/14 ]

Possibly related to QFJ-770.

Comment by Or Ming Chun [ 03/Mar/16 ]

I have the same issue too. When the incoming message contains unordered group fields, even if I set the ValidateUnorderedGroupFields=N and RejectInvalidMessage=N, the parsed message does not contain the repeating group. Here is the logs:

{{<20160303-04:55:18, FIX.4.4:HXFAKEMD->HXFAKE, incoming> (8=FIX.4.49=12135=V34=249=HXFAKE52=20160303-04:55:18.88256=HXFAKEMD262=4001263=1264=0265=0146=148=400122=8267=2269=0269=110=107)
<20160303-04:55:18, FIX.4.4:HXFAKEMD->HXFAKE, error> (Warn: incoming message with missing field: 48: Out of order repeating group members, field=48: 8=FIX.4.49=9035=V34=249=HXFAKE52=20160303-04:55:18.88256=HXFAKEMD146=1262=4001263=1264=0265=010=201)}}

You can see the group in the parsed message has been "eaten" and I can do nothing in the Application.fromApp callback. I am not really sure the issue is related to the ValidateUnorderedGroupFields setting or other issues. I have attached a patch of tests to showcase the issue.
MessageTest.java.diff

The related issue are:
QFJ-770, QFJ-647, QFJ-548, QFJ-535

Comment by Christoph John [ 07/Mar/16 ]

I think there are two sides to this: I agree with you that the parsing logic should not fail if there are group fields out of order.
However, IMHO this must not be true in case where the first field of the repeating group, a.k.a. the delimiter, is missing. Then there are no means for QFJ to find out where a new repeating group starts. If you change your test to NOT leave out the delimiter field and change some other fields of the group AND set ValidateUnorderedGroupFields to false, then the test should pass.

Generated at Mon May 06 21:43:24 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.