[QFJ-403] Rejecting due to OrigSendingTime not being in Tag without Data Dictionary Created: 10/Feb/09 Updated: 05/Oct/14 Resolved: 20/Mar/11 |
|
Status: | Closed |
Project: | QuickFIX/J |
Component/s: | None |
Affects Version/s: | None |
Fix Version/s: | None |
Type: | Other | Priority: | Default |
Reporter: | Herman Hung | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | None |
Issue Links: |
|
Description |
Hi, I'm using quickfix/J and for some reason I keep rejecting messages with reject: 20090210-16:13:01: Message 641 Rejected: Required tag missing:122 I have the following configuration options set in configuration: UseDataDictionary=N And I have also attempted to rip out OrigSendingTime from my Data Dictionary as a precautionary measure. I don't ever explicitly call this tag in code. Any help on this issue would be appreciated. Regards, |
Comments |
Comment by Herman Hung [ 10/Feb/09 ] |
At this point, I've also literally emptied my Application (quickfixj.Application). It should not be doing ANYTHING, and yet I'm still rejecting on that tag. Anyone, please help? Regards, |
Comment by Toli Kuznets [ 10/Feb/09 ] |
Herman, Can you include the logs that show the flow of messages going out and coming in preceding this error? From the FIX spec about tag 122:
It's possible that your counterparty is not sending you the message with that tag, and QFJ may be rejecting it b/c it is required in a particular case. It's impossible to say what's going on without seeing the actual message flow. Make sure you enable logging for INFO level. Here's a sample for Log4J: # QuickFIX/J. log4j.logger.quickfixj.msg.incoming=INFO log4j.logger.quickfixj.msg.outgoing=INFO log4j.logger.quickfixj.event=INFO |
Comment by Herman Hung [ 10/Feb/09 ] |
Hi Toli, Thanks for the response. I cannot attach logs at this time, but I can confirm that the scenario that you are putting forth is happening: someone is sending me FIX messages in response to a resend request and not including that tag. However, it appears that the code that processes the association of tag 122 with this event is buried inside the QuickFix/J code and is something that I would like to override. Is there anything I can do to override this check? Regards, |
Comment by Herman Hung [ 10/Feb/09 ] |
(That is, anything short of editing the QuickFix/j source itself?) |
Comment by Andy Malakov [ 21/Dec/10 ] |
It seems that the following code fragment from Session.java is responsible for reject: private boolean validatePossDup(Message msg) throws FieldNotFound, IOException { if (!msgType.equals(MsgType.SEQUENCE_RESET)) { .... It appears that some FIX implementations (e.g. ICE exchange) do not set OrigSendingTime in some of their messages during resend. |
Comment by Andy Malakov [ 22/Dec/10 ] |
I propose to validate OrigSendingTime field only if it is present in inbound message: Index: java/quickfix/Session.java =================================================================== Date sendingTime = header.getUtcTimeStamp(SendingTime.FIELD); if (!msgType.equals(MsgType.SEQUENCE_RESET)) { - if (!header.isSetField(OrigSendingTime.FIELD)) { - generateReject(msg, SessionRejectReason.REQUIRED_TAG_MISSING, OrigSendingTime.FIELD); - return false; + Date origSendingTime; + try { + origSendingTime = header.getUtcTimeStamp(OrigSendingTime.FIELD); + } catch (FieldNotFound e) { + origSendingTime = null; } - - Date origSendingTime = header.getUtcTimeStamp(OrigSendingTime.FIELD); - if (origSendingTime.compareTo(sendingTime) > 0) { + if (origSendingTime != null && origSendingTime.compareTo(sendingTime) > 0) { generateReject(msg, SessionRejectReason.SENDINGTIME_ACCURACY_PROBLEM, 0); generateLogout(); return false; } + } return true |
Comment by MANOJ M [ 03/Oct/14 ] |
Could you please let me know the resoltion for this issue? I am having same issue while connecting to ICE. |
Comment by Christoph John [ 05/Oct/14 ] |
See |