[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 |