Details
-
Type: Improvement
-
Status: Resolved
-
Priority: Default
-
Resolution: Fixed
-
Affects Version/s: 1.6.4
-
Fix Version/s: 2.0.1
-
Component/s: Engine, Metadata/Specs
-
Labels:None
-
Environment:Real connection to GDAX (Coinbase) exchange.
Description
I encountered a problem that after receiving a Logon message from the GDAX cryptocurrency exchange, the connection is breaking down with only one strange explaining string in event log messages:
<2018-03-13 07:13:22.789 -0400> <Invalid LOGON message, disconnecting: Tag 95 not found in 8=FIX.4.2^A9=167^A35=A^A52=20180313-11:13:22.778^A49=Coinbase^A56=an_id^A34=1^A96=some_data^A98=0^A108=30^A554=password^A8013=Y^A10=032^A>
It is obviously no tag 95 in the message, so from the first look it seems very strange that engine is trying to find it. As I found out after code debugging, the problem is that the tag 96 is defined as DATA in the standard FIX42 dictionary and for the type QuickFIX/J engine is looking for the previous tag: this logic is coded in the method quickfix.Message#extractField.
I hotfixed my problem by changing the tag 96 type from DATA to STRING in the FIX dictionary, but it seems that it is too difficult to come to.
1) I think, the FIX engine should check the previous tag presence before getting it, and in the case of absence, do extracting as with usual string.
2) At any case, the log message should be more clear than simple "Tag <unknown tag> not found in <messageData>".