Docstoc

J+Jira

Document Sample
J+Jira Powered By Docstoc
					QuickFIX/J Jira
Displaying 365 issues at 31/Aug/12 7:53 AM.
  Project       Key                 Summary                  Issue Type   Status   Priority     Resolution      Assignee
QuickFIX/J QFJ-561 Delimiter is misspelled as "delimeter"   Improvement Open       Trivial  Unresolved       Unassigned




                                                                                                                           1 of 1116
QuickFIX/J QFJ-434 Unable to deregister jmx mbeans            Bug        Resolved   Trivial   Fixed        Steve Bate
                   exported via JmxExporter




QuickFIX/J QFJ-663 FieldMap's "getGroup()",                   Improvement Open      Trivial   Unresolved   Unassigned
                   "replaceGroup()", and possibly others...
                   should start with 0 (not 1)




                                                                                                                        2 of 1116
QuickFIX/J QFJ-15   Connect/reconnect generates phony   Bug   Resolved   Minor   Not a bug   Steve Bate
                    error during seqnum resync




                                                                                                          3 of 1116
QuickFIX/J QFJ-18   Logout not sent at session expiration    Bug   Closed   Minor   Fixed   Steve Bate
                    time




QuickFIX/J QFJ-25   Message constructor throws               Bug   Closed   Minor   Fixed   Steve Bate
                    NullPointerException with empty string




                                                                                                         4 of 1116
QuickFIX/J QFJ-32   SessionSchedule race condition causes   Bug   Closed   Minor   Fixed   Steve Bate
                    disconnect at midnight UTC




                                                                                                        5 of 1116
QuickFIX/J QFJ-36   Missing enums for SecurityTradingStatus Bug   Closed   Minor   Fixed   Steve Bate
                    (Tag #326)




                                                                                                        6 of 1116
QuickFIX/J QFJ-68   SocketConnectProtocol=vm_pipe   Other   Closed   Minor   Fixed   Steve Bate




                                                                                                  7 of 1116
QuickFIX/J QFJ-117 No error message (Null pointer exception Bug   Closed   Minor   Fixed   Steve Bate
                   thrown) on unexpected message
                   (SingleThreadedEventHandler) (easy to
                   fix)




                                                                                                        8 of 1116
QuickFIX/J QFJ-126 Unhelpful Error message   Bug   Resolved   Minor   Not a bug   Steve Bate




                                                                                               9 of 1116
QuickFIX/J QFJ-135 session -> setResponder not thread safe Bug     Closed     Minor   Fixed       Steve Bate




QuickFIX/J QFJ-163 There is no way to know if a session is   Bug   Resolved   Minor   Not a bug   Steve Bate
                   timedOut




                                                                                                               10 of 1116
QuickFIX/J QFJ-200 Session.enabled is accessed in both     Bug         Closed   Minor   Fixed   Steve Bate
                   synchronized and unsynchronized
                   contexts.




QuickFIX/J QFJ-290 FileStore.messageIndex is not cleared   Bug         Closed   Minor   Fixed   Unassigned
                   on reset




QuickFIX/J QFJ-270 conditionally required field missing    Improvement Closed   Minor   Fixed   Unassigned
                   message uninformative




                                                                                                             11 of 1116
QuickFIX/J QFJ-543 "connector" parameter in interface      Bug   Open   Minor   Unresolved   Unassigned
                   AcceptorSessionProvider.getSession() is
                   undocumented and unclear




                                                                                                          12 of 1116
QuickFIX/J QFJ-608 Out of Order in repeating group if first     Bug   Resolved   Minor   Not a bug   Unassigned
                   tag of repeating group is not set (even if
                   it is not a mandatory field)




                                                                                                                  13 of 1116
QuickFIX/J QFJ-628 java.io.IOException caused by logout   Other   Open   Minor   Unresolved   Unassigned




                                                                                                           14 of 1116
QuickFIX/J QFJ-646 MiscFeeType field is handled incorrectly Bug   Open   Minor   Unresolved   Unassigned




                                                                                                           15 of 1116
QuickFIX/J QFJ-652 Reject is missing RefTagID when        Improvement Closed   Minor   Fixed   Christoph John
                   answering SequenceReset with invalid
                   NewSeqNo




                                                                                                            16 of 1116
QuickFIX/J QFJ-678 EventHandlingStrategy BlockingQueues Improvement Open   Minor   Unresolved   Unassigned
                   are unbounded




                                                                                                             17 of 1116
QuickFIX/J QFJ-39   ClassCastException in MessageCracker Bug             Closed     Default   Fixed       Steve Bate




QuickFIX/J QFJ-45   When rejecting a logon, allow logout   Improvement Closed       Default   Fixed       Steve Bate
                    message to be optional before
                    disconnect.

QuickFIX/J QFJ-31   Configuring logger TimeZone            New Feature   Resolved   Default   Won't Fix   Steve Bate




                                                                                                                       18 of 1116
QuickFIX/J QFJ-52   NPE on invalid message group   Bug   Closed   Default   Fixed   Steve Bate




                                                                                                 19 of 1116
QuickFIX/J QFJ-56   Support null LogFactories.   Bug   Closed   Default   Fixed   Steve Bate




                                                                                               20 of 1116
QuickFIX/J QFJ-43   Throwing RejectLogon causes Logout   Bug   Resolved   Default   Not a bug   Steve Bate
                    message before Disconnect




QuickFIX/J QFJ-64   Component group copy incorrect       Bug   Closed     Default   Fixed       Steve Bate




                                                                                                             21 of 1116
QuickFIX/J QFJ-65   Wrong error reported on parse   Bug   Closed   Default   Fixed   Steve Bate




                                                                                                  22 of 1116
QuickFIX/J QFJ-66   Cannot receive incoming header DATA   Bug   Closed   Default   Fixed   Steve Bate
                    field




                                                                                                        23 of 1116
QuickFIX/J QFJ-75   Make table names for JdbcLog            Improvement Closed   Default   Fixed              Steve Bate
                    configurable




QuickFIX/J QFJ-84   Message Allocation: Tag(78): NoAllocs   Bug         Closed   Default   Cannot Reproduce   Steve Bate




                                                                                                                           24 of 1116
QuickFIX/J QFJ-88   Communication failure Market Data from Other   Closed   Default   Fixed   Steve Bate
                    HotSpot




                                                                                                           25 of 1116
QuickFIX/J QFJ-85   Make generateReject a private method   New Feature   Closed   Default   Fixed   Steve Bate




                                                                                                                 26 of 1116
QuickFIX/J QFJ-89   sessionID added to global Sessions after Bug        Closed   Default   Fixed   Steve Bate
                    first log message - which causes NPE if
                    JdbcLog is misconfigured




QuickFIX/J QFJ-95   Modify Group constructor                Bug         Closed   Default   Fixed   Steve Bate




QuickFIX/J QFJ-102 Add field-based constructors to          Improvement Closed   Default   Fixed   Steve Bate
                   SessionID



                                                                                                                27 of 1116
QuickFIX/J QFJ-94   Performance                         Other       Closed   Default   Fixed       Steve Bate




QuickFIX/J QFJ-96   Third Party Routing                 Other       Closed   Default   Fixed       Steve Bate




QuickFIX/J QFJ-104 Time Zone Problem                    Improvement Closed   Default   Not a bug   Steve Bate




QuickFIX/J QFJ-101 Add support for formatting session   Improvement Closed   Default   Fixed       Steve Bate
                   settings to string/stream

                                                                                                                28 of 1116
QuickFIX/J QFJ-86   Evaluation of quickfixj using   Other   Closed   Default   Fixed   Steve Bate
                    www.openfix.net




                                                                                                    29 of 1116
QuickFIX/J QFJ-108 Session management, especially for      Improvement Closed   Default   Not a bug   Steve Bate
                   Forex (example: Hotspot)




QuickFIX/J QFJ-90   No PossDup checks are run if the       Bug         Closed   Default   Fixed       Steve Bate
                    SeqNum is the expected next one.




QuickFIX/J QFJ-100 Add support for local time in session   Improvement Closed   Default   Won't Fix   Steve Bate
                   schedule (QF compatibility)
                                                                                                                   30 of 1116
QuickFIX/J QFJ-103 Performance Benchmarking?               Other         Closed     Default   Fixed              Steve Bate




QuickFIX/J QFJ-115 "isSet" method also for field: LastPx   New Feature   Resolved   Default   Cannot Reproduce   Steve Bate




                                                                                                                              31 of 1116
QuickFIX/J QFJ-93   Remove Session objects from global       Improvement Closed   Default   Fixed   Steve Bate
                    map when Acceptors and Initators are
                    destroyed

QuickFIX/J QFJ-121 Duplicate fields and other problem give   Improvement Closed   Default   Fixed   Steve Bate
                   false body length validation error




QuickFIX/J QFJ-122 Some field access was not fully thread-   Bug         Closed   Default   Fixed   Steve Bate
                   safe




                                                                                                                 32 of 1116
QuickFIX/J QFJ-107 session management functionality at   Other   Closed   Default   Fixed   Steve Bate
                   application level




                                                                                                         33 of 1116
QuickFIX/J QFJ-125 session management   Other   Closed   Default   Fixed   Steve Bate




                                                                                        34 of 1116
QuickFIX/J QFJ-109 Session management endDay                Bug   Closed   Default   Fixed   Steve Bate
                   calculation is bad (I would say wrong)




                                                                                                          35 of 1116
QuickFIX/J QFJ-111 Updating QFJ from subversion   Other   Closed   Default   Fixed   Steve Bate




                                                                                                  36 of 1116
QuickFIX/J QFJ-127 quickfix performance   Other   Closed   Default   Fixed   Steve Bate




                                                                                          37 of 1116
QuickFIX/J QFJ-134 Stack overflow when JdbcLog fails to log Bug   Closed   Default   Fixed   Steve Bate
                   a message




                                                                                                          38 of 1116
QuickFIX/J QFJ-133 Return of bug 89 - session lookup   Bug   Closed   Default   Fixed   Steve Bate
                   causes an NPE if JdbcLog is
                   miconfigured initially




                                                                                                     39 of 1116
QuickFIX/J QFJ-136 Add capability to filter out Heartbeats to   Improvement Closed   Default   Fixed   Steve Bate
                   to SLF4JLog and others




                                                                                                                    40 of 1116
QuickFIX/J QFJ-137 SLF4JLog prints itself instead of the   Bug   Closed   Default   Fixed   Toli Kuznets
                   actual logging class in the output




                                                                                                           41 of 1116
QuickFIX/J QFJ-146 Subclasses of                            Bug   Closed   Default   Fixed   Toli Kuznets
                   quickfix.field.UtcTimeStampField don't
                   preserve milliseconds during creation




                                                                                                            42 of 1116
QuickFIX/J QFJ-145 Provide a                                Improvement Closed   Default   Fixed   Toli Kuznets
                   Session.validateMessageBody() method
                   to only validate the body of the message
                   without header or trailer parts.




                                                                                                                  43 of 1116
QuickFIX/J QFJ-143 DataDictionary doesn't preserve the           Bug         Closed   Default   Fixed       Toli Kuznets
                   "required" attribute of header/trailer fields




QuickFIX/J QFJ-124 Provide admin callbacks for logon and       New Feature   Closed   Default   Won't Fix   Steve Bate
                   logoff




                                                                                                                           44 of 1116
QuickFIX/J QFJ-132 Make JdbcLog configurable to skip   Improvement Closed   Default   Fixed   Steve Bate
                   heartbeats




                                                                                                           45 of 1116
QuickFIX/J QFJ-142 Weekday session schedule and default       Bug   Closed   Default   Fixed   Steve Bate
                   locale == Locale.FRENCH




QuickFIX/J QFJ-150 Calling toString() on an empty Message     Bug   Closed   Default   Fixed   Toli Kuznets
                   object resutls in a NullPointerException




                                                                                                              46 of 1116
QuickFIX/J QFJ-161 FieldType gives the wrong Java type for   Bug   Closed   Default   Fixed   Toli Kuznets
                   date-based fields




                                                                                                             47 of 1116
QuickFIX/J QFJ-154 Modify MessageFactory interface to add New Feature   Closed   Default   Fixed   Toli Kuznets
                   a functionality to create a group based
                   on an enclosing message and group type




                                                                                                                  48 of 1116
QuickFIX/J QFJ-156 Is MINA (using java NIO) good for   Other         Closed   Default   Fixed   Steve Bate
                   streaming applications




QuickFIX/J QFJ-168 Add repeating group validation in   New Feature   Closed   Default   Fixed   Unassigned
                   messages




                                                                                                             49 of 1116
QuickFIX/J QFJ-180 acceptor and initiator on localhost;    Other   Closed   Default   Fixed   Steve Bate
                   fromAdmin() callback is not activated




                                                                                                           50 of 1116
QuickFIX/J QFJ-181 Problem with multiple qualifier settings in Bug   Closed   Default   Fixed   Steve Bate
                   JMX object name




                                                                                                             51 of 1116
QuickFIX/J QFJ-184 Improvement to session settings   Improvement Closed   Default   Fixed   Steve Bate
                   (multibyte)




                                                                                                         52 of 1116
QuickFIX/J QFJ-165 Allow for dynamic definition of sessions   Improvement Closed   Default   Fixed   Toli Kuznets




                                                                                                                    53 of 1116
QuickFIX/J QFJ-195 For an initiator to CME, fromAdmin()      Other   Closed   Default   Fixed   Steve Bate
                   callback is not activated for seq-num too
                   low on logon




                                                                                                             54 of 1116
QuickFIX/J QFJ-196 SessionNotFound error during an active   Other   Closed   Default   Fixed   Steve Bate
                   session




QuickFIX/J QFJ-198 Comment line ending file creates infinite Bug    Closed   Default   Fixed   Jörg Thönnes
                   loop in Session Settings




                                                                                                              55 of 1116
QuickFIX/J QFJ-204 Support interpolation during parsing of   Improvement Closed   Default   Fixed   Steve Bate
                   session settings




                                                                                                                 56 of 1116
QuickFIX/J QFJ-211 Race Condition/NPE on   Bug   Closed   Default   Fixed   Steve Bate
                   Session.disconnect()




                                                                                         57 of 1116
QuickFIX/J QFJ-205 Heartbeat Timeouts in 1.2.0   Bug   Closed   Default   Fixed   Steve Bate




                                                                                               58 of 1116
QuickFIX/J QFJ-213 MessageStore should refresh             Improvement Closed   Default   Won't Fix   Steve Bate
                   immediately before connector start or
                   logon




                                                                                                                   59 of 1116
QuickFIX/J QFJ-212 Query behaviour on first Logon message Other   Closed   Default   Fixed   Steve Bate
                   from initiator when disconnected during
                   session expiry




                                                                                                          60 of 1116
QuickFIX/J QFJ-220 QFJ hangs in                            Bug     Closed   Default   Fixed   Steve Bate
                   IoSessionResponder.disconnect() while
                   waiting for scheduled messages to be
                   written




QuickFIX/J QFJ-222 public                              Improvement Closed   Default   Fixed   Steve Bate
                   SessionJmxExporter.createSessionNam
                   e




                                                                                                           61 of 1116
QuickFIX/J QFJ-215 QFJ deadlocks in Session.disconnect() Bug   Closed   Default   Fixed   Steve Bate
                   code when a Windows client disconnects
                   from Linux or Mac server




                                                                                                       62 of 1116
QuickFIX/J QFJ-221 Extend dynamic creation of sessions to   Improvement Closed   Default   Fixed   Steve Bate
                   have template IDs for each FIX version




                                                                                                                63 of 1116
QuickFIX/J QFJ-214 Does SLF4J/Log4J combo ignore           Other   Closed   Default   Fixed   Steve Bate
                   changes to the log4j.properties file?




                                                                                                           64 of 1116
QuickFIX/J QFJ-237 Provide a way to send a sequence reset New Feature   Closed   Default   Fixed   Toli Kuznets
                   (via JMX operation?)




                                                                                                                  65 of 1116
QuickFIX/J QFJ-242 Check for presence of conditionally   New Feature   Open   Default   Unresolved   Unassigned
                   required fields (OpenFIX)




                                                                                                                  66 of 1116
QuickFIX/J QFJ-240 Reject not sent with "bad tag format"   Bug   Closed   Default   Fixed   Unassigned
                   (OpenFIX)




                                                                                                         67 of 1116
QuickFIX/J QFJ-238 No reject sent for message with duplicate Bug   Closed   Default   Fixed   Unassigned
                   field (OpenFIX)




                                                                                                           68 of 1116
QuickFIX/J QFJ-246 First login attempt of initiator          Other   Resolved   Default   Fixed   Steve Bate
                   afterStartTime is responded with logout




QuickFIX/J QFJ-243 SessionState.isWithinHeartBeat never      Other   Resolved   Default   Fixed   Steve Bate
                   seems to be modified or initliazed




                                                                                                               69 of 1116
QuickFIX/J QFJ-252 Quickfix/J stops sending tag 141 on   Bug   Closed   Default   Cannot Reproduce   Unassigned
                   logon




                                                                                                                  70 of 1116
QuickFIX/J QFJ-226 MDEntryTime/Date fields aren't parsed     Bug   Closed   Default   Won't Fix   Steve Bate
                   correctly when Daylight Savings time is
                   in effect




                                                                                                               71 of 1116
QuickFIX/J QFJ-253 CLONE -First login attempt of initiator   Other   Closed   Default   Fixed   Unassigned
                   afterStartTime is responded with logout




                                                                                                             72 of 1116
QuickFIX/J QFJ-233 SendResetSeqNumFlag shows up in    Bug   Closed   Default   Fixed   Steve Bate
                   documentation but is not queried
                   anywhere in the code




                                                                                                    73 of 1116
QuickFIX/J QFJ-257 Error Reading/Writing in MessageStore   Other   Closed   Default   Fixed   Unassigned




                                                                                                           74 of 1116
QuickFIX/J QFJ-236 Make the time interval when Test   New Feature   Closed   Default   Fixed   Toli Kuznets
                   Request being sent configurable




                                                                                                              75 of 1116
QuickFIX/J QFJ-261 Date/time field constructors use current   Improvement Closed   Default   Fixed   Unassigned
                   time by default




                                                                                                                  76 of 1116
QuickFIX/J QFJ-264 Should be                           Improvement Closed   Default   Not a bug   Unassigned
                   TimeZone.getTimeZone("GMT") instead
                   of TimeZone.getTimeZone("UTC")




QuickFIX/J QFJ-259 DoNotSend constructors             Improvement Closed    Default   Won't Fix   Unassigned




QuickFIX/J QFJ-260 onLogout event                     Other        Closed   Default   Fixed       Unassigned




                                                                                                               77 of 1116
QuickFIX/J QFJ-276 Specify order of signature-related trailer   Bug   Closed   Default   Fixed   Unassigned
                   fields




                                                                                                              78 of 1116
QuickFIX/J QFJ-278 method extractField(Group group,        Bug   Open   Default   Unresolved   Unassigned
                   DataDictionary dataDictionary, FieldMap
                   fields) don't check The length of
                   "sohOffset"




                                                                                                            79 of 1116
QuickFIX/J QFJ-267 Method SocketAcceptor.stop() does not   Bug   Closed   Default   Fixed   Unassigned
                   unblock SocketAcceptor.block()




                                                                                                         80 of 1116
QuickFIX/J QFJ-268 LogoutTimeout configuration not   Bug   Closed   Default   Fixed   Unassigned
                   processed correctly




                                                                                                   81 of 1116
QuickFIX/J QFJ-275 Make validation of fields optional in an   New Feature   Closed   Default   Fixed   Unassigned
                   incoming message when using a
                   DataDictionary




QuickFIX/J QFJ-272 Support additional ID fields in SessionID New Feature    Closed   Default   Fixed   Unassigned




                                                                                                                    82 of 1116
QuickFIX/J QFJ-280 Improve behavior of parsing out-of-order Improvement Closed   Default   Fixed   Unassigned
                   fields




                                                                                                                83 of 1116
QuickFIX/J QFJ-265 Log4j or commons-logging integration for Improvement Resolved   Default   Won't Fix   Unassigned
                   the FileLog




QuickFIX/J QFJ-281 Read "LogoutTimeout" Parameter bug    Bug           Closed      Default   Fixed       Unassigned




                                                                                                                      84 of 1116
QuickFIX/J QFJ-287 Provide hook for manually closing      Improvement Closed   Default   Fixed        Unassigned
                   FileLog files




QuickFIX/J QFJ-282 FIXMessageEncoder#encode() may          Bug        Open     Default   Unresolved   Unassigned
                   throws java.nio.BufferOverflowException
                   if message contains Chinese characters




                                                                                                                   85 of 1116
QuickFIX/J QFJ-284 Misspelling in configuration setting   Bug         Closed    Default   Fixed   Unassigned
                   FileLogHeartbeats




QuickFIX/J QFJ-292 On checksum errors, include information Improvement Closed   Default   Fixed   Unassigned
                   on the problem section of the stream




                                                                                                               86 of 1116
QuickFIX/J QFJ-298 Send Binary Data Over Fix               New Feature   Closed   Default   Fixed       Unassigned




QuickFIX/J QFJ-296 Messages logged as being sent even if   Improvement Resolved   Default   Won't Fix   Unassigned
                   the Responser is null




                                                                                                                     87 of 1116
QuickFIX/J QFJ-286 Sequence number not correct after   Bug   Resolved   Default   Fixed   Steve Bate
                   ResendRequest when
                   PersistMessages=N (ATServer
                   configuration)




                                                                                                       88 of 1116
QuickFIX/J QFJ-277 if set "\001" in the StringField, it cause   Bug   Open   Default   Unresolved   Unassigned
                   lots of problems




                                                                                                                 89 of 1116
QuickFIX/J QFJ-279 Fields in groups will not be checked.   Bug           Closed   Default   Cannot Reproduce   Unassigned




QuickFIX/J QFJ-299 Determine Data Type of a Field          New Feature   Closed   Default   Cannot Reproduce   Unassigned




                                                                                                                            90 of 1116
QuickFIX/J QFJ-297 Logout message not received in             Bug   Resolved   Default   Not a bug   Unassigned
                   fromAdmin event, during first failed logon
                   attempt.




                                                                                                                  91 of 1116
QuickFIX/J QFJ-302 Changing SocketConnectPort or         Bug   Resolved   Default   Not a bug   Unassigned
                   SocketConnectHost does not create new
                   set of FileStorePath temp files




                                                                                                             92 of 1116
QuickFIX/J QFJ-300 "BigDecimal" build of QuickFIX/J doesn't Bug   Closed   Default   Fixed   Unassigned
                   preserve precision in quantities




                                                                                                          93 of 1116
QuickFIX/J QFJ-306 JdbcStore has an incorrect query for the Bug   Closed   Default   Fixed   Unassigned
                   UPDATE, when it wants to update a
                   message whose sequence was already
                   entered...




                                                                                                          94 of 1116
QuickFIX/J QFJ-316 Problem with proxool configuration leads Bug   Closed   Default   Fixed   Unassigned
                   to SQLExceptions




                                                                                                          95 of 1116
QuickFIX/J QFJ-321 PersistMessages config parameter           Bug   Resolved   Default   Not a bug   Unassigned
                   default value is wrong in the QuickFIX/J
                   User Manual




                                                                                                                  96 of 1116
QuickFIX/J QFJ-318 FileLog for Messages Sometimes Omits Bug   Closed   Default   Fixed   Unassigned
                   Endline Between Messages




                                                                                                      97 of 1116
QuickFIX/J QFJ-320 Negative TimeZoneOffset     Bug   Resolved   Default   Duplicate   Unassigned
                   newIncorrectDataException




                                                                                                   98 of 1116
QuickFIX/J QFJ-332 Session sendToTarget(Message           Bug   Closed   Default   Fixed   Unassigned
                   message, SessionID sessionID) throws
                   NullPointerException




                                                                                                        99 of 1116
QuickFIX/J QFJ-331 SessionSettings variables remove \   Bug   Closed   Default   Won't Fix   Unassigned
                   during replacement




QuickFIX/J QFJ-311 FileUtil open fails if          Bug        Closed   Default   Fixed       Unassigned
                   CONTEXT_RESOURCE finds file and
                   CLASSLOADER_RESOURCE does not -
                   no break in switch




                                                                                                          100 of 1116
QuickFIX/J QFJ-338 Response to TestRequest received     Bug   Closed   Default   Fixed   Unassigned
                   before the SessionState is updated




                                                                                                      101 of 1116
QuickFIX/J QFJ-335 NullPointerException in LogUtil when   Bug   Closed   Default   Fixed   Unassigned
                   logging event with
                   SingleThreadedEventHandlingStrategy




                                                                                                        102 of 1116
QuickFIX/J QFJ-337 IoSessionResponder.send does not   Bug   Closed   Default   Fixed   Unassigned
                   return true when message is sent




                                                                                                    103 of 1116
QuickFIX/J QFJ-339 Message grammar checks not handled   Bug   Resolved   Default   Not a bug   Unassigned
                   correctly before Logon messages
                   exchanged




                                                                                                            104 of 1116
QuickFIX/J QFJ-356 CLONE -CLONE -First login attempt of       Other   Closed   Default   Fixed   Unassigned
                   initiator afterStartTime is responded with
                   logout




                                                                                                              105 of 1116
QuickFIX/J QFJ-348 Unable to restart a stopped initiator   Bug   Closed   Default   Fixed   Unassigned
                   (SocketInitator)




                                                                                                         106 of 1116
QuickFIX/J QFJ-350 Sessions do not cleanup after     Bug           Resolved   Default   Duplicate    Unassigned
                   themselves when un registered




QuickFIX/J QFJ-362 Enhance message and message_log   New Feature   Open       Default   Unresolved   Unassigned
                   table




                                                                                                                  107 of 1116
QuickFIX/J QFJ-363 Store rejected message in message       New Feature   Resolved   Default   Fixed        Unassigned
                   table as well




QuickFIX/J QFJ-369 Send too many logout messages when Bug                Open       Default   Unresolved   Unassigned
                   continuely received messages which has
                   BadTime or doBadCompID




QuickFIX/J QFJ-373 Add a new validation configruation to   New Feature   Open       Default   Unresolved   Unassigned
                   bypass the data type check


                                                                                                                        108 of 1116
QuickFIX/J QFJ-374 ValidateFieldsHaveValues=N does not      Bug   Resolved   Default   Not a bug   Unassigned
                   work for enum fields




QuickFIX/J QFJ-380 Incorrect response to invalid sequence   Bug   Closed     Default   Fixed       Unassigned
                   reset acknowledgment




                                                                                                                109 of 1116
QuickFIX/J QFJ-394 SocketInitiator.stop(false) always waits   Bug   Open       Default   Unresolved   Unassigned
                   sessions logoutTimeout before exit




QuickFIX/J QFJ-386 Out of memory exception on massive         Bug   Resolved   Default   Not a bug    Unassigned
                   message intake with slow application
                   code




                                                                                                                   110 of 1116
QuickFIX/J QFJ-393 When using JmxExporter, restarting QFJ Bug   Closed   Default   Fixed   Unassigned
                   Initiator throws Exception re-registering
                   mbean




                                                                                                        111 of 1116
QuickFIX/J QFJ-390 BeginString checking in case of FIX 5.0   Bug   Resolved   Default   Not a bug   Unassigned
                   (FIXT 1.1)




                                                                                                                 112 of 1116
QuickFIX/J QFJ-417 JMX : add the Queue Size information in Improvement Resolved   Default   Fixed   Unassigned
                   SessionAdminMBean




                                                                                                                 113 of 1116
QuickFIX/J QFJ-405 Fields missing on resends   Bug   Open   Default   Unresolved   Unassigned




                                                                                                114 of 1116
QuickFIX/J QFJ-400 Make scheduledExecutorService non-   New Feature   Open   Default   Unresolved   Unassigned
                   static




                                                                                                                 115 of 1116
QuickFIX/J QFJ-418 Session Schedule settings: also try with   Improvement Resolved   Default   Fixed   Unassigned
                   US day names




                                                                                                                    116 of 1116
QuickFIX/J QFJ-426 Message header will not validate when   Bug   Resolved   Default   Fixed   Unassigned
                   containing 'Hop' group




                                                                                                           117 of 1116
QuickFIX/J QFJ-410 ThreadPerSessionEventHandlingStrateg Bug   Resolved   Default   Fixed   Unassigned
                   y still leaks threads




                                                                                                        118 of 1116
QuickFIX/J QFJ-409 Stack overflow when processing a large   Bug         Open       Default   Unresolved   Unassigned
                   number of queued messages




QuickFIX/J QFJ-420 Add a setting for Logon Interval         Improvement Resolved   Default   Fixed        Unassigned



QuickFIX/J QFJ-415 Use data dictionary to determine         Improvement Open       Default   Unresolved   Unassigned
                   message category for admin messages




                                                                                                                       119 of 1116
QuickFIX/J QFJ-431 Allow receiving admin messages when   Improvement Resolved   Default   Fixed   Unassigned
                   out of sequence




                                                                                                               120 of 1116
QuickFIX/J QFJ-412 DynamicAcceptorSessionProvider does Bug     Resolved   Default   Fixed   Toli Kuznets
                   not correctly handle disconnected clients




                                                                                                           121 of 1116
QuickFIX/J QFJ-433 Session can deadlock on responderSync Bug   Resolved   Default   Fixed   Unassigned
                   and reduced concurrency




                                                                                                         122 of 1116
QuickFIX/J QFJ-402 Provide useful exception description for   Bug   Closed   Default   Fixed   Laurent Danesi
                   IncorrectTagValue, NoTagValue and
                   other FIX specific exceptions




                                                                                                           123 of 1116
QuickFIX/J QFJ-436 \\ characters are skipped from the   Bug         Resolved   Default   Not a bug   Unassigned
                   directory name on Windows




QuickFIX/J QFJ-430 Session without scheduled Reset      Improvement Resolved   Default   Fixed       Unassigned




                                                                                                                  124 of 1116
QuickFIX/J QFJ-432 Trace reason when session gets   Improvement Resolved   Default   Fixed   Unassigned
                   disconnected




QuickFIX/J QFJ-437 Session time check failed        Other       Closed     Default   Fixed   Unassigned




                                                                                                          125 of 1116
QuickFIX/J QFJ-443 UseDataDictionary=N and validation   Bug   Resolved   Default   Fixed   Unassigned




                                                                                                        126 of 1116
QuickFIX/J QFJ-447 MsgSeqNum too low   Other   Closed   Default   Fixed   Unassigned




                                                                                       127 of 1116
QuickFIX/J QFJ-451 Hops Repeating Group in Message       Bug     Resolved   Default   Fixed   Laurent Danesi
                   Header causing nullpointerException




QuickFIX/J QFJ-464 Logon session                         Other   Closed     Default   Fixed   Unassigned




                                                                                                           128 of 1116
QuickFIX/J QFJ-471 Issue when receive Market data request Bug   Open   Default   Unresolved   Unassigned
                   messages




                                                                                                           129 of 1116
QuickFIX/J QFJ-468 Quote subscribe   Other   Closed   Default   Fixed   Unassigned




                                                                                     130 of 1116
QuickFIX/J QFJ-474 Need Suppressing Tag not defined   Other       Closed     Default   Fixed       Unassigned
                   exception




QuickFIX/J QFJ-472 Add FIX 5.0 SP1 and SP2 to         Improvement Resolved   Default   Duplicate   Unassigned
                   quickfix.MessageUtils




                                                                                                                131 of 1116
QuickFIX/J QFJ-469 Market Data Request   Other   Closed   Default   Fixed   Unassigned




                                                                                         132 of 1116
QuickFIX/J QFJ-475 ThreadPerSessionEventHandlingStrateg Bug   Resolved   Default   Duplicate   Unassigned
                   y thread not exiting




                                                                                                            133 of 1116
QuickFIX/J QFJ-476 Message vailidation is done even if use   Bug   Resolved   Default   Fixed   Unassigned
                   data dictionary flag is set "N"




                                                                                                             134 of 1116
QuickFIX/J QFJ-481 Connection terminated when receiving   Bug         Resolved   Default   Not a bug   Unassigned
                   Logon-response after Logon with
                   ResetSeqNumFlag=Y




QuickFIX/J QFJ-479 Add FIX50SP1 and FIX50SP2 to           Improvement Resolved   Default   Duplicate   Unassigned
                   ApplVerID




QuickFIX/J QFJ-485 EnabledProtocols, CipherSuites         Improvement Resolved   Default   Fixed       Unassigned



                                                                                                                    135 of 1116
QuickFIX/J QFJ-492 re:                                  Bug     Closed   Default   Duplicate   Unassigned
                   ThreadPerSessionEventHandlingStrateg
                   y still leaks threads
QuickFIX/J QFJ-497 Question: How to capture Every       Other   Closed   Default   Fixed       Unassigned
                   incoming message...




                                                                                                            136 of 1116
QuickFIX/J QFJ-494 proected empty constructor for Sesson   Improvement Open       Default   Unresolved   Unassigned
                   class




QuickFIX/J QFJ-487 QuickFix FieldException has default     Improvement Resolved   Default   Fixed        Unassigned
                   scope




                                                                                                                      137 of 1116
QuickFIX/J QFJ-488 No custom tags in Instrument component Bug    Resolved   Default   Not a bug   Unassigned




QuickFIX/J QFJ-502 Lot of test requests sent to server   Other   Closed     Default   Fixed       Unassigned




                                                                                                               138 of 1116
QuickFIX/J QFJ-507 CLONE -Quote subscribe                Other    Closed   Default   Fixed   Unassigned




QuickFIX/J QFJ-506 How can I deactivate message logging ? Other   Closed   Default   Fixed   Unassigned




                                                                                                          139 of 1116
QuickFIX/J QFJ-517 CLONE -On checksum errors, include        Improvement Open   Default   Unresolved   Unassigned
                   information on the problem section of the
                   stream




                                                                                                                    140 of 1116
QuickFIX/J QFJ-513 Sequence gets reset even with     Bug   Resolved   Default   Not a bug   Unassigned
                   ResetOnLogon, ResetOnLogout and
                   ResetOnDisconnect all set to N.




                                                                                                         141 of 1116
QuickFIX/J QFJ-510 ThreadPerSessionEventHandlingStrateg Improvement Resolved   Default   Duplicate   Unassigned
                   y.MessageDispatchingThread threads
                   live after disconnect




                                                                                                                  142 of 1116
QuickFIX/J QFJ-524 Session responder lock fix for QFJ-421   Bug   Resolved   Default   Duplicate   Unassigned
                   got reverted in SVN




                                                                                                                143 of 1116
QuickFIX/J QFJ-518 Incomplete addressing on             Bug   Open   Default   Unresolved   Unassigned
                   BusinessMessageReject when using a
                   FIX routing network




                                                                                                         144 of 1116
QuickFIX/J QFJ-537 Session scheduling - problems with JDK Other     Closed   Default   Fixed        Unassigned
                   Nanotime Bug




QuickFIX/J QFJ-531 To set the number of logon attempts   Improvement Open    Default   Unresolved   Unassigned




                                                                                                                 145 of 1116
QuickFIX/J QFJ-529 RTT benchmarking                  Improvement Open       Default   Unresolved   Unassigned




QuickFIX/J QFJ-540 CLONE -Market Data Request        Other       Closed     Default   Fixed        Unassigned




QuickFIX/J QFJ-541 Add TOS and DSCP support to QFJ   Improvement Resolved   Default   Fixed        Laurent Danesi
                                                                                                                146 of 1116
QuickFIX/J QFJ-555 Problems with heartbeating in one      Bug   Open   Default   Unresolved   Unassigned
                   session can obstruct heartbeating on
                   other sessions




                                                                                                           147 of 1116
QuickFIX/J QFJ-558 Can no longer send messages to              Bug   Open   Default   Unresolved   Unassigned
                   initiators that have not yet been started




                                                                                                                148 of 1116
QuickFIX/J QFJ-556 ThreadedSocketAcceptor/DynamicAccep Bug   Open   Default   Unresolved   Unassigned
                   torSessionProvider do not get checked
                   by SessionTimerTask




                                                                                                        149 of 1116
QuickFIX/J QFJ-564 Operating on (modifying) repeating   Improvement Open   Default   Unresolved   Unassigned
                   groups




QuickFIX/J QFJ-566 Incoming Logout message doesn't go to Bug       Open    Default   Unresolved   Unassigned
                   Application.fromAdmin() callback




                                                                                                               150 of 1116
QuickFIX/J QFJ-573 The text of an unrequested logout       Improvement Open         Default   Unresolved   Unassigned
                   message is lost




QuickFIX/J QFJ-574 Logout reason "Incorrect BeginString" on Bug         Open        Default   Unresolved   Unassigned
                   UnsupportedVersion exception is
                   ambiguous




QuickFIX/J QFJ-579 display the fix message in case of Length Improvement Resolved   Default   Fixed        Eric Deshayes
                   format error



                                                                                                                        151 of 1116
QuickFIX/J QFJ-583 Session.forceStoreResync doesn't check Bug           Open        Default   Unresolved   Unassigned
                   persistMessages




QuickFIX/J QFJ-578 use JMX for force test request, heartbeat Improvement Resolved   Default   Fixed        Eric Deshayes
                   and logout




                                                                                                                        152 of 1116
QuickFIX/J QFJ-429 Concurrency reading / writting file store   Bug           Resolved   Default   Fixed   Unassigned




QuickFIX/J QFJ-427 ForceResync option per session              New Feature   Resolved   Default   Fixed   Unassigned




                                                                                                                       153 of 1116
QuickFIX/J QFJ-522 Engine incorrectly assumes          Bug   Resolved   Default   Fixed   Grant Birchmeier
                   CstmApplVerID implies Session and
                   DataDictionary uniqueness




                                                                                                      154 of 1116
QuickFIX/J QFJ-484 Session responder lock change   Bug   Closed   Default   Won't Fix   Unassigned
                   inadequate




                                                                                                     155 of 1116
QuickFIX/J QFJ-401 Badly behaved counterparty sending   Bug   Closed   Default   Fixed   Unassigned
                   FIX.5.0 as begin string causes
                   exceptions




                                                                                                      156 of 1116
QuickFIX/J QFJ-493 When a gap fill satisfies a resend   Bug   Open   Default   Unresolved   Unassigned
                   request, QF does not realize it




                                                                                                         157 of 1116
QuickFIX/J QFJ-448 Skipped heartbeats                    Bug          Open        Default   Unresolved   Unassigned




QuickFIX/J QFJ-446 Tag appears more than once... the error Improvement Open       Default   Unresolved   Unassigned
                   happens for user defined fields which
                   can appear more than once
QuickFIX/J QFJ-590 Incorrect BeginString set in            Bug         Resolved   Default   Not a bug    Unassigned
                   quickfix.fix50.Message class
                   [getHeader().setField(new
                   BeginString("FIXT.1.1"));




                                                                                                                      158 of 1116
QuickFIX/J QFJ-596 quickfixj modularity                Improvement Closed      Default   Not a bug    Grant Birchmeier




QuickFIX/J QFJ-582 Converters improvement for better   Improvement In Progress Default   Unresolved   Eric Deshayes
                   performance




                                                                                                                  159 of 1116
QuickFIX/J QFJ-445 Problem with Acceptance Test Suite   Bug   Closed   Default   Fixed   Unassigned




                                                                                                      160 of 1116
QuickFIX/J QFJ-570 Inappropriate sequence resync   Bug   Closed   Default   Fixed   Unassigned




                                                                                                 161 of 1116
QuickFIX/J QFJ-600 TradingSessionStatus is considered as   Bug   Closed     Default   Fixed   Unassigned
                   an admin message




QuickFIX/J QFJ-413 The repeating group count check doesn't Bug   Resolved   Default   Fixed   Unassigned
                   work if the count == 0




                                                                                                           162 of 1116
QuickFIX/J QFJ-604 Logout reason "Incorrect BeginString" on Bug   Closed   Default   Duplicate   Jörg Thönnes
                   UnsupportedVersion exception is
                   ambiguous




                                                                                                            163 of 1116
QuickFIX/J QFJ-605 Logout reason "Incorrect BeginString" on Bug   Closed   Default   Duplicate   Jörg Thönnes
                   UnsupportedVersion exception is
                   ambiguous




                                                                                                            164 of 1116
QuickFIX/J QFJ-606 Logout reason "Incorrect BeginString" on Bug   Closed   Default   Duplicate   Jörg Thönnes
                   UnsupportedVersion exception is
                   ambiguous




                                                                                                            165 of 1116
QuickFIX/J QFJ-601 FIX protocol version 4.4 filed            Bug   Resolved   Default   Fixed   Unassigned
                   InstrAttribType (871) should include the
                   types described in "Description" section.




                                                                                                             166 of 1116
QuickFIX/J QFJ-521 Support use of partial session ID for   New Feature   Reopened   Default   Unresolved   Grant Birchmeier
                   routing purposes




                                                                                                                       167 of 1116
QuickFIX/J QFJ-482 Provide configuration for local ip/port   New Feature   Resolved   Default   Fixed   Jörg Thönnes
                   binding in the Initiator




QuickFIX/J QFJ-609 Improve JMX session registration.         Improvement Resolved     Default   Fixed   Steve Bate




                                                                                                                     168 of 1116
QuickFIX/J QFJ-610 java.io.IOException when using FileStore Bug   Open   Default   Unresolved   Unassigned




                                                                                                             169 of 1116
QuickFIX/J QFJ-106 Bug when parsing repeating groups   Bug   Closed   Default   Fixed   Steve Bate




                                                                                                     170 of 1116
QuickFIX/J QFJ-478 can not parse cme definition message   Other   Closed   Default   Fixed   Unassigned
                   from cme file




                                                                                                          171 of 1116
QuickFIX/J QFJ-615 CLONE - can not parse cme definition   Other   Open   Default   Unresolved   Unassigned
                   message from cme file




                                                                                                             172 of 1116
QuickFIX/J QFJ-614 CLONE - can not parse cme definition   Other   Open   Default   Unresolved   Unassigned
                   message from cme file




                                                                                                             173 of 1116
QuickFIX/J QFJ-622 logout after each resend request   Bug   Open   Default   Unresolved   Unassigned




                                                                                                       174 of 1116
QuickFIX/J QFJ-389 DataDictionary handling in case of FIX   Bug   Closed   Default   Not a bug   Unassigned
                   5.0




                                                                                                              175 of 1116
QuickFIX/J QFJ-603 Logout reason "Incorrect BeginString" on Bug   In Progress Default   Unresolved   Jörg Thönnes
                   UnsupportedVersion exception is
                   ambiguous




                                                                                                                176 of 1116
QuickFIX/J QFJ-626 ResendRequest (silently) aborted when Bug   Open   Default   Unresolved   Unassigned
                   one of the message to resend was (sent
                   and) stored with a bad checksum




                                                                                                          177 of 1116
QuickFIX/J QFJ-632 isTimeToGenerateLogon() in Session    Bug   Open   Default   Unresolved   Unassigned
                   always returns true -> Initiators
                   reconnect immediately when a Server
                   closes the connection




                                                                                                          178 of 1116
QuickFIX/J QFJ-638 SocketSynchronousWrites=Y Hangs     Bug     Open   Default   Unresolved   Unassigned
                   Threads on Session responderSync




QuickFIX/J QFJ-623 How do you change CompIDs, IP and   Other   Open   Default   Unresolved   Unassigned
                   port of a session at runtime?




                                                                                                          179 of 1116
QuickFIX/J QFJ-568 MsgSeqNum too low, expecting 151 but   Bug   Open   Default   Unresolved   Unassigned
                   received 150




                                                                                                           180 of 1116
QuickFIX/J QFJ-637 QuickFixJ appears to modify headers of     Bug   Closed   Default   Not a bug   Unassigned
                   a message after delivery; iteration over
                   the Header's fields on another thread
                   produces a
                   ConcurrentModificationException




                                                                                                                181 of 1116
QuickFIX/J QFJ-648 Logon with negative heartbeat interval   Bug   Closed   Default   Fixed   Christoph John
                   (HeartBtInt) should be rejected




                                                                                                         182 of 1116
QuickFIX/J QFJ-563 SocketAcceptor initialization is not   Bug   Closed   Default   Fixed   Christoph John
                   properly synchronized




                                                                                                       183 of 1116
QuickFIX/J QFJ-657 TestRequest should be sent before a   Improvement Open   Default   Unresolved   Unassigned
                   Logout is sent. (Initiator)




                                                                                                                184 of 1116
QuickFIX/J QFJ-654 Rejecting due to OrigSendingTime not   Improvement Resolved   Default   Fixed   Christoph John
                   being in Tag without Data Dictionary




                                                                                                               185 of 1116
QuickFIX/J QFJ-557 Session.generateReject methods may     Bug      Open        Default   Unresolved   Unassigned
                   incorrectly increment
                   nextTargetMsgSeqNum in some
                   scenarios




QuickFIX/J QFJ-653 IOException if sessionTimestamp file   Bug      Resolved    Default   Fixed        Laurent Danesi
                   exists but is empty


QuickFIX/J QFJ-639 QFJ-609 (JMX Registration) Fails For Improvement Resolved   Default   Fixed        Unassigned
                   Dynamic Sessions Using
                   ThreadPerSessionEventHandlingStrateg
                   y




                                                                                                                   186 of 1116
QuickFIX/J QFJ-572 RuntimeExceptions cause messages to   Bug   Open   Default   Unresolved   Unassigned
                   be silently dropped




                                                                                                          187 of 1116
QuickFIX/J QFJ-119 No JDBC transactions around storing   Other   Closed   Default   Fixed   Steve Bate
                   messages and updating sequence
                   number.




                                                                                                         188 of 1116
QuickFIX/J QFJ-419 Reconnect Interval: set different interval   Improvement Resolved   Default   Fixed   Unassigned
                   values




                                                                                                                      189 of 1116
QuickFIX/J QFJ-666 FIXMessageEncoder got                 Improvement Closed   Default   Duplicate   Unassigned
                   BufferOverflowException when encoding
                   fix mesage




                                                                                                                 190 of 1116
QuickFIX/J QFJ-619 Late Resend Request causes sequence Other            Open       Default   Unresolved   Unassigned
                   number mayhem : what happened?




QuickFIX/J QFJ-404 A validation configuration to bypass   New Feature   Resolved   Default   Won't Fix    Unassigned
                   checking of "Tag appears more than
                   once"




                                                                                                                       191 of 1116
QuickFIX/J QFJ-567 Would like QuickFix/J to natively support New Feature   Resolved   Default   Fixed   Unassigned
                   tag NextExpectedMsgSeqNum on logon
                   as detailed in FIX Session Protocol 1.1
                   Errata




                                                                                                                     192 of 1116
QuickFIX/J QFJ-659 Sequence number issues when acceptor Bug   Open   Default   Unresolved   Unassigned
                   sends a message immediately following
                   logon response




                                                                                                         193 of 1116
QuickFIX/J QFJ-38   FIX Message support double-byte   New Feature   Open   Default   Unresolved   Unassigned
                    charset.




QuickFIX/J QFJ-677 The fix for QFJ-318 was reverted   Bug           Open   Default   Unresolved   Unassigned
                   (inadvertently?) in r928




                                                                                                               194 of 1116
QuickFIX/J QFJ-247 Allow for dynamic session addition in   Improvement Open      Default   Unresolved   Unassigned
                   AbstractSocketInitiator




QuickFIX/J QFJ-683 Tag 43=Y is not being sent when I set   Bug        Resolved   Default   Not a bug    Unassigned
                   the value in getHeader()




                                                                                                                     195 of 1116
QuickFIX/J QFJ-459 java.lang.StackOverflowError when   Bug   Closed   Default   Fixed   Unassigned
                   disconnecting file system




                                                                                                     196 of 1116
QuickFIX/J QFJ-225 Enhance JMX support to include   Improvement Closed   Default   Fixed   Steve Bate
                   notifications of login/logout




                                                                                                        197 of 1116
QuickFIX/J QFJ-169 Message parsing fails on messages with Bug     Open   Default   Unresolved   Unassigned
                   invalid fields in repeating groups with non-
                   obvious errors




                                                                                                             198 of 1116
QuickFIX/J QFJ-585 TradeCaptureReport.NoSides parsing   Other   Open   Default   Unresolved   Unassigned
                   fail




                                                                                                           199 of 1116
QuickFIX/J QFJ-378 SessionSchedule incorrectly handles   Bug   Open   Default   Unresolved   Unassigned
                   Daylight Savings timezone change




                                                                                                          200 of 1116
QuickFIX/J QFJ-477 TAG_SPECIFIED_OUT_OF_REQUIRED Bug     Closed   Default   Fixed   Unassigned
                   _ORDER error while creating message
                   from another FIX message and
                   doValidation = false




                                                                                                 201 of 1116
QuickFIX/J QFJ-271 StackOverflowError trying to process   Bug   Open   Default   Unresolved   Unassigned
                   queued SequenceReset




                                                                                                           202 of 1116
QuickFIX/J QFJ-658 Sequence numbers not checked for   Bug   Open   Default   Unresolved   Unassigned
                   incoming ResendRequest




                                                                                                       203 of 1116
QuickFIX/J QFJ-444 Logout logic problem   Bug   Open   Default   Unresolved   Unassigned




                                                                                           204 of 1116
QuickFIX/J QFJ-687 Lost message on package fragmentation Bug             Open    Default   Unresolved   Unassigned
                   at 12 bytes in a FIXT.1.1 message




QuickFIX/J QFJ-416 Support Header/Trailer field ordering in   Improvement Open   Default   Unresolved   Laurent Danesi
                   code generation




                                                                                                                     205 of 1116
QuickFIX/J QFJ-255 Remove dependencies between different Improvement Open   Default   Unresolved   Unassigned
                   FIX version jarfiles




                                                                                                                206 of 1116
QuickFIX/J QFJ-673 QFJ sequence problem following       Bug      Open       Default   Unresolved   Unassigned
                   inbound SequenceReset - a previously
                   received ResendRequest not "queued"?




QuickFIX/J QFJ-690 ConfigError Exception, Component Not    Bug   Resolved   Default   Fixed        Christoph John
                   Found -- doesn't say which component!




                                                                                                                207 of 1116
QuickFIX/J QFJ-696 Possibility to set SessionStatus on   Improvement Resolved   Default   Fixed   Christoph John
                   Logout




QuickFIX/J QFJ-680 UtcTimestampConverter.convert()       Bug         Resolved   Default   Fixed   Christoph John
                   threading issue




                                                                                                              208 of 1116
QuickFIX/J QFJ-695 Remove logging on invocation of       Improvement Resolved   Default   Fixed   Christoph John
                   ApplicationExtended.canLogon(sessionI
                   D)




                                                                                                              209 of 1116
QuickFIX/J QFJ-665 "Dangling meta character '*' near index   Bug   Resolved   Default   Fixed   Christoph John
                   0" Exception when trying to use new
                   ReconnectInterval syntax from QFJ-419




                                                                                                            210 of 1116
QuickFIX/J QFJ-544 Header with BeginString=FIXT.1.1   Bug   Resolved   Default   Fixed   Christoph John
                   incorrectly parsed by
                   FIXMessageDecoder (manifests as
                   missing messages)




                                                                                                     211 of 1116
QuickFIX/J QFJ-592 (FIXT .1.1) Application version id can be Bug   Open   Default   Unresolved   Unassigned
                   tested before a previous logon message
                   that sets the default has completed (race
                   condition)




                                                                                                              212 of 1116
QuickFIX/J QFJ-660 Sequence number file can become          Bug         Resolved   Default   Fixed   Christoph John
                   corrupted.




QuickFIX/J QFJ-10   Add support for repeating group count   Improvement Closed     Major     Fixed   Steve Bate
                    validation




                                                                                                                  213 of 1116
QuickFIX/J QFJ-30   Weekly session does not work   Bug   Closed   Major   Fixed   Steve Bate




                                                                                               214 of 1116
QuickFIX/J QFJ-28   FileStore: working directory patch   Improvement Closed   Major   Fixed   Steve Bate




                                                                                                           215 of 1116
QuickFIX/J QFJ-72   Configuration shoule be allowed more      Improvement Closed   Major   Fixed   Steve Bate
                    information in case of FIX hosting server
                    highly security




                                                                                                                216 of 1116
QuickFIX/J QFJ-71   Initiator's application.onLogout() is not   Bug   Closed   Major   Fixed   Steve Bate
                    called if Acceptor connection is forcibly
                    closed




                                                                                                            217 of 1116
QuickFIX/J QFJ-91   Sockets not closed properly under   Bug   Resolved   Major   Not a bug   Steve Bate
                    certain circumstances




                                                                                                          218 of 1116
QuickFIX/J QFJ-131 more than one connection   Other   Closed   Major   Fixed   Steve Bate




                                                                                            219 of 1116
QuickFIX/J QFJ-159 Add msgTypeName -> msgType   Improvement Closed   Major   Fixed   Steve Bate
                   mapping to DataDictionary




                                                                                                  220 of 1116
QuickFIX/J QFJ-185 Improper use of synchronized keyword   Bug   Closed   Major   Fixed   Steve Bate




                                                                                                      221 of 1116
QuickFIX/J QFJ-227 Login Reject (possible SessionReject)   Other   Resolved   Major   Fixed   Steve Bate




                                                                                                           222 of 1116
QuickFIX/J QFJ-229 FIX engine stuck in unrecoverable state   Bug   Resolved   Major   Duplicate   Steve Bate
                   when trying to connect under poor
                   network conditions




                                                                                                               223 of 1116
QuickFIX/J QFJ-263 ConfigError when trying to setup           Other   Closed   Major   Incomplete   Unassigned
                   SessionSettings from code by filling out
                   Dictionary object




                                                                                                                 224 of 1116
QuickFIX/J QFJ-258 MINA acceptor unbind closes sockets   Bug   Closed   Major   Fixed   Unassigned
                   before logout




                                                                                                     225 of 1116
QuickFIX/J QFJ-231 During the logou process, sometimes in      Bug   Closed   Major   Fixed   Steve Bate
                   the initiator side's log file there is an
                   unsend logon message.




                                                                                                           226 of 1116
QuickFIX/J QFJ-269 validate method in DataDictionary does   Bug   Closed   Major   Fixed   Unassigned
                   not validate group fields




                                                                                                        227 of 1116
QuickFIX/J QFJ-291 Problems with initiator reconnect will   Bug   Closed   Major   Fixed   Unassigned
                   block heartbeats on other sessions




                                                                                                        228 of 1116
QuickFIX/J QFJ-283 quickfix fail to send reject when the     Bug   Resolved   Major   Cannot Reproduce   Unassigned
                   message parsing fails due to invalid data




                                                                                                                      229 of 1116
QuickFIX/J QFJ-314 JMXExporter should escape the values     Bug         Closed   Major   Fixed   Unassigned
                   of targetCompId and other session
                   params




QuickFIX/J QFJ-330 Method do get the avilable Groups in a   Improvement Closed   Major   Fixed   Unassigned
                   Group list from the FieldMap Object




                                                                                                              230 of 1116
QuickFIX/J QFJ-334 New messages are interleaved with old   Bug   Resolved   Major   Won't Fix   Unassigned
                   ones during a counterparty replay
                   request




                                                                                                             231 of 1116
QuickFIX/J QFJ-360 public static Message                  New Feature   Closed     Major   Won't Fix    Unassigned
                   Message.getInstance(String
                   messageStr)




QuickFIX/J QFJ-361 new Group(int, int) should use Dictionary Improvement Open      Major   Unresolved   Unassigned
                   to decide the tag order




QuickFIX/J QFJ-367 A validation configuration to bypass   New Feature   Resolved   Major   Won't Fix    Unassigned
                   checking of enumeration for a tag




                                                                                                                     232 of 1116
QuickFIX/J QFJ-379 Sequence number reset wipes out any          Bug   Resolved   Major   Not a bug    Unassigned
                   pending queued messages




QuickFIX/J QFJ-385 If one Session reset failed, it will cause   Bug   Open       Major   Unresolved   Unassigned
                   all existed session failed




                                                                                                                   233 of 1116
QuickFIX/J QFJ-411 Issue with formatting of Double Fields   Bug   Resolved   Major   Not a bug   Unassigned
                   like the price field etc.




                                                                                                              234 of 1116
QuickFIX/J QFJ-458 ConcurrentModificationException raised   Bug   Resolved   Major   Fixed   Unassigned
                   from quickfix.Session.nextQueued




                                                                                                          235 of 1116
QuickFIX/J QFJ-491 ThreadPerSessionEventHandlingStrateg Bug   Resolved   Major   Duplicate   Unassigned
                   y leaks threads




                                                                                                          236 of 1116
QuickFIX/J QFJ-530 FIX Session Resets By Itself   Other   Closed   Major   Fixed   Unassigned




                                                                                                237 of 1116
QuickFIX/J QFJ-538 Multiple session, but uses the same   Other   Closed   Major   Fixed   Unassigned
                   host/port




                                                                                                       238 of 1116
QuickFIX/J QFJ-554 SleepycatStore can enter infinite loop   Bug   Open   Major   Unresolved   Unassigned
                   retrieving messages for resend.




                                                                                                           239 of 1116
QuickFIX/J QFJ-551 Sender comp id doesnt not get reflected Bug   Open   Major   Unresolved   Unassigned
                   while creating a session if given at
                   runtime




                                                                                                          240 of 1116
QuickFIX/J QFJ-571 QFJ Timer - JDBCStore reset issues   Bug   Open   Major   Unresolved   Unassigned




                                                                                                       241 of 1116
QuickFIX/J QFJ-584 Repeated test request with dynamic   Other   Open   Major   Unresolved   Unassigned
                   acceptor




                                                                                                         242 of 1116
QuickFIX/J QFJ-586 SQL error when restarting QuickFIX/J   Bug        Open        Major   Unresolved   Unassigned
                   session (java.sql.SQLException: ORA-
                   00001: unique constraint violated)




QuickFIX/J QFJ-366 ValidateFieldsOutOfOrder cannot handle Improvement Resolved   Major   Fixed        Unassigned
                   Out of order repeating group members




                                                                                                                   243 of 1116
QuickFIX/J QFJ-569 QuickFix/J is not scalable due to overly   Improvement Open   Major   Unresolved   Unassigned
                   long duration lock on sequence number
                   in Session.sendRaw




                                                                                                                   244 of 1116
QuickFIX/J QFJ-535 ValidateFieldsOutOfOrder=N not applied Bug   Closed   Major   Fixed   Unassigned
                   on all message levels




                                                                                                      245 of 1116
QuickFIX/J QFJ-536 Checksum patch   Bug   Resolved   Major   Fixed   Unassigned




                                                                                  246 of 1116
QuickFIX/J QFJ-627 Starting a ThreadedSocketInitiator   Bug   Closed   Major   Duplicate   Laurent Danesi
                   overwrites the default settings




                                                                                                       247 of 1116
QuickFIX/J QFJ-630 If the quote and trade server is different   Bug   Closed   Major   Not a bug   Laurent Danesi
                   then developers have no way to
                   distinguish the session id when the
                   configuration details for the two server
                   are same except the host and port




                                                                                                               248 of 1116
QuickFIX/J QFJ-631 Wrong checksum calculation in   Bug   Open   Major   Unresolved   Unassigned
                   "quickfix.Field.getTotal()"




                                                                                                  249 of 1116
QuickFIX/J QFJ-650 Wrong handling of messages without   Bug   Closed   Major   Fixed   Christoph John
                   sequence number (MsgSeqNum) - leads
                   to wrong Reject message and increase
                   of target sequence number




                                                                                                   250 of 1116
QuickFIX/J QFJ-643 Unable to restart a stopped acceptor   Bug   Closed   Major   Fixed   Christoph John
                   (SocketAcceptor)




                                                                                                     251 of 1116
QuickFIX/J QFJ-642 SessionSettings                        Bug   Resolved   Major   Fixed   Laurent Danesi
                   getSessionProperties(Foo, true) merges
                   the actual settings into the defaults




                                                                                                       252 of 1116
QuickFIX/J QFJ-634 SequenceReset Fail   Bug   Resolved   Major   Fixed   Eric Deshayes




                                                                                     253 of 1116
QuickFIX/J QFJ-552 Message Stores expected to be thread   Bug   Open       Major   Unresolved   Unassigned
                   safe but are not




QuickFIX/J QFJ-408 In response to ResendRequest, the      Bug   Resolved   Major   Not a bug    Unassigned
                   resent message from counterparty
                   cannot not reach/trigger the toApp
                   callback method




                                                                                                             254 of 1116
QuickFIX/J QFJ-676 Invalid MsgType n   Other   Open   Major   Unresolved   Unassigned




                                                                                        255 of 1116
QuickFIX/J QFJ-681 During load test, some clients are able to Bug   Open   Major   Unresolved   Unassigned
                   connect only after repeated attempts




QuickFIX/J QFJ-656 allowUnknownMsgFields has no effect if Bug       Open   Major   Unresolved   Unassigned
                   the field is not defined in the dictionary




                                                                                                             256 of 1116
QuickFIX/J QFJ-671 Connection exec-banzai   Other   Resolved   Major   Not a bug   Unassigned




                                                                                                257 of 1116
QuickFIX/J QFJ-674 acceptor.getSessions() returning empty   Bug   Closed   Major   Not a bug   Unassigned
                   ArrayList




                                                                                                            258 of 1116
QuickFIX/J QFJ-697 Unable to restart a stopped acceptor   Bug   Closed   Major   Duplicate   Christoph John
                   (SocketAcceptor) -- still exists




                                                                                                         259 of 1116
QuickFIX/J QFJ-668 Disconnecting: Timed out waiting for   Bug   Closed     Major   Duplicate   Unassigned
                   heartbeat, after exchanging the Test
                   messages.




QuickFIX/J QFJ-699 Configuring some sessions with SSL and Bug   Resolved   Major   Fixed       Christoph John
                   some other sessions with nonSSL is not
                   working as expected




                                                                                                            260 of 1116
QuickFIX/J QFJ-698 Not possible to restart a stopped   Bug   Reopened   Major   Unresolved   Christoph John
                   SocketInitiator using FileLog




                                                                                                         261 of 1116
QuickFIX/J QFJ-82   Reconnection not working in 1.0.3    Bug     Closed   Critical   Fixed   Steve Bate
                    because of blocking .join() within
                    exception callback




QuickFIX/J QFJ-92   Source code not available            Other   Closed   Critical   Fixed   Steve Bate




                                                                                                          262 of 1116
QuickFIX/J QFJ-162 Weekly session fails on Sundays   Bug   Closed   Critical   Fixed   Steve Bate




                                                                                                    263 of 1116
QuickFIX/J QFJ-197 Provide option to disable the usage of   Improvement Closed   Critical   Fixed   Jörg Thönnes
                   the Proxool connection pooling




                                                                                                               264 of 1116
QuickFIX/J QFJ-228 Weekly session schedule calculates   Bug   Closed   Critical   Fixed   Steve Bate
                   wrong day for non-GMT timezone




                                                                                                       265 of 1116
QuickFIX/J QFJ-368 removeGroup causes BodyLength   Bug   Closed   Critical   Fixed   Unassigned
                   miscalculation




                                                                                                  266 of 1116
QuickFIX/J QFJ-364 NoLegs, NoUnderlyings, and            Bug   Resolved   Critical   Not a bug   Unassigned
                   NoCapacities groups in Confirmation
                   message in FIX44.xml should not be
                   required




                                                                                                              267 of 1116
QuickFIX/J QFJ-496 Not able to Capture any message from   Other   Closed     Critical   Fixed       Unassigned
                   the Socket




QuickFIX/J QFJ-501 Setting session property               Bug     Resolved   Critical   Duplicate   Unassigned
                   UseDataDictionary to false does not
                   prevent message validation




                                                                                                                 268 of 1116
QuickFIX/J QFJ-509 Question about performance   Other   Closed   Critical   Fixed   Unassigned




                                                                                                 269 of 1116
QuickFIX/J QFJ-534 Resend Request Synchronization Patch   Bug   Closed   Critical   Duplicate   Unassigned




                                                                                                             270 of 1116
QuickFIX/J QFJ-466 Initiator SocketConnectorIoProcessor-0.0 Bug   Open   Critical   Unresolved   Unassigned
                   deadlocks with QFJ Message Processor
                   at logout




                                                                                                              271 of 1116
QuickFIX/J QFJ-457 Acceptor logout trap when the acceptor   Bug   Resolved   Critical   Fixed   Eric Deshayes
                   initiates the logout process




                                                                                                            272 of 1116
QuickFIX/J QFJ-489 ResendRequest even the MsgSeqNum is Bug     Resolved   Critical   Cannot Reproduce   Unassigned
                   correct when a lot of messages arrived at
                   the same instance




                                                                                                                     273 of 1116
QuickFIX/J QFJ-635 Null Pointer Exception when starting a   Bug   Closed     Critical   Fixed       Christoph John
                   session with Apache Synapse




QuickFIX/J QFJ-548 outOfOrderField checking by setting      Bug   Resolved   Critical   Duplicate   Christoph John
                   ValidateFieldsOutOfOrder=N doesn't
                   work




                                                                                                                274 of 1116
QuickFIX/J QFJ-691 But when handling garbled messages   Bug   Open   Critical   Unresolved   Unassigned
                   and processing the pending queue




                                                                                                          275 of 1116
QuickFIX/J QFJ-688 not getting response to logon message   Bug   Resolved   Critical   Not a bug   Unassigned




                                                                                                                276 of 1116
QuickFIX/J QFJ-700 QFJ Timer and QFJ message processor Bug     Open       Critical   Unresolved   Unassigned
                   try to execute generateLogout() at the
                   same time, resulting in QFJ Timer to stop




QuickFIX/J QFJ-686 ThreadPerSessionEventHandlingStrateg Bug    Resolved   Critical   Fixed        Christoph John
                   y still leaks threads after client
                   disconnect




                                                                                                               277 of 1116
QuickFIX/J QFJ-645 Deadlock between message sending and Bug   Resolved   Critical   Fixed   Christoph John
                   reset due to message reception on
                   Session and senderMsgSeqNumLock




                                                                                                        278 of 1116
QuickFIX/J QFJ-333 A filter chain cannot contain more than                 Other   Closed   Blocker Fixed   Unassigned
                   one ProtocolCodecFilter




Generated at Fri Aug 31 07:53:42 CEST 2012 using JIRA 4.3.1#615-r147022.




                                                                                                                         279 of 1116
          Reporter       Created           Updated         Resolved                  Affects Version/s
Lo Shih              10/19/2010 21:40   10/19/2010 21:40              1.4.0, 1.5.0




                                                                                                         280 of 1116
Parwinder Sekhon    5/6/2009 13:48   5/23/2011 17:42   5/23/2011 17:42 1.4.0




John               1/23/2012 11:37   1/23/2012 11:37                   1.5.0




                                                                               281 of 1116
Colin Ruthven   5/25/2006 22:45   5/26/2006 16:05   5/26/2006 16:05 1.0.0 B3




                                                                               282 of 1116
Steve Bate    5/26/2006 16:32   9/2/2006 14:07   5/26/2006 16:34 1.0.0 Final




Oren Miller    6/9/2006 22:20   9/2/2006 14:07    6/10/2006 8:50




                                                                               283 of 1116
Scott Harrington   6/25/2006 4:27   9/2/2006 14:07   7/15/2006 15:10 1.0.0 B3, 1.0.0 Final, 1.0.1, 1.1.0




                                                                                                           284 of 1116
Matyas Barakonyi   7/19/2006 13:14   9/2/2006 14:07   7/22/2006 8:12 1.0.1




                                                                             285 of 1116
Michael Briganti   9/7/2006 4:11   9/7/2006 15:12   9/7/2006 15:12 1.0.2




                                                                           286 of 1116
Christopher Hurst   12/14/2006 12:42   4/12/2007 2:44   2/11/2007 0:40 1.0.4




                                                                               287 of 1116
Christopher Hurst   1/17/2007 15:37   2/11/2007 1:09   2/11/2007 1:09




                                                                        288 of 1116
Christopher Hurst    2/7/2007 15:56   2/11/2009 17:19    2/15/2007 2:33 1.0.5




Jeronimo Ginzburg   4/19/2007 22:28   6/10/2007 17:37   6/10/2007 17:37 1.1.0




                                                                                289 of 1116
Brad Harvey       6/20/2007 13:39   7/4/2007 19:37   6/28/2007 19:45 1.1.0




Rhys Yarranton    1/15/2008 21:00   8/7/2008 16:03    2/1/2008 16:26 1.2.1, 1.3.0




John Coleman     12/10/2007 13:06   8/7/2008 16:03   6/18/2008 20:53 1.0.4




                                                                                    290 of 1116
Grant Birchmeier   7/19/2010 20:09   7/19/2010 20:09   1.5.0




                                                               291 of 1116
John   6/10/2011 17:11   6/14/2011 15:47   6/11/2011 13:36 1.5.0




                                                                   292 of 1116
Andrew Niland   8/18/2011 12:39   8/18/2011 12:39   1.5.0




                                                            293 of 1116
John   10/27/2011 12:09   11/17/2011 16:39   1.5.0, 1.5.1




                                                            294 of 1116
Christoph John   11/15/2011 14:59   12/1/2011 11:44   12/1/2011 11:44 1.5.1




                                                                              295 of 1116
Greg Chabala   5/2/2012 20:17   5/2/2012 20:17   1.5.0, 1.5.2




                                                                296 of 1116
Eddie Robertsson   7/24/2006 10:55    9/2/2006 14:07   7/24/2006 23:39 1.0.1




Steve Bate         8/12/2006 15:17    4/12/2007 2:44   8/12/2006 15:25



Faraz Parhami      6/23/2006 15:12   8/12/2006 15:08   8/12/2006 15:08 1.0.1




                                                                               297 of 1116
Chris Audley   8/16/2006 18:05   4/12/2007 2:44   9/7/2006 15:13 1.0.2




                                                                         298 of 1116
Toli Kuznets   8/24/2006 0:26   1/24/2007 14:42   9/2/2006 14:09 1.0.0 Final, 1.0.1, 1.0.2




                                                                                             299 of 1116
Rob Gilliam   8/10/2006 16:17   8/14/2006 11:29   8/12/2006 15:19 1.0.1




Steve Bate      9/6/2006 8:14    4/12/2007 2:44    9/7/2006 11:36 1.0.0 Final, 1.0.1, 1.0.2, 1.0.3




                                                                                                     300 of 1116
André Malenfant   9/6/2006 20:00   4/12/2007 2:44   2/11/2007 0:44 1.0.3




                                                                           301 of 1116
André Malenfant   9/6/2006 20:03   4/12/2007 2:44   9/10/2006 11:40 1.0.3




                                                                            302 of 1116
Toli Kuznets      9/23/2006 0:26   6/2/2009 20:35   7/13/2007 4:56 1.0.3




Welf Wustlich   10/17/2006 15:32   4/12/2007 2:44   11/9/2006 4:52 1.0.3




                                                                           303 of 1116
Welf Wustlich   10/18/2006 13:49   11/15/2006 14:50   11/15/2006 14:50 1.0.3




                                                                               304 of 1116
Welf Wustlich   10/17/2006 15:40   4/12/2007 2:44   11/5/2006 13:57 1.0.3




                                                                            305 of 1116
Toli Kuznets   10/20/2006 4:51   4/12/2007 2:44   11/7/2006 14:33 1.0.4




Steve Bate      11/4/2006 3:49   4/12/2007 2:44   11/5/2006 13:51




Steve Bate     11/7/2006 14:10   4/12/2007 2:44   11/7/2006 14:20




                                                                          306 of 1116
Houssem          11/2/2006 15:56     1/8/2007 2:43   11/2/2006 16:29




Houssem          11/6/2006 14:57   11/7/2006 13:09   11/7/2006 13:09 1.0.4




Welf Wustlich   11/13/2006 18:22   5/11/2007 13:49   5/11/2007 13:49 1.0.4




Steve Bate       11/7/2006 14:03    4/12/2007 2:44   11/8/2006 14:20


                                                                             307 of 1116
Welf Wustlich   10/17/2006 15:47   11/5/2006 13:15   11/5/2006 13:15




                                                                       308 of 1116
Welf Wustlich   11/16/2006 12:23   1/24/2007 14:39   1/24/2007 14:39 1.0.4




Asa Denton       10/22/2006 6:25    7/4/2007 19:37   6/10/2007 18:32 1.0.4




Steve Bate       11/7/2006 13:50    6/9/2007 22:58    6/9/2007 22:58


                                                                             309 of 1116
Ashish Sharma    11/9/2006 18:28    1/8/2007 2:43    1/8/2007 2:43




Welf Wustlich   11/28/2006 11:02   2/11/2007 0:58   2/11/2007 0:58 1.0.4




                                                                           310 of 1116
Kevin Koltzau      10/31/2006 19:16   4/12/2007 2:44   11/7/2006 14:30



Scott Harrington     1/4/2007 23:16   4/12/2007 2:44    2/11/2007 0:42 1.0.4




Steve Bate            1/8/2007 3:16    1/8/2007 3:16     1/8/2007 3:16 1.0.4




                                                                               311 of 1116
Welf Wustlich   11/14/2006 17:47   11/16/2006 17:15   11/15/2006 14:42 1.0.4




                                                                               312 of 1116
rohit   1/11/2007 18:17   4/26/2007 2:48   1/11/2007 20:50 1.0.4, 1.0.5




                                                                          313 of 1116
Welf Wustlich   11/16/2006 21:40   4/12/2007 2:44   11/17/2006 13:28 1.0.4




                                                                             314 of 1116
Welf Wustlich   11/22/2006 18:17   11/23/2006 15:11   11/23/2006 15:11 1.0.4




                                                                               315 of 1116
rohit   1/24/2007 13:21   2/10/2007 22:22   2/10/2007 22:22 1.0.4




                                                                    316 of 1116
Toli Kuznets   2/7/2007 2:39   4/12/2007 2:44   2/11/2007 16:25 1.0.5




                                                                        317 of 1116
Toli Kuznets   2/7/2007 2:34   4/12/2007 2:44   2/11/2007 16:24 1.0.5




                                                                        318 of 1116
Toli Kuznets   2/10/2007 3:05   4/12/2007 2:44   2/11/2007 18:33 1.0.5




                                                                         319 of 1116
Toli Kuznets   2/10/2007 4:02   4/12/2007 2:44   4/7/2007 5:09 1.0.5




                                                                       320 of 1116
Toli Kuznets   2/28/2007 22:32   3/1/2007 1:18   3/1/2007 1:18 1.0.5




                                                                       321 of 1116
Toli Kuznets   2/28/2007 0:15   9/25/2008 15:57   2/28/2007 18:07 1.0.5




                                                                          322 of 1116
Toli Kuznets    2/24/2007 2:09   4/12/2007 2:44   2/24/2007 2:41 1.0.5




Welf Wustlich   1/9/2007 10:23   6/10/2007 3:24   6/10/2007 3:24 1.0.5




                                                                         323 of 1116
Toli Kuznets   2/6/2007 4:34   4/12/2007 2:44   2/11/2007 18:33 1.0.5




                                                                        324 of 1116
Guillaume Bedard   2/23/2007 17:56   7/4/2007 19:37   5/19/2007 18:42 1.0.5




Toli Kuznets         3/3/2007 2:40   8/25/2007 0:01     3/3/2007 2:51 1.0.5




                                                                              325 of 1116
Graham Miller   4/11/2007 19:52   2/11/2009 17:24   5/2/2007 4:00 1.0.5




                                                                          326 of 1116
Toli Kuznets   3/10/2007 2:58   5/31/2007 14:28   3/28/2007 19:54 1.0.5




                                                                          327 of 1116
rohit          3/12/2007 15:53   4/10/2007 13:56   4/10/2007 13:56 1.0.5




Toli Kuznets    4/28/2007 4:31    8/7/2008 16:03     2/3/2008 8:22




                                                                           328 of 1116
Thomas Hügel   5/21/2007 23:24   6/7/2007 21:06   6/7/2007 21:06 1.1.0




                                                                         329 of 1116
Thomas Hügel   5/22/2007 17:18   7/4/2007 19:37   5/25/2007 18:25 1.1.0




                                                                          330 of 1116
Steve Bate   5/24/2007 14:07   7/4/2007 19:37   6/7/2007 13:58




                                                                 331 of 1116
Graham Miller   4/26/2007 2:47   2/11/2009 17:22   7/13/2007 4:56 1.1.0




                                                                          332 of 1116
stacey ramsay   6/11/2007 17:27   6/28/2007 19:44   6/28/2007 19:44 1.1.0




                                                                            333 of 1116
Robert Jen        6/13/2007 5:47   6/28/2007 19:43   6/28/2007 19:43




Nick Fortescue   6/15/2007 16:49    7/4/2007 19:37   6/15/2007 23:52 1.1.0




                                                                             334 of 1116
Parag Mehta   7/3/2007 19:16   2/11/2009 17:22   7/7/2007 18:45 1.1.0




                                                                        335 of 1116
Toli Kuznets   7/13/2007 4:41   2/11/2009 17:22   7/27/2007 14:35 1.2.1




                                                                          336 of 1116
Thomas Hügel   7/3/2007 20:40   7/4/2007 19:38   7/4/2007 19:38 1.2.0




                                                                        337 of 1116
Jörg Thönnes   7/19/2007 20:31   10/6/2007 16:31   10/6/2007 16:31 1.1.0, 1.2.0, 1.2.1




                                                                                         338 of 1116
Rob Gilliam   7/13/2007 14:32   7/27/2007 16:05   7/27/2007 16:05 1.0.4




                                                                          339 of 1116
Toli Kuznets   8/6/2007 22:15   2/11/2009 17:22   8/14/2007 14:06




Danilo         8/7/2007 22:39   2/11/2009 17:22   8/14/2007 16:21 1.2.1




                                                                          340 of 1116
Toli Kuznets   7/26/2007 5:49   2/11/2009 17:22   7/27/2007 6:32




                                                                   341 of 1116
Toli Kuznets   8/7/2007 3:49   2/11/2009 17:22   8/16/2007 13:48 1.3.0




                                                                         342 of 1116
Toli Kuznets   7/21/2007 2:20   7/27/2007 14:36   7/27/2007 14:36 1.2.1




                                                                          343 of 1116
Graham Miller   9/18/2007 4:09   2/11/2009 17:22   9/19/2007 0:11 1.2.1




                                                                          344 of 1116
Graham Miller   9/19/2007 0:53   2/2/2008 19:02   1.2.1




                                                          345 of 1116
Graham Miller   9/19/2007 0:24   8/7/2008 16:03   2/3/2008 7:23 1.2.1




                                                                        346 of 1116
Graham Miller   9/19/2007 0:09   8/7/2008 16:03   2/3/2008 7:23 1.2.1




                                                                        347 of 1116
Michael Briganti   9/22/2007 0:23   9/28/2007 14:37   9/28/2007 14:37 1.2.1




Toli Kuznets       9/19/2007 2:29   8/31/2009 19:23   9/28/2007 14:38




                                                                              348 of 1116
André Malenfant   9/27/2007 19:08   1/9/2008 20:10   12/22/2007 19:57 1.2.1




                                                                              349 of 1116
Toli Kuznets   8/21/2007 5:09   3/27/2008 21:17   10/6/2007 15:31 1.2.1




                                                                          350 of 1116
Michael Briganti   10/1/2007 17:41   2/1/2008 16:37   2/1/2008 16:37 1.2.1




                                                                             351 of 1116
Toli Kuznets   8/30/2007 23:31   4/7/2009 14:33   9/2/2007 5:09 1.2.1




                                                                        352 of 1116
Parag Mehta   10/16/2007 0:32   12/12/2007 16:07   12/12/2007 16:07 1.1.0




                                                                            353 of 1116
Toli Kuznets   9/12/2007 21:46   2/11/2009 17:22   9/19/2007 21:58 1.2.1




                                                                           354 of 1116
Qiyan Li   10/26/2007 0:36   1/15/2008 21:46   12/22/2007 21:22 1.3.0




                                                                        355 of 1116
Eduardo Ostertag   11/14/2007 22:45    11/15/2007 4:12    11/15/2007 4:12




Danilo             10/18/2007 17:15   12/22/2007 17:52   12/22/2007 17:52




André Malenfant    10/19/2007 22:37     2/1/2008 16:38     2/1/2008 16:38 1.2.1




                                                                                  356 of 1116
CaiQi   12/24/2007 11:32   1/15/2008 21:46   1/11/2008 14:43 1.2.1




                                                                     357 of 1116
CaiQi   12/24/2007 11:58   2/1/2008 16:29   1.2.1




                                                    358 of 1116
Eduardo Ostertag   11/27/2007 17:45   1/15/2008 21:46   12/22/2007 21:23




                                                                           359 of 1116
Rudy Fasouliotis   12/6/2007 20:42   1/15/2008 21:46   12/22/2007 21:23 1.3.0




                                                                                360 of 1116
Hemant Bhatia   12/19/2007 21:50    8/7/2008 16:03    6/17/2008 19:28




Steve Bate      12/12/2007 15:59   1/15/2008 21:46   12/22/2007 17:54




                                                                        361 of 1116
CaiQi   12/24/2007 12:19   1/15/2008 21:46   1/12/2008 14:33 1.2.1




                                                                     362 of 1116
André Malenfant    11/21/2007 7:43   12/23/2007 23:02   12/22/2007 20:00 1.2.1




Mike Gu           12/24/2007 13:21    1/15/2008 21:46    1/10/2008 17:23 1.3.0




                                                                                 363 of 1116
Steve Bate   1/11/2008 14:44   4/5/2010 14:00   1/11/2008 14:46




CaiQi        12/27/2007 9:05   2/3/2009 22:22                     1.2.1




                                                                          364 of 1116
david koo         1/4/2008 23:16   1/15/2008 21:46   1/10/2008 17:23 1.3.0




Rhys Yarranton   1/22/2008 21:12    8/7/2008 16:03    6/17/2008 3:45 1.2.1, 1.3.0, 1.3.1




                                                                                           365 of 1116
Hiranya Jayathilaka   2/27/2008 11:24    8/7/2008 16:03   6/18/2008 19:33 1.3.1




Saqib Rasul            2/6/2008 20:32   6/18/2008 19:21   6/18/2008 19:21




                                                                                  366 of 1116
Peter Eriksson   1/10/2008 11:57   4/7/2010 1:30   2/18/2009 20:40 1.3.0




                                                                           367 of 1116
CaiQi   12/24/2007 11:53   1/12/2008 14:33   1.2.1




                                                     368 of 1116
CaiQi                 12/24/2007 12:05    8/7/2008 16:03     2/3/2008 7:34 1.2.1




Hiranya Jayathilaka    2/27/2008 12:19   1/10/2010 18:51   1/10/2010 18:51




                                                                                   369 of 1116
Dominic Cubitt   2/25/2008 17:06   8/19/2008 17:31   8/19/2008 17:31 1.3.1




                                                                             370 of 1116
Emil Crumhorn   3/13/2008 17:16   3/25/2008 18:31   3/25/2008 18:31 1.3.1




                                                                            371 of 1116
Graham Miller   3/5/2008 23:02   8/7/2008 16:03   4/11/2008 4:48 1.3.1




                                                                         372 of 1116
Tom Mowad   4/11/2008 21:05   8/7/2008 16:03   6/17/2008 17:07 1.3.1




                                                                       373 of 1116
Rainer Wallscheid   6/18/2008 18:00   8/7/2008 16:03   6/18/2008 19:31 1.3.1




                                                                               374 of 1116
Baxter Solutions   7/1/2008 20:05   7/4/2008 2:05   7/1/2008 21:14 1.3.1




                                                                           375 of 1116
Robert Reyes   6/27/2008 19:35   8/7/2008 16:03   7/1/2008 21:08 1.3.1




                                                                         376 of 1116
Zana   7/1/2008 18:32   7/1/2008 21:26   7/1/2008 21:26




                                                          377 of 1116
Charlie Zhang   8/11/2008 14:35   10/6/2008 16:10   9/10/2008 16:37 1.3.1




                                                                            378 of 1116
Jacob Northey   8/8/2008 18:49    9/9/2008 0:19    9/8/2008 23:19 1.3.1, 1.3.2




Michael Franz   5/13/2008 5:39   8/7/2008 16:03   6/17/2008 17:30 1.3.1




                                                                                 379 of 1116
aleksey ratushnyy   8/19/2008 4:36   10/6/2008 16:10   9/10/2008 17:41 1.3.1




                                                                               380 of 1116
Michael Franz   8/16/2008 0:21   10/6/2008 16:10   9/10/2008 16:33 1.3.1




                                                                           381 of 1116
Michael Franz   8/19/2008 0:18   10/6/2008 16:10   9/8/2008 16:18 1.3.2




                                                                          382 of 1116
aleksey ratushnyy   8/19/2008 4:42   4/7/2010 1:30   4/5/2010 4:11 1.3.1




                                                                           383 of 1116
Leo Satoshi Fischer   10/22/2008 13:52   11/26/2008 0:15   11/26/2008 0:15 1.2.1




                                                                                   384 of 1116
Michael Franz   9/8/2008 19:39   2/11/2009 17:18   10/6/2008 16:15 1.3.1




                                                                           385 of 1116
Michael Franz    9/15/2008 18:59   4/5/2010 14:02   4/5/2010 14:02 1.3.1




Alvin Wang      10/31/2008 20:20   4/5/2010 14:10




                                                                           386 of 1116
Alvin Wang   10/31/2008 20:28    4/5/2010 13:47   4/5/2010 13:47




Mike Gu        11/6/2008 8:02    11/6/2008 8:02                    1.3.3




Alvin Wang   11/20/2008 22:05   11/26/2008 1:13




                                                                           387 of 1116
Alvin Wang         11/20/2008 22:07   4/5/2010 13:29   4/5/2010 13:29




Nataraj Dasgupta    12/9/2008 18:35    4/5/2010 4:22    4/5/2010 4:22 1.3.0, 1.3.1, 1.3.2, 1.3.3




                                                                                                   388 of 1116
Alexey Utkin          1/15/2009 17:28   2/3/2010 12:46                  1.3.3




Stelian Dumitrascu   12/19/2008 18:19   4/5/2010 14:28   4/5/2010 14:28 1.3.2




                                                                                389 of 1116
Jerry Shea   1/13/2009 9:58   2/11/2009 17:18   1/20/2009 18:16 1.3.1, 1.3.3




                                                                               390 of 1116
Baxter Solutions   1/7/2009 14:04   4/5/2010 14:43   4/5/2010 14:43 1.4.0




                                                                            391 of 1116
Paul-Henri Giraud   3/18/2009 12:21   4/7/2010 1:30   1/25/2010 13:47 1.4.0




                                                                              392 of 1116
Rhys Yarranton   2/26/2009 2:30   2/26/2009 2:30   1.3.1




                                                           393 of 1116
Mihai Sardarescu   2/3/2009 13:55   2/16/2009 21:37   1.3.3




                                                              394 of 1116
Paul-Henri Giraud   3/18/2009 12:47   4/7/2010 1:30   1/25/2010 13:47 1.4.0




                                                                              395 of 1116
Tommy Hannon   3/28/2009 2:54   4/7/2010 1:30   4/6/2010 5:10 1.3.3




                                                                      396 of 1116
Jerry Shea   3/4/2009 2:00   4/7/2010 1:30   4/5/2010 2:51 1.4.0




                                                                   397 of 1116
JamesM               3/3/2009 14:43   3/3/2009 14:43                   1.3.2




Paul-Henri Giraud   3/18/2009 13:19    4/7/2010 1:30   1/25/2010 13:44 1.4.0



Laurent Danesi      3/16/2009 17:07    4/7/2010 1:28                   1.4.0




                                                                               398 of 1116
Paul-Henri Giraud   4/10/2009 20:19   4/7/2010 1:30   1/25/2010 13:31 1.4.0




                                                                              399 of 1116
Toli Kuznets   3/10/2009 4:40   4/7/2010 1:30   3/14/2009 1:39 1.3.3




                                                                       400 of 1116
Parwinder Sekhon   4/16/2009 6:12   4/16/2009 16:27   4/16/2009 16:01 1.4.0




                                                                              401 of 1116
Jörg Thönnes   2/10/2009 12:24   2/11/2009 17:18   2/10/2009 12:58 1.3.1, 1.3.2, 1.3.3




                                                                                         402 of 1116
Charles Moulliard   5/12/2009 16:30   4/5/2010 14:38    4/5/2010 14:38




Paul-Henri Giraud   4/10/2009 20:13    4/7/2010 1:30   1/25/2010 13:33 1.4.0




                                                                               403 of 1116
Paul-Henri Giraud   4/10/2009 20:22     4/7/2010 1:30   1/25/2010 13:30 1.4.0




Baxter Solutions    5/22/2009 14:50   3/20/2011 12:07   3/20/2011 12:07 1.4.0




                                                                                404 of 1116
Sangeetha Variath   6/12/2009 14:33   4/7/2010 1:30   4/5/2010 13:24 1.4.0




                                                                             405 of 1116
alexey palamarchuk   6/30/2009 16:09   3/20/2011 12:07   3/20/2011 12:07 1.4.0




                                                                                 406 of 1116
Gustavo Jacob       7/1/2009 16:57     4/7/2010 1:30   7/20/2009 20:21 1.4.0




Ahmed Al Jebouri   8/28/2009 12:51   3/20/2011 12:07   3/20/2011 12:07 1.4.0




                                                                               407 of 1116
Ahmed Al Jebouri   9/11/2009 22:23   9/11/2009 22:23   1.4.0




                                                               408 of 1116
Ahmed Al Jebouri   9/4/2009 0:31   3/20/2011 12:07   3/20/2011 12:07




                                                                       409 of 1116
Raman         9/23/2009 19:39   3/20/2011 12:07   3/20/2011 12:07 1.4.0




David Gibbs   9/15/2009 19:02    4/5/2010 14:29    4/5/2010 14:29 1.4.0




                                                                          410 of 1116
Ahmed Al Jebouri   9/7/2009 20:03   3/20/2011 12:07   3/20/2011 12:07




                                                                        411 of 1116
jani   9/30/2009 18:47   4/7/2010 1:30   4/5/2010 5:22




                                                         412 of 1116
Subodh Jain   10/1/2009 23:09   4/7/2010 1:30   4/5/2010 5:16 1.4.0




                                                                      413 of 1116
Erik Nyquist         10/16/2009 10:27   4/5/2010 14:36    4/5/2010 14:36 Future Releases




David Gibbs          10/13/2009 20:08   4/5/2010 14:30    4/5/2010 14:30 1.4.0




Mohamed-Zied MAALA   11/20/2009 15:19    4/7/2010 1:30   1/25/2010 13:48



                                                                                           414 of 1116
Andre Mermegas   12/18/2009 17:43   1/15/2010 14:16   1/15/2010 12:58 1.4.0


nagendra           1/6/2010 22:29   3/20/2011 12:07   3/20/2011 12:07 1.4.0




                                                                              415 of 1116
Carlo Marchiori   12/29/2009 11:16   4/5/2010 13:18                 1.3.3




David Brown       11/26/2009 12:53    4/7/2010 1:30   4/5/2010 5:18 1.3.3




                                                                            416 of 1116
David Brown      12/1/2009 18:23     4/5/2010 5:19     4/5/2010 5:19 1.3.3




Tausseef Ahmad    1/15/2010 6:49   3/20/2011 12:07   3/20/2011 12:07 1.3.1




                                                                             417 of 1116
Ahmed Al Jebouri   2/12/2010 22:05   3/20/2011 12:07   3/20/2011 12:07




Stephane Thomas    1/29/2010 11:15   3/20/2011 12:07   3/20/2011 12:07 1.3.1




                                                                               418 of 1116
Rhys Yarranton   4/29/2010 18:34   4/29/2010 18:35   1.2.1, 1.3.0, 1.3.1




                                                                           419 of 1116
Paul Michael   3/4/2010 3:54   4/5/2010 4:44   4/5/2010 4:44 1.4.0




                                                                     420 of 1116
Andre Mermegas   3/3/2010 17:06   4/5/2010 4:47   4/5/2010 4:47 1.4.0




                                                                        421 of 1116
Scott Harrington   5/14/2010 5:35   7/8/2010 15:17   7/8/2010 15:17




                                                                      422 of 1116
Cliff Evans   5/4/2010 10:28   5/12/2010 12:24   1.4.0




                                                         423 of 1116
SSE                 6/28/2010 15:40   3/20/2011 12:07   3/20/2011 12:07 1.4.0




Pranab Kumar Naik   6/23/2010 12:12   6/23/2010 12:12                   Future Releases




                                                                                          424 of 1116
Wayne Zhu           6/5/2010 13:46    6/5/2010 13:46                     1.4.0




Ahmed Al Jebouri   7/12/2010 21:07   3/20/2011 12:07   3/20/2011 12:07




Laurent Danesi     7/15/2010 17:36   7/15/2010 17:58   7/15/2010 17:58
                                                                                 425 of 1116
Rhys Yarranton   9/1/2010 17:07   9/1/2010 17:07   1.4.0




                                                           426 of 1116
Rhys Yarranton   9/13/2010 19:48   9/16/2010 19:50   1.4.0




                                                             427 of 1116
Andre Mermegas   9/3/2010 18:32   9/3/2010 18:34   1.5.0




                                                           428 of 1116
Addy Bhardwaj     11/10/2010 1:15    11/10/2010 1:15   1.5.0




Maksym Symonov   11/22/2010 14:56   11/22/2010 14:56   1.5.0




                                                               429 of 1116
Tom Palmer      2/23/2011 10:30   2/23/2011 10:31                   1.5.0




Jörg Thönnes    2/25/2011 12:54   2/25/2011 12:54                   1.3.3




Eric Deshayes   3/25/2011 18:05   3/25/2011 21:20   3/25/2011 21:20 1.5.0




                                                                            430 of 1116
Dmitri Lenna     3/31/2011 0:40    3/31/2011 0:40                   1.5.0




Eric Deshayes   3/25/2011 17:38   3/25/2011 21:19   3/25/2011 21:19 1.5.0




                                                                            431 of 1116
Paul-Henri Giraud   4/10/2009 20:11   4/12/2011 15:41   1/25/2010 13:40 1.4.0




Paul-Henri Giraud    4/6/2009 18:42    4/22/2011 1:26   1/25/2010 13:41 1.4.0




                                                                                432 of 1116
Brent Bradbury   5/10/2010 23:31   4/24/2011 21:24   4/24/2011 21:24 1.4.0, Future Releases




                                                                                              433 of 1116
James Olsen   11/17/2009 14:14   4/29/2011 8:55   4/29/2011 8:55




                                                                   434 of 1116
Jay Walters   2/3/2009 22:28   4/29/2011 16:03   4/29/2011 16:03 1.3.3




                                                                         435 of 1116
Rhys Yarranton   12/25/2009 0:55   5/4/2010 22:17   1.2.1




                                                            436 of 1116
Scott Harrington     6/30/2009 18:14   6/30/2009 18:16                  1.3.1, 1.3.2, 1.3.3, 1.4.0




Ganeshan Guruswamy   6/25/2009 16:27   1/10/2010 19:35


Fabio Bernasconi      5/3/2011 17:45    5/3/2011 20:17   5/3/2011 20:17 1.5.0




                                                                                                     437 of 1116
Andrei Pozolotin    5/6/2011 21:12    5/6/2011 22:07   5/6/2011 22:01 1.5.0




Abla Nait          3/30/2011 10:45   5/20/2011 14:15                  1.5.0




                                                                              438 of 1116
Bill Harts   6/21/2009 16:54   5/20/2011 14:16   5/20/2011 14:16




                                                                   439 of 1116
Olivier Lourdais   12/16/2010 19:18   5/20/2011 14:16   5/20/2011 14:16 1.5.0




                                                                                440 of 1116
Eric Deshayes   5/12/2011 12:18   5/20/2011 14:17   5/20/2011 14:17 1.5.0




Francis Uy       3/12/2009 4:06   5/23/2011 18:45   5/23/2011 18:45 1.4.0




                                                                            441 of 1116
Jörg Thönnes   5/26/2011 11:16   5/26/2011 11:21   5/26/2011 11:21 1.3.3




                                                                           442 of 1116
Jörg Thönnes   5/26/2011 11:17   5/26/2011 11:21   5/26/2011 11:21 1.3.3




                                                                           443 of 1116
Jörg Thönnes   5/26/2011 11:17   5/26/2011 15:58   5/26/2011 15:58 1.3.3




                                                                           444 of 1116
Andrey   5/24/2011 7:57   6/6/2011 17:35   6/6/2011 17:35 1.4.0, 1.5.0




                                                                         445 of 1116
Rhys Yarranton   5/10/2010 18:58   6/9/2011 15:54   1.3.1, 1.3.2, 1.3.3, 1.4.0




                                                                                 446 of 1116
Morten Kristiansen   11/2/2009 13:58    6/9/2011 15:58    6/9/2011 15:58 1.4.0




Steve Bate           6/15/2011 15:54   6/15/2011 15:56   6/15/2011 15:56




                                                                                 447 of 1116
Daniel Clusin   6/17/2011 3:14   6/17/2011 3:14   1.5.0




                                                          448 of 1116
Welf Wustlich   11/13/2006 19:29   6/18/2011 2:05   1/9/2007 13:48 1.0.4




                                                                           449 of 1116
Andrei Pozolotin   10/8/2009 16:20   7/7/2011 21:31   3/20/2011 12:07 1.4.0




                                                                              450 of 1116
Jonathan Felch   7/7/2011 21:34   7/7/2011 21:34   1.4.0




                                                           451 of 1116
Jonathan Felch   7/7/2011 21:32   7/7/2011 21:37   1.4.0




                                                           452 of 1116
rikard   7/25/2011 10:21   7/25/2011 10:21   1.5.0




                                                     453 of 1116
Baxter Solutions   1/7/2009 13:44   7/27/2011 18:47   1/8/2009 20:35 1.4.0




                                                                             454 of 1116
Jörg Thönnes   5/26/2011 11:15   8/7/2011 20:43   1.3.3




                                                          455 of 1116
Olivier Lourdais   8/11/2011 15:22   8/11/2011 15:24   1.5.0




                                                               456 of 1116
Bernhard Wege   9/2/2011 15:19   9/2/2011 15:19   1.5.0, 1.5.1, Future Releases




                                                                                  457 of 1116
James Olsen     10/3/2011 11:33    10/3/2011 11:35   1.5.1




Andrew Niland   7/26/2011 18:57   10/19/2011 18:06   1.5.0




                                                             458 of 1116
Baxter Solutions   11/29/2010 11:20   11/29/2010 11:20   1.4.0




                                                                 459 of 1116
Michael Guyver   9/29/2011 15:51   11/15/2011 15:43   11/15/2011 15:43 1.5.0, 1.5.1




                                                                                      460 of 1116
Christoph John   11/8/2011 17:55   12/1/2011 11:44   12/1/2011 11:44 1.5.1




                                                                             461 of 1116
Jaroslav Sedlacek   10/20/2010 14:23   12/1/2011 15:31   12/1/2011 15:31 1.5.1




                                                                                 462 of 1116
Ken Douglas   12/5/2011 18:52   12/6/2011 10:18   1.5.0, 1.5.1




                                                                 463 of 1116
Christophe Domas   11/24/2011 10:17   12/12/2011 11:22   12/12/2011 10:23 1.5.1




                                                                                  464 of 1116
Rhys Yarranton     9/10/2010 1:15    9/16/2010 23:22                    1.4.0




Laurent Danesi   11/17/2011 14:36   12/15/2011 12:24   11/17/2011 14:38 1.5.1



James Olsen       10/3/2011 19:50   12/15/2011 12:25   10/19/2011 17:35 1.5.1




                                                                                465 of 1116
Stelios Papadopoulos   2/4/2011 13:52   12/20/2011 12:46   1.5.0




                                                                   466 of 1116
Paul Haefele   12/28/2006 4:23   12/20/2011 14:44   1/9/2007 13:37




                                                                     467 of 1116
Paul-Henri Giraud   3/18/2009 13:10   1/31/2012 10:51   1/25/2010 13:46 1.4.0




                                                                                468 of 1116
Zhao Mingyu   2/2/2012 8:31   2/2/2012 17:04   2/2/2012 17:04 1.5.0




                                                                      469 of 1116
Nicolas Chaufette   7/18/2011 15:01   7/18/2011 15:02                 1.4.0




Alvin Wang           2/11/2009 2:48   2/21/2012 18:01   4/6/2010 2:24 1.3.3




                                                                              470 of 1116
Christopher Hurst   11/23/2010 16:15   3/6/2012 18:17   5/31/2011 9:41 1.5.0




                                                                               471 of 1116
Andrew Richards   1/9/2012 11:02   1/9/2012 11:02   1.4.0, 1.5.2




                                                                   472 of 1116
Lejiang      7/21/2006 13:30    2/2/2012 17:03   1.0.1




Ryan Caudy   4/30/2012 19:30   4/30/2012 19:30   1.5.2




                                                         473 of 1116
Toli Kuznets     9/22/2007 3:36    5/24/2012 4:34




Andrew Niland   5/25/2012 13:13   5/31/2012 13:06   5/31/2012 13:06 1.5.0




                                                                            474 of 1116
Sylvestre COZIC   7/20/2009 12:12   6/22/2012 18:24   5/20/2011 14:16 1.3.1, 1.4.0




                                                                                     475 of 1116
Toli Kuznets   8/17/2007 22:09   7/23/2012 9:00   8/31/2007 14:04 1.2.1




                                                                          476 of 1116
Toli Kuznets   4/28/2007 4:53   2/1/2008 16:35   1.1.0




                                                         477 of 1116
Cédric Jeanroy   4/8/2011 11:08   4/11/2011 15:18




                                                    478 of 1116
Valery Trubnikov   11/26/2008 14:31   9/22/2011 8:44   1.3.3




                                                               479 of 1116
Subodh Jain   10/2/2009 0:07   8/1/2012 9:07   8/1/2012 9:07 1.4.0




                                                                     480 of 1116
Rhys Yarranton   12/11/2007 7:37   4/6/2010 1:55   1.2.1




                                                           481 of 1116
Christoph John   12/8/2011 13:53   12/8/2011 13:53   1.5.1




                                                             482 of 1116
Stephan   6/16/2009 12:34   11/18/2011 16:59   1.4.0




                                                       483 of 1116
Jonas Fügedi     6/12/2012 10:30   8/20/2012 10:15   1.5.2




Laurent Danesi   3/16/2009 17:11   6/21/2011 23:37   1.4.0




                                                             484 of 1116
Francis Lalonde   10/2/2007 0:01   8/22/2012 22:24   1.3.0




                                                             485 of 1116
John Peng   3/30/2012 18:43   3/30/2012 22:25                   1.5.0




Evan Ross   7/11/2012 17:45    8/24/2012 9:27   8/21/2012 13:49 1.5.2




                                                                        486 of 1116
Christoph John    8/3/2012 14:58   8/24/2012 9:36    8/7/2012 16:24




N Byrne          5/21/2012 18:56   8/24/2012 9:36   8/15/2012 15:54 1.5.2




                                                                            487 of 1116
Christoph John   7/30/2012 13:44   8/24/2012 9:36   7/30/2012 14:44




                                                                      488 of 1116
Andy Faibishenko   1/30/2012 22:56   8/24/2012 9:36   7/25/2012 14:22 1.5.2




                                                                              489 of 1116
Stelios Papadopoulos   7/20/2010 11:55   8/24/2012 9:36   8/2/2012 9:37 1.4.0




                                                                                490 of 1116
Christopher Hurst   5/4/2011 16:21   5/4/2011 16:21   1.5.0




                                                              491 of 1116
Christopher Hurst   1/11/2012 19:07   8/24/2012 13:22   8/24/2012 13:22 1.5.2




Steve Bate          5/21/2006 10:24    4/12/2007 2:44   5/21/2006 10:58




                                                                                492 of 1116
Christian Braeuner   6/19/2006 18:36   9/12/2006 15:49   7/15/2006 15:12 1.0.0 Final




                                                                                       493 of 1116
Steve Bate   6/14/2006 7:57   9/2/2006 14:07   6/17/2006 9:23




                                                                494 of 1116
Nguyen Bao Quoc   9/20/2006 12:34   9/26/2006 17:06   9/26/2006 17:06 1.0.3




                                                                              495 of 1116
Rob Gilliam   9/18/2006 19:02   10/12/2006 3:18   9/22/2006 12:00 1.0.3




                                                                          496 of 1116
Christian Braeuner   10/23/2006 19:47   11/14/2006 0:12   10/31/2006 14:30 1.0.0 B3, 1.0.0 Final, 1.0.1, 1.0.2, 1.0.3,
                                                                           1.0.4




                                                                                                                    497 of 1116
Raul Alzola   2/4/2007 15:53   2/11/2007 10:51   2/10/2007 16:35 1.0.5




                                                                         498 of 1116
Naresh Bhatia   3/29/2007 15:01   4/12/2007 2:44   3/30/2007 6:43 1.0.5




                                                                          499 of 1116
Qiyan Li   5/30/2007 0:17   7/4/2007 19:37   6/1/2007 14:01 1.1.0




                                                                    500 of 1116
Ulvi Ugur   8/21/2007 15:43   8/26/2007 19:16   8/25/2007 0:07




                                                                 501 of 1116
Qiyan Li   8/24/2007 23:17   10/26/2007 0:24   8/24/2007 23:22 1.2.1




                                                                       502 of 1116
Ionel Roman   11/4/2007 20:52   2/1/2008 16:38   2/1/2008 16:38 1.3.0




                                                                        503 of 1116
Mike Gu   10/17/2007 11:40   1/15/2008 21:46   1/12/2008 5:59 1.3.0




                                                                      504 of 1116
Mike Gu   8/28/2007 4:41   2/11/2009 17:22   9/2/2007 5:09 1.2.1




                                                                   505 of 1116
John Coleman   12/10/2007 13:02   8/31/2008 20:59   2/3/2008 8:15 1.0.4, 1.2.1




                                                                                 506 of 1116
Rhys Yarranton   1/17/2008 16:41   8/7/2008 16:03   6/18/2008 19:33 1.2.1, 1.3.0, 1.3.1




                                                                                          507 of 1116
sarath   12/28/2007 23:35   1/12/2008 13:50   1/12/2008 13:50 1.2.0, 1.2.1, 1.3.0




                                                                                    508 of 1116
Dan Mihai Dumitriu    6/3/2008 0:16    8/7/2008 16:03   6/17/2008 16:13 1.3.1




Asanka Abeysinghe    8/7/2008 14:19   10/6/2008 16:10   9/10/2008 16:52 1.3.1




                                                                                509 of 1116
JamesM   8/14/2008 9:05   9/9/2008 4:31   9/9/2008 4:31 1.3.1




                                                                510 of 1116
Alvin Wang   10/30/2008 1:13   3/23/2009 17:54   3/23/2009 17:54




Alvin Wang   10/30/2008 1:16   11/4/2008 21:41




Alvin Wang   11/4/2008 21:40    4/5/2010 13:31    4/5/2010 13:31




                                                                   511 of 1116
JamesM      12/2/2008 9:28     4/5/2010 14:14   4/5/2010 14:14 1.3.2




Mike Gu   12/17/2008 13:02   12/17/2008 13:02                  1.3.3




                                                                       512 of 1116
Ketan Chaudhry   3/4/2009 18:10   1/15/2010 14:07   1/15/2010 14:07 1.3.3




                                                                            513 of 1116
Steve Borrer   7/13/2009 19:22   4/7/2010 1:30   4/6/2010 2:20 1.4.0




                                                                       514 of 1116
Andre Mermegas   12/18/2009 17:39   4/7/2010 1:30   4/4/2010 23:50 1.4.0




                                                                           515 of 1116
Hariharan Kilakkencherry   6/10/2010 4:34   3/20/2011 12:07   3/20/2011 12:07 1.3.1




                                                                                      516 of 1116
hitesh   7/9/2010 20:28   3/20/2011 12:07   3/20/2011 12:07




                                                              517 of 1116
James Olsen   8/26/2010 11:42   8/26/2010 11:43   1.3.3




                                                          518 of 1116
hitesh   8/4/2010 18:00   8/4/2010 18:00




                                           519 of 1116
Vid Cheruvu   12/20/2010 0:01   12/20/2010 0:01   1.5.0




                                                          520 of 1116
Information Management Experts   4/3/2011 12:19   4/5/2011 15:40   1.5.0




                                                                           521 of 1116
Thomas Kinch   4/12/2011 16:33   4/12/2011 16:33                    1.3.3, 1.5.0




Alvin Wang      11/2/2008 7:45     4/7/2010 1:30   4/5/2010 13:34




                                                                                   522 of 1116
Leon Chadwick   12/10/2010 16:33   12/10/2010 23:56   1.5.0




                                                              523 of 1116
SSE   6/28/2010 14:52   5/20/2011 14:16   5/20/2011 14:16 1.4.0




                                                                  524 of 1116
SSE   6/28/2010 14:56   5/20/2011 14:40   5/20/2011 14:40 1.4.0




                                                                  525 of 1116
Thomas Wölfle   8/12/2011 11:15   10/19/2011 17:37   10/19/2011 17:37 1.5.0




                                                                              526 of 1116
Mansoor Haider   8/30/2011 18:38   10/19/2011 17:38   10/19/2011 17:38 1.5.1




                                                                               527 of 1116
John   8/31/2011 11:33   8/31/2011 12:19   1.5.0




                                                   528 of 1116
Christoph John   11/9/2011 18:17   12/1/2011 11:44   12/1/2011 11:44 1.5.1




                                                                             529 of 1116
Christoph John   10/18/2011 12:28   12/2/2011 11:02   12/2/2011 11:02 1.5.0, 1.5.1




                                                                                     530 of 1116
Mate Varga   10/17/2011 16:37   12/15/2011 12:25   10/19/2011 11:39 1.5.0, 1.5.1




                                                                                   531 of 1116
Eric Deshayes   9/22/2011 8:39   12/15/2011 12:26   10/8/2011 8:53 1.5.1




                                                                           532 of 1116
Carmelo Piccione   8/5/2010 18:02   8/17/2010 15:47                 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.4.0, 1.5.0




Alvin Wang          3/3/2009 1:23    3/3/2009 18:30   3/3/2009 6:46 1.4.0




                                                                                                               533 of 1116
James Beattie   4/30/2012 13:18   5/4/2012 22:14   1.5.2




                                                           534 of 1116
Viswanath Palutla    5/22/2012 17:08   5/22/2012 18:27   1.5.2




test                11/28/2011 14:09   6/25/2012 16:55   1.4.0, 1.5.0, 1.5.1




                                                                               535 of 1116
Andreea Ion   3/19/2012 16:33   7/18/2012 13:39   7/18/2012 13:39 1.5.2




                                                                          536 of 1116
Dan Marques   4/25/2012 2:33   8/2/2012 11:12   8/2/2012 11:12 1.5.2




                                                                       537 of 1116
Mate Varga   8/8/2012 10:10   8/8/2012 10:45   8/8/2012 10:45 1.5.0, 1.5.1




                                                                             538 of 1116
Abcedf12345          2/15/2012 0:31   8/21/2012 16:18     8/9/2012 9:55 1.5.0




Viswanath Palutla   8/11/2012 14:45    8/24/2012 9:36   8/14/2012 12:31 1.5.2




                                                                                539 of 1116
Mate Varga   8/9/2012 15:54   8/24/2012 18:02   1.5.2




                                                        540 of 1116
Andrzej Hajderek    10/5/2006 12:09   10/12/2006 2:11   10/12/2006 2:11 1.0.3




Houssem            10/27/2006 15:42   11/5/2006 13:15   11/5/2006 13:15 1.0.4




                                                                                541 of 1116
Christian Braeuner   4/19/2007 13:08   2/20/2010 1:25   2/20/2010 1:25 1.0.5




                                                                               542 of 1116
Jörg Thönnes   6/15/2007 16:46   6/30/2007 14:29   6/30/2007 14:29




                                                                     543 of 1116
Christian Braeuner   8/24/2007 12:40   2/11/2009 17:22   8/25/2007 0:00 1.0.5




                                                                                544 of 1116
Alvin Wang   11/4/2008 23:39   2/11/2009 17:18   11/26/2008 1:05




                                                                   545 of 1116
Alvin Wang   10/31/2008 23:22   4/5/2010 13:45   4/5/2010 13:45




                                                                  546 of 1116
nagendra        1/6/2010 22:07   3/20/2011 12:07   3/20/2011 12:07 1.4.0




Nickolay Dul   1/14/2010 16:12     4/5/2010 5:11     4/5/2010 5:11 1.4.0




                                                                           547 of 1116
Ilya Goberman   2/24/2010 18:21   3/20/2011 12:07   3/20/2011 12:07 1.4.0




                                                                            548 of 1116
SSE   6/28/2010 14:47   4/12/2011 15:42   4/12/2011 15:42 1.4.0




                                                                  549 of 1116
Steve Borrer   9/1/2009 15:34   4/29/2011 16:15   1.4.0




                                                          550 of 1116
Stephan   7/11/2009 8:13   5/20/2011 18:34   5/20/2011 14:13 1.3.3, 1.4.0, Future Releases




                                                                                             551 of 1116
lcryst   12/4/2009 9:54   6/13/2011 19:28   4/5/2010 5:17 1.4.0




                                                                  552 of 1116
Mark Curtis          9/26/2011 0:20   12/1/2011 12:14   12/1/2011 12:14 1.5.0, 1.5.1




Pranab Kumar Naik   7/26/2010 10:00    1/9/2012 11:12    1/9/2012 11:12 1.4.0, 1.5.0




                                                                                       553 of 1116
rohit qfj   7/12/2012 15:18   7/12/2012 15:51   1.5.0




                                                        554 of 1116
sagar narasgonde   6/14/2012 14:15   7/18/2012 13:33   7/18/2012 13:33 1.5.2




                                                                               555 of 1116
Martijn Stokhof   8/16/2012 12:34   8/17/2012 16:30                   1.5.2




Andre Mermegas     6/7/2012 21:11    8/24/2012 9:36   8/14/2012 16:32 1.5.2




                                                                              556 of 1116
marc sperisen   10/27/2011 11:42   8/24/2012 9:36   7/31/2012 9:36 1.5.0, 1.5.1




                                                                                  557 of 1116
Serife Kapukaya   8/11/2008 18:12   9/8/2008 16:03   9/8/2008 16:03 1.2.1




                                                                            558 of 1116
Fix Version/s          Component/s      Due Date Votes   Images   Work Ratio   Issue Links
                Documentation, Engine                0




                                                                                             559 of 1116
1.5.1   Engine   0




        Engine   0




                     560 of 1116
Engine   0




             561 of 1116
1.0.1   Engine   0




1.0.1   Engine   0   QFJ-26




                              562 of 1116
1.0.2   Engine   0




                     563 of 1116
1.0.2   Engine   0




                     564 of 1116
Engine   0




             565 of 1116
1.1.0   Engine   0




                     566 of 1116
Engine   0




             567 of 1116
1.0.5   Engine   0




        Engine   0




                     568 of 1116
1.2.0   Engine   0




1.3.2   Engine   0   QFJ-321




1.3.2   Engine   0




                               569 of 1116
Engine   0




             570 of 1116
Engine   0




             571 of 1116
Engine   0




             572 of 1116
Engine, Metadata/Specs   0




                             573 of 1116
1.5.2   Engine   0




                     574 of 1116
Engine   0




             575 of 1116
1.0.2   Engine   0




1.1.0   Engine   0   QFJ-43



        Engine   0




                              576 of 1116
1.1.0   Engine   0




                     577 of 1116
1.0.3   Engine   0




                     578 of 1116
        Engine   0   QFJ-45




1.1.0   Engine   0




                              579 of 1116
1.1.0   Engine   0




                     580 of 1116
1.1.0   Engine   0




                     581 of 1116
1.3.0   Engine   0




1.1.0   Engine   0




                     582 of 1116
Engine   1




             583 of 1116
1.1.0   Engine   0




                     584 of 1116
1.1.0   Engine   0   QFJ-133




1.1.0   Engine   0




1.1.0   Engine   0




                               585 of 1116
        Engine   0   QFJ-103




        Engine   0




        Engine   0




1.1.0   Engine   0


                               586 of 1116
Engine   0




             587 of 1116
        Engine   0   QFJ-107




1.2.0   Engine   0




        Engine   0


                               588 of 1116
Engine, Networking   0   QFJ-94




Engine               0




                                  589 of 1116
1.1.0   Engine   0



1.1.0   Engine   0




1.0.5   Engine   0




                     590 of 1116
Engine   0   QFJ-108




                       591 of 1116
Engine   0   QFJ-165




                       592 of 1116
1.1.0   Engine   0




                     593 of 1116
Engine   0




             594 of 1116
Engine   0




             595 of 1116
1.1.0   Engine   0   QFJ-133




                               596 of 1116
1.1.0   Engine   0   QFJ-134, QFJ-89




                                       597 of 1116
1.1.0   Engine   0   QFJ-132




                               598 of 1116
1.1.0   Engine   0




                     599 of 1116
Engine   0




             600 of 1116
1.1.0   Engine   0   QFJ-143




                               601 of 1116
1.1.0   Engine   0   QFJ-145




        Engine   0




                               602 of 1116
1.1.0   Engine   0   QFJ-136




                               603 of 1116
1.2.0   Engine   0   QFJ-162




1.1.0   Engine   0   QFJ-229




                               604 of 1116
1.2.1   Engine   0




                     605 of 1116
1.1.0   Engine   0   QFJ-171




                               606 of 1116
        Engine   0




1.3.2   Engine   1   QFJ-169, QFJ-279




                                        607 of 1116
Engine   0




             608 of 1116
1.2.0   Engine   0




                     609 of 1116
1.2.0   Engine   0




                     610 of 1116
1.3.0   Engine   0   QFJ-221, QFJ-125




                                        611 of 1116
Engine   0




             612 of 1116
        Engine   0




1.2.0   Engine   0




                     613 of 1116
1.3.0   Engine   0




                     614 of 1116
1.3.0   Engine   0




                     615 of 1116
1.2.1   Engine   0




                     616 of 1116
Engine   0




             617 of 1116
Engine   0   QFJ-218




                       618 of 1116
1.3.0   Engine   0   QFJ-215




1.3.0   Engine   0




                               619 of 1116
1.3.0   Engine   0   QFJ-220




                               620 of 1116
1.3.0   Engine   0   QFJ-165




                               621 of 1116
Engine   0




             622 of 1116
1.3.0   Engine   0 10100_.jpg




                                623 of 1116
Future Releases   Engine   0




                               624 of 1116
1.3.2   Engine   0   QFJ-239




                               625 of 1116
1.3.2   Engine   0




                     626 of 1116
Engine   0




Engine   0




             627 of 1116
Engine   0




             628 of 1116
Engine   0




             629 of 1116
Engine   0




             630 of 1116
1.3.0   Documentation, Engine   0




                                    631 of 1116
Engine   0




             632 of 1116
1.3.0   Engine   0




                     633 of 1116
1.3.1   Engine   0




                     634 of 1116
Engine   0




Engine   0




Engine   0




             635 of 1116
1.3.1   Engine   0




                     636 of 1116
Future Releases   Engine   0




                               637 of 1116
1.3.1   Engine   0




                     638 of 1116
1.3.1   Engine   0   QFJ-281




                               639 of 1116
1.3.2   Engine   0




1.3.1   Engine   0




                     640 of 1116
1.3.1   Engine   0




                     641 of 1116
        Engine   0




1.3.1   Engine   0   QFJ-268




                               642 of 1116
1.3.1             Engine   0   QFJ-350, QFJ-224




Future Releases   Engine   0




                                                  643 of 1116
1.3.1   Engine   0




1.3.2   Engine   0




                     644 of 1116
1.3.2   Engine               0




        Engine, Networking   0




                                 645 of 1116
1.5.0   Engine   1




                     646 of 1116
Future Releases   Engine   0




                               647 of 1116
1.3.2             Engine   0   QFJ-168




Future Releases   Engine   0




                                         648 of 1116
Engine   0




             649 of 1116
Engine   0




             650 of 1116
1.3.2   Engine   0




                     651 of 1116
1.3.2   Engine   0




                     652 of 1116
1.3.2   Engine   0




                     653 of 1116
Documentation, Engine   0   QFJ-290




                                      654 of 1116
1.3.2   Engine   0




                     655 of 1116
Engine   0




             656 of 1116
1.3.3   Engine   0




                     657 of 1116
        Engine   0




1.3.2   Engine   0




                     658 of 1116
1.3.3   Engine   0




                     659 of 1116
1.3.3   Engine   0




                     660 of 1116
1.3.3   Engine, Networking   1




                                 661 of 1116
1.5.0   Engine   1




                     662 of 1116
Engine   1




             663 of 1116
1.4.0   Engine   0   QFJ-354




                               664 of 1116
                  Engine   0   QFJ-224, QFJ-287




Future Releases   Engine   0




                                                  665 of 1116
Engine   0




Engine   0




Engine   0




             666 of 1116
        Engine   0




1.4.0   Engine   0   QFJ-383




                               667 of 1116
Engine   0




Engine   0




             668 of 1116
1.4.0   Engine   0




                     669 of 1116
Engine   0




             670 of 1116
1.5.0   Engine   0




                     671 of 1116
Engine   0




             672 of 1116
Engine   0




             673 of 1116
1.5.0   Engine   0




                     674 of 1116
1.5.0   Engine   0




                     675 of 1116
1.5.0   Engine   1   QFJ-491, QFJ-475, QFJ-510




                                                 676 of 1116
                  Engine   0




1.5.0             Engine   0



Future Releases   Engine   0




                               677 of 1116
1.5.0   Engine   0




                     678 of 1116
1.5.0   Engine   0




                     679 of 1116
Engine   0   QFJ-421




                       680 of 1116
1.4.0   Engine   0




                     681 of 1116
        Engine   0




1.5.0   Engine   0




                     682 of 1116
1.5.0   Engine   0




        Engine   0




                     683 of 1116
1.5.0   Engine   1




                     684 of 1116
Engine   1




             685 of 1116
1.5.0   Engine   0




        Engine   0




                     686 of 1116
Engine   0




             687 of 1116
Engine   1




             688 of 1116
Engine   1




Engine   0   QFJ-479, QFJ-453




                                689 of 1116
Engine   0




             690 of 1116
Engine   0   QFJ-410




                       691 of 1116
1.5.0   Engine   2   QFJ-501




                               692 of 1116
        Engine   0




        Engine   0   QFJ-453, QFJ-472




1.5.0   Engine   0



                                        693 of 1116
Engine   0   QFJ-491


Engine   0




                       694 of 1116
Future Releases   Engine   0




1.5.0             Engine   0




                               695 of 1116
Engine   0




Engine   0




             696 of 1116
Engine   0




Engine   1




             697 of 1116
1.3.2   Engine   0




                     698 of 1116
Engine   0




             699 of 1116
Engine   0   QFJ-410




                       700 of 1116
1.5.1   Engine   0




                     701 of 1116
Engine   0




             702 of 1116
1.5.1   Engine   0




        Engine   0




                     703 of 1116
        Engine   0




        Engine   0




1.5.1   Engine   0
                     704 of 1116
Engine   0




             705 of 1116
Engine   0




             706 of 1116
Engine   0




             707 of 1116
Engine   0




Engine   0




             708 of 1116
        Engine   0




        Engine   0




1.5.1   Engine   0




                     709 of 1116
        Engine   0




1.5.1   Engine   0




                     710 of 1116
1.5.0   Engine   0   QFJ-534




1.5.0   Engine   1




                               711 of 1116
Engine   1




             712 of 1116
Engine   0   QFJ-421




                       713 of 1116
1.5.1   Engine   0




                     714 of 1116
Engine   0




             715 of 1116
Engine   0




Engine   1


Engine   0




             716 of 1116
                  Engine   0




Future Releases   Engine   0




                               717 of 1116
1.5.1   Engine   0




                     718 of 1116
1.5.1   Engine   0   QFJ-589




                               719 of 1116
1.5.1   Engine   0




1.5.1   Engine   1




                     720 of 1116
1.5.1   Engine   0




                     721 of 1116
1.5.1   Engine   0




                     722 of 1116
1.5.1   Engine   0




                     723 of 1116
1.5.1   Engine   0




                     724 of 1116
Engine   1




             725 of 1116
1.5.1   Engine   3




1.5.1   Engine   0




                     726 of 1116
Engine   0




             727 of 1116
Engine   0




             728 of 1116
Engine   0




             729 of 1116
Engine   0




             730 of 1116
Engine   0




             731 of 1116
Engine   0




             732 of 1116
Engine   0




             733 of 1116
1.6.0   Engine   0




                     734 of 1116
Engine   0




             735 of 1116
Engine   0




             736 of 1116
Engine   0




Engine   0




             737 of 1116
Engine   0




             738 of 1116
Engine, Message Generation   0




                                 739 of 1116
1.5.2   Engine   0




                     740 of 1116
1.5.2   Engine   0




                     741 of 1116
Engine   0




             742 of 1116
1.5.2   Engine   0   QFJ-403




                               743 of 1116
        Engine   0




1.5.2   Engine   0



1.5.2   Engine   0




                     744 of 1116
Engine   2




             745 of 1116
Engine   0




             746 of 1116
1.5.0   Engine   0   QFJ-665




                               747 of 1116
Engine   0   QFJ-38, QFJ-382




                               748 of 1116
Engine   0




Engine   4




             749 of 1116
1.5.1   Engine   0




                     750 of 1116
Engine   1




             751 of 1116
Future Releases   Engine   0   QFJ-74, QFJ-382, QFJ-666




                  Engine   0




                                                          752 of 1116
Future Releases   Engine   3




                  Engine   0




                               753 of 1116
1.5.1   Engine   1




                     754 of 1116
1.3.0   Engine   0




                     755 of 1116
Future Releases   Engine   2   QFJ-269, QFJ-168




                                                  756 of 1116
Engine   0




             757 of 1116
1.6.0   Engine   8




                     758 of 1116
1.5.1   Engine   0




                     759 of 1116
Future Releases   Engine   0




                               760 of 1116
Engine   1




             761 of 1116
1.6.0   Engine   6




                     762 of 1116
                  Engine   0




Future Releases   Engine   1   QFJ-512




                                         763 of 1116
Engine   2




             764 of 1116
        Engine   1




1.5.3   Engine   0




                     765 of 1116
1.5.3   Engine   0   QFJ-453




1.5.3   Engine   1




                               766 of 1116
1.5.3   Engine   0




                     767 of 1116
1.5.3   Engine   0   QFJ-419




                               768 of 1116
1.5.3   Engine   3   QFJ-505




                               769 of 1116
Engine   1




             770 of 1116
1.5.3   Engine   0




1.1.0   Engine   0




                     771 of 1116
1.0.2   Engine   0




                     772 of 1116
1.0.1   Engine   0




                     773 of 1116
Engine   0




             774 of 1116
1.0.4   Engine   0   QFJ-82




                              775 of 1116
Engine   0




             776 of 1116
Engine   0




             777 of 1116
1.1.0   Engine   0




                     778 of 1116
1.2.0   Engine   0




                     779 of 1116
Engine   0




             780 of 1116
Engine   0   QFJ-150




                       781 of 1116
Engine   0




             782 of 1116
1.3.1   Engine   0




                     783 of 1116
1.3.0   Engine   0   QFJ-218




                               784 of 1116
1.3.2   Engine   0   QFJ-169




                               785 of 1116
1.3.2   Engine   0




                     786 of 1116
Engine   0




             787 of 1116
1.3.2   Engine   0




1.3.3   Engine   0




                     788 of 1116
Engine   0




             789 of 1116
Engine   0




Engine   0




Engine   1




             790 of 1116
Engine   0




Engine   0




             791 of 1116
Engine   0




             792 of 1116
1.5.0   Engine   0




                     793 of 1116
1.5.0   Engine   0   QFJ-410, QFJ-492




                                        794 of 1116
Engine   0




             795 of 1116
Engine   0




             796 of 1116
Engine   0




             797 of 1116
Engine   0




             798 of 1116
Engine   0




             799 of 1116
Engine   0




             800 of 1116
        Engine   0




1.5.0   Engine   0




                     801 of 1116
Engine   1




             802 of 1116
1.5.1   Engine   2   QFJ-546




                               803 of 1116
1.5.1   Engine   0




                     804 of 1116
1.6.0   Engine   0




                     805 of 1116
1.6.0   Engine   0




                     806 of 1116
Engine   0




             807 of 1116
1.5.2   Engine   0




                     808 of 1116
1.5.2   Engine   0




                     809 of 1116
1.5.2   Engine   0




                     810 of 1116
1.5.2   Engine   2




                     811 of 1116
Engine   0




Engine   0




             812 of 1116
Engine   0




             813 of 1116
Engine, Networking   0




Engine               1




                         814 of 1116
Engine, Examples, Networking   0




                                   815 of 1116
Engine   0




             816 of 1116
Engine   0




             817 of 1116
        Engine   0   QFJ-624




1.5.3   Engine   0




                               818 of 1116
1.5.3   Engine   0




                     819 of 1116
1.0.4   Engine, Networking   0   QFJ-71




        Engine               0




                                          820 of 1116
1.2.0   Engine   0   QFJ-142




                               821 of 1116
Engine   0




             822 of 1116
1.3.0   Engine   0




                     823 of 1116
1.4.0   Engine   0




                     824 of 1116
Engine   0




             825 of 1116
Engine   0




Engine   0   QFJ-476




                       826 of 1116
Engine   0




             827 of 1116
1.5.0   Engine   1   QFJ-429




                               828 of 1116
Engine   0




             829 of 1116
1.5.1   Engine   2




                     830 of 1116
Engine   0




             831 of 1116
1.5.2   Engine                       0




        Engine, Message Generation   0   QFJ-633




                                                   832 of 1116
Engine   0




             833 of 1116
Engine   0




             834 of 1116
        Engine   0




1.5.3   Engine   0




                     835 of 1116
1.5.3   Engine   2




                     836 of 1116
Engine   0




             837 of 1116
                Environment                  Description                   Security Level   Labels
All Platforms                 Delimiter is misspelled as "delimeter" in
                              the following Java source:

                              Source:

                              *
                              core/src/main/java/quickfix/DataDictionar
                              y.java
                              * core/src/main/java/quickfix/FileLog.java
                              * core/src/main/java/quickfix/Group.java
                              (javadocs only)
                              *
                              core/src/main/java/quickfix/Message.java
                              *
                              core/src/test/java/quickfix/RepeatingGrou
                              pTest.java

                              API:

                              *
                              quickfix.DataDictionary.GroupInfo.getDeli
                              meterField()
                              * quickfix.DataDictionary.GroupInfo
                              serialization if used

                              Please correct and add deprecated
                              legacy cover methods.




                                                                                                     838 of 1116
When I call a "stop" method on my
wrapper around SocketAcceptor I would
really like to be able to deregister its
mbeans too.

If you want to close a SocketAcceptor or
SocketInitatior and then recreate further
instances of them, then there is no way
to deregister their mbeans. I know I can
register new ones to replace the old
ones, but lacking the ability to deregister
the old ones, means if I change
configuration and reduce the number of
available sessions for the
SocketAcceptor, the old sessions are still
available via JMX.

The first index for anything in the IT
world is "0", not "1". Most certainly any
programmer in this world expects the
index "0" to be the first one.
An implementation must add 1 to each
index, and the FIX engine then
decrements it (will not kill the CPU but it
is at least some work that could be
avoided).

My solution would be to deprecate the
methods and have new replacing
methods (remove the deprecated
methods and rename the new ones in a
later version).




                                              839 of 1116
RedHat Linux Enterprise 4, JDK   Sequence -
1.4.2_09. x86 architecture.      1) Send order (Limit)
                                 2) Drop connection
                                 3) Order executes in series of parials
                                 4) Reconnect
                                 5) Sequence number resend/reset
                                 messages are exchanged interleaved
                                 with execution reports
                                 6) The Application is passed the
                                 execution reports as if no error occurred

                                 The final execution report is passed to
                                 the application, but a rejection is sent to
                                 the initiator complaining that Tag 122 is
                                 missing. Execution report is not required
                                 to have Tag 122 and the previous
                                 message received did have Tag 122.
                                 This happens each time this test is
                                 repeated. Sometimes the last two
                                 messages preceding are execution
                                 reports and both are rejected.
                                 Log excerpt from the reconnect follows -
                                 8=FIX.4.2^A9=67^A35=A^A34=5811^A4
                                 9=direct3^A52=20060524-
                                 18:58:49.012^A56=direct4^A98=0^A108
                                 =30^A10=225^A
                                 8=FIX.4.2^A9=67^A35=A^A34=5812^A4
                                 9=direct3^A52=20060524-
                                 18:59:14.928^A56=direct4^A98=0^A108




                                                                               840 of 1116
As far as I can see its doing something
as follows:

Timer triggers in SessionConnector, calls
session.next()
checkSessionTime() returns false, calls
session.reset() -> session.disconnect()
disconnect() calls
responder.disconnect(), closes TCP
session

I think session.next() perhaps needs
changing when checkSessionTime is
false to generate a logout message
rather than calling reset(), unless there's
another timer somewhere meant to do
that which might have missed.

Reported by Toby Shepheard




I discovered this when passing an empty
(not null) string into the message
constructor. The parseHeader assumes
that BeginString, Length, and MsgType
will be present in the string, when in fact
they might not be. This causes
parseHeader to operate on a nul field
returned by extractField. Below is a patch
with tests.




                                              841 of 1116
The current implementation of
Session.checkSessionTime() has a race
condition caused
by multiple calls to
System.currentTimeMillis(). (Not a thread
access race, but a race against
the wall clock.) This will not be caught by
the Junit tests unless you happen to be
running them
right around midnight on a slow
computer, but it's QUITE LIKELY to be
seen in a running server
with multiple sessions open every night!

Suppose the method is entered just
before midnight UTC, e.g. 23:59:59.999,
and the clock has
not yet ticked over by the time the
SessionSchedule fields are updated by
adjustSessionTimes.

But then the calls to "getTimeOnly" occur
after the clock has ticked over and
isDailySessionTime
starts comparing times from yesterday
against the new "time only" calendar
instance.

The end result is a "false" return from




                                              842 of 1116
Either Windows or Linux operating   Missing valid values (enums) in the
systems...                          quickfix fix44 SecurityTradingStatus
                                    class.

                                    Valid values: (according the FIX.4.4
                                    specifications)
                                    1 = Opening Delay
                                    2 = Trading Halt
                                    3 = Resume
                                    4 = No Open/No Resume
                                    5 = Price Indication
                                    6 = Trading Range Indication
                                    7 = Market Imbalance Buy
                                    8 = Market Imbalance Sell
                                    9 = Market On Close Imbalance Buy
                                    10 = Market On Close Imbalance Sell
                                    11 = (not assigned)
                                    12 = No Market Imbalance
                                    13 = No Market On Close Imbalance
                                    14 = ITS Pre-Opening
                                    15 = New Price Indication
                                    16 = Trade Dissemination Time
                                    17 = Ready to trade (start of session)
                                    18 = Not Available for trading (end of
                                    session)
                                    19 = Not Traded on this Market
                                    20 = Unknown or Invalid
                                    21 = Pre-Open
                                    22 = Opening Rotation




                                                                             843 of 1116
Windows NT/jdk1.5.0_06   The default protocol is tcp and the
                         documentation makes no reference to
                         Sockect [ Connect | Accept ] Protocol,
                         nonetheless...

                         When I set initiator/acceptor to use
                         vm_pipe I receive the following on the
                         initiator,

                         event> (Connection failed: Failed to get
                         the session.)

                         Is the option currently being supported
                         for the current engine in Windows
                         NT/jdk1.5.0_06, if so I will try to dig a
                         little further.

                         Thanks




                                                                     844 of 1116
Windows (not hardware specific)   (n.b. I only use the
                                  SingleThreadedEventHandler)

                                  The problem ...
                                  Basically if the QuickLib gets an
                                  unexpected message for a session it
                                  throws a null pointer exception (not sure
                                  if this has some more serious effects as
                                  it progates back up into the mina stuff),
                                  rather than display an error log message
                                  as the bit that catches the exception
                                  generated later then querys the (null)
                                  session for log detail but its null ! i.e. the
                                  bit that catches the exception causes a
                                  new one :-) Changing this to an
                                  appropriate error is \would bea big help
                                  as initialy I thought this was the issue
                                  rather than a symptom of another
                                  problem. I've tested this on a Windows
                                  XP set.

                                  From SingleThreadEventHandler, the
                                  code calling it does not prevent
                                  QuickSession = null, this causes a null
                                  pointer exception which is caught and an
                                  attempt is made to print an error but the
                                  catch queries the null object which goes
                                  bang again.




                                                                                   845 of 1116
Windows \ Quick fix 1.5 (was in 1.4 also) When the mina IO session fails in certain
                                          circumstances you get the error
                                          message (the simplest way to reproduce
                                          is to use incompatiable mina jars but I
                                          think I have seen it can on other cartain
                                          socket errors, problem was I needed to
                                          be in the degugger to catch it before I
                                          added the new error message )

                                          Connection failed: null

                                          which isn't very useful in
                                          quickfix.mina.initiator.IOSessionInitiator I
                                          changed the code

                                          } catch (Throwable e) {
                                          quickfixSession.getLog().onEvent("Conn
                                          ection failed: " + e.getMessage());
                                          }

                                          to

                                          catch (IncompatibleClassChangeError e)
                                          {
                                          quickfixSession.getLog().onEvent("Libs
                                          incompatiable check jar/zip versions. " +
                                          e);
                                          } catch (Throwable e) {
                                          // CH e.getMessage returns null




                                                                                         846 of 1116
Windows / Unix   setResponder is not synchronized
                 (responder not volatile) and called from a
                 different thread to hasResponder.

                 Although hasResponder is synchronized
                 and will get the latest version from main
                 memory dropping its thread cache , there
                 is no obvious guarantee that the thread
                 calling setResponder has hit a memory
                 barrier and forced its new responder
                 value to main memory so hasResponder
                 method can return an unexpected result
                 as it will get the latest one from memory
                 but not from the other threads cache that
                 may not have been pushed to main
                 memory yet.

                 change setResponder to be
                 synchronized.

                 public synchronized void
                 setResponder(Responder responder)




n/a              In 1.0.5 in order to see if a given session
                 was timed out you can call
                 getState().isTimedOut()
                 In 1.1.0 there is no getState() method in
                 Session. So there is no way to know if a
                 session is timedOut.
                 The getState() function disappeared from
                 Session.java in revision 567.



                                                               847 of 1116
                        Access to Session.enabled is
                        synchronized on Session everywhere
                        except next() in the trunk. Is this
                        intended?

                        In 1.1.x branch it appears that next()
                        itself is synchronized.

                        I also notice that there's a synchronized
                        (this) in Session's constructor. I think this
                        is redundant?
                        FileStore.messageIndex is not cleared
                        on reset. As a result, get(int, int,
                        Collection) may include "junk" entries for
                        sequence numbers that used to be
                        known to the store but are no longer.
                        You can usually work around this by
                        being careful not to peek beyond the
                        current sequence number.

                        Suggested fix would be to add
                        messageIndex.clear()
                        to the top of initializeMessageIndex()

                        tx

JVM 1.5 on WindowsXP.   When messages with conditionally
                        required fields missing are submitted, the
                        rejection message does not specify the
                        tag number of the missing field. This
                        probably needs to be somewhere in tag
                        58, as tag 371 is not a FIX standard tag
                        for message rejections.




                                                                        848 of 1116
See paste below from
AcceptorSessionProvider. The parameter
connector is absent from the javadoc,
and it's not clear what it's for. As it's an
interface, the parameter's purpose
should be documented.

From the two instantiations of this
interface
(DynamicAcceptorSessionProvider and
AbstractSocketAcceptor::StaticAcceptor
SessionProvider), it appears this
parameter is only used for dynamic
sessions and is otherwise ignored.

/**
* Return a session for this sessionID.
The session might be
* created dynamically.
*
* @param sessionID
* @return the associated session or null
if no session can be
* associated with the given ID.
*/
Session getSession(SessionID
sessionID, SessionConnector
connector);




                                               849 of 1116
JDK 1.6_24   In quickfix.Message, parseGroup(...) the
             code looks for the first field in the group
             as defined by the dictionary. If it is not
             defined, then a
             "REPEATING_GROUP_FIELDS_OUT_
             OF_ORDER" exception is triggered.

             I made a TradeCaptureReport message.
             This type of message has a "Symbol"
             field in the "Instrument" component.
             I used the "NoLegs" repeating group and
             the message parsing on the server failed
             because I did not put the "LegSymbol"
             field in the group.

             My workaround is to put the "LegSymbol"
             field for each group. It makes the
             message bigger with no added value.

             If there is a reason to make this check,
             could somebody explain ?

             Thanks,
             John




                                                           850 of 1116
Windows XP                After a logout is received I get the         QuickfixJ, session
java version "1.6.0_26"   following message:

                          <20110818-09:19:28, FIX.4.2:NILAAND-
                          >ABFO-DMA-TEST, outgoing>
                          (8=FIX.4.29=8135=534=249=NILAAND5
                          2=20110818-09:19:28.06456=ABFO-
                          DMA-TEST58=user requested10=188)
                          <20110818-09:19:28, FIX.4.2:NILAAND-
                          >ABFO-DMA-TEST, incoming>
                          (8=FIX.4.29=5935=549=ABFO-DMA-
                          TEST56=NILAAND34=252=20110818-
                          09:19:2710=156)
                          <20110818-09:19:28, FIX.4.2:NILAAND-
                          >ABFO-DMA-TEST, event> (Received
                          logout response)
                          18-Aug-2011 10:19:28 quickfix.Session
                          disconnect
                          INFO: [FIX.4.2:NILAAND->ABFO-DMA-
                          TEST] Disconnecting: IO Session closed
                          <20110818-09:19:28, FIX.4.2:NILAAND-
                          >ABFO-DMA-TEST, error> (Error
                          processing message:
                          8=FIX.4.29=5935=534=249=ABFO-DMA-
                          TEST52=20110818-
                          09:19:2756=NILAAND10=156
                          java.io.IOException: The handle is invalid
                          at
                          java.io.RandomAccessFile.seek(Native




                                                                                            851 of 1116
The "MiscFeeType" extends StringField        QuickfixJ
and the constants into it are "String"s.
The specification however (and the
dictionary) indicates that this field is a
"char".
One of our clients sends this as a
"String" (value "12"), but we reject the
message because it is more than one
"char" long. If he sent it as a "char", we
would not reject, but it would not match
the constants in the Class file.

Workarround, either:
- Change the dictionary to have this field
be a "STRING" (used this one since our
client sends it as a String).
- Have the "MiscFeeType" class extends
"CharField" and change the constants in
the Class file, and embed it into your own
code to replace the one from the library
(haven't tested that though).




                                                         852 of 1116
When sending a SequenceReset                 session
message with invalid (i.e. too low) tag
36/NewSeqNo, QFJ answers with a
Reject. This is correct, but the Reject is
missing the tag 371/RefTagID.

{noformat}
sending message:
8=FIX.4.49=6735=434=252=20111115-
14:33:51.65449=FixClient56=FixGateway
36=110=049
received message:
8=FIX.4.49=12935=334=349=FixGatewa
y52=20111115-
13:33:58.18056=FixClient45=258=Value
is incorrect (out of range) for this
tag372=4373=510=146
{noformat}

Looking at the code in
Session.nextSequenceReset() the
method generateReject(sequenceReset,
SessionRejectReason.VALUE_IS_INCO
RRECT, 0) is called. Here we should
supply NewSeqNo.FIELD instead of 0.
Further down the chain, the method
setRejectReason will prevent the
371/RefTagID field to be set for FIX
versions lower than FIX4.2.




                                                       853 of 1116
In reference to a question on the quickfixj-
users list from 2012-04-25:
"1. Why are all the
LinkedBlockingQueues unbounded in the
EventHandlingStrategies?

We've found that if you have to go back
to the beginning of a session and have a
large amount of traffic to process you
can end up with memory issues without
using a bounded queue."

Both
quickfix.mina.EventHandlingStrategy
implementations contain a
BlockingQueue of Messages, or a
wrapper of Messages in the case of
SingleThreadedEventHandlingStrategy,
and both of these queues are
unbounded. We had an issue where
while trying to recover from a period of
downtime, the resent traffic would fill this
queue faster than it could be processed,
leading the app to run out of memory.
We solved this by overriding the classes
locally and giving the queues a capacity
of 5000.

I'd like to see this improvement made




                                               854 of 1116
Windows XP, Java 1.5.0_07   QuickFIX didn't respond correctly to a
                            ResendRequest from our counterparty.

                            Normally this is what happens when I
                            have to restart during the day:

                            XXX = Me
                            YYY = Counterparty

                            8=FIX.4.29=5335=A34=720049=XXX52=
                            20060718-08:07:30.23156=YYY10=108
                            8=FIX.4.29=6635=A34=720149=XXX52=
                            20060718-
                            08:07:30.26156=YYY98=0108=18010=1
                            95
                            8=FIX.4.29=6635=A34=1422549=YYY52
                            =20060718-
                            08:07:29.59656=XXX98=0108=3010=21
                            2
                            8=FIX.4.29=6235=234=720249=XXX52=
                            20060718-
                            08:07:32.13456=YYY7=116=010=222
                            8=FIX.4.29=7535=134=720349=XXX52=
                            20060718-
                            08:07:32.13456=YYY112=ResendHasFi
                            nished10=224

                            ResendRequest from YYY:
                            8=FIX.4.29=6635=234=1422649=YYY52
                            When the RejectLogon exception is
                            thrown, it can be configured to inhibit the
                            outgoing logout message before the
                            disconnect.
All                         Currently there is no way to change the
                            logger TimeZone. It would be nice if the
                            'TimeZone' configuration ID works for
                            both session scheduling and logger.



                                                                          855 of 1116
Any runtime environment   The parseGroup method in Message
                          does not correctly detect an invalid group
                          that starts with a non-subgroup field that
                          is not the appropriate 'first field' for the
                          group.

                          For instance, this incorrect
                          NoRelatedSym group:

                          NoRelatedSym (146): 1
                          SecurityID (48): 31406TPB1
                          SecurityIDSource (22): 1
                          ....

                          The first field should be a Symbol(55),
                          but the symbol field is missing in this
                          message. The parseGroup method will
                          try to add the SecurityID (48) field to the
                          group, but the group reference is still null
                          because it hasn't encountered the correct
                          first field yet. The fix is to check the
                          firstFieldFound flag and throw an
                          InvalidMessage exception if it isn't true.
                          This is done correctly in the code for a
                          subgroup field.

                          As a side note, Quickfix/C++ accepts this
                          message without problem, but it probably
                          shouldn't.




                                                                         856 of 1116
I may be wrong, but it seems that in the
constructor for Session there's code that
both accesses the incoming logFactory
and also checks it for null, but not in the
right order:

constructor {
Log log = logFactory.create(sessionID);

try {
<snip>
if (logFactory != null) {
state.setLog(log);
}
log.onEvent("Session " + this.sessionID
+ " schedule is " + sessionSchedule);
}

seems like if it's possible for the
logFactory to be null, that assumption
should be tested on the earlier line as
wel.




                                              857 of 1116
Windows XP, Sun JVM 1.4.2_06   Trying to reject invalid (potentially
                               malicious) Logon requests from an
                               unrecognised IP address fromAdmin by
                               throwing RejectLogon exception when a
                               "bad" Logon is detected.

                               The JavaDoc for RejectLogon says:

                               "This exception causes a logon to be
                               reject with an immediate disconnect."

                               However Session.next(Message) is
                               calling generateLogout() when
                               RejectLogon is caught, so the disconnect
                               is not "immediate", and the
                               "unauthorized" logon attempt consumes
                               a sequence number in the outgoing
                               direction which the "authorized"
                               connecting system may not be aware of
                               when next it logs in, causing a
                               ResendRequest to be sent when a valid
                               logon is finally established (see FIX
                               Protocol 4.4 with Errata 20030618, Vol 2 -
                               "Session Protocol", page 6).

                               The component group copy was skipping
                               the groups. See attach Lin Lejiang
                               message.




                                                                            858 of 1116
Whenever a parsing error occurs, an
InvalidMessage exception is thrown but
is never reported and the processing
continues to the validation method which
may or not find a validation error. If, for
instance, a LENGTH type field is missing
for a specific DATA field, the error
reported is:

Invalid message: Actual body length=x,
Expected body length=x

whereas the real error is that the
LENGTH field is missing.

form the fromString method of the
Message class:

try {
parseHeader(dd);
parseBody(dd);
parseTrailer(dd);
} catch (InvalidMessage e) {
isValidStructure = false;
}
if (doValidation) {
validate(messageData);
}




                                              859 of 1116
When a DATA field is received, the
quickfix looks for the corresponding
LENGTH field in the received fields list
BUT if the LENGTH and DATA fields are
part of the header, they are not found.
The extractField method from the
Message class should check if the
LENGTH fields is a header field and
search for it in the corresponding list.
(Not sure what to do with the group fields
though)

ex:
try {
if (group == null) {
if (isHeaderField(lengthField)) {
fieldLength = header.getInt(lengthField);
} else {
fieldLength = getInt(lengthField);
}
} else {
fieldLength = group.getInt(lengthField);
}
} catch (FieldNotFound e1) {
throw new
InvalidMessage(e1.getMessage());
}




                                             860 of 1116
                  The current implementation of the
                  JdbcLog (jdbc logger) hard-codes the
                  resulting table names to be
                  "messages_log" and "events_log".

                  The tables are hardcoded constants, and
                  no calls exist to modify the name of the
                  table.

                  I'd be ideal if we could specify the names
                  of the logging tables in the config file (or
                  programmatically).
                  That'd would allow for easy prototyping
                  with Rails to log all the messages to the
                  DB and easily display them in a webapp.

                  The constructor for JdbcLog takes in the
                  SessionSettings object, so it can easily
                  read the table names from it.

Linux, netbeans   Problem occured while passing the FIX-
                  Engine-Tests from openfix-test-server.
                  Field NoAllocs is overwritten when
                  parsing the message string into the
                  message in:
                  File: Message.java Method: fromString ->
                  ... parse ...
                  The original number in the Field NoAllocs
                  will be overwritten without checking if its
                  the same size.
                  In case of a conflict in the message (e.g.
                  NoAllocs greater than number of values)
                  this conflict can not be detected
                  anymore.
                  This could lead to critical situations in
                  real trading application.

                  Best regards, Welf



                                                                 861 of 1116
linux netbeans   We have established a connection to
                 HotSpot to receive market data.
                 After session start and login, but before
                 we receive tick data, we get a message
                 with the buffered market data.
                 In the Session-Log there is a message:
                 SCHWERWIEGEND: Invalid message:
                 Actual body length=120, Expected body
                 length=680
                 "SCHWERWIEGEND" is german and
                 means crucial.
                 After some debugging we found the
                 reason. The following incomming
                 message from hotspot:
                 8=FIX.4.29=68035=X49=HOTSPOT56=
                 OUR-SIDE34=117252=20061018-
                 11:13:55268=25279=0
                 55=CAD/JPY5071=3279=055=AUD/JPY
                 5071=3279=055=GBP/CHF5071=5279=
                 055=EUR/SEK50
                 71=5279=055=NZD/USD5071=5279=05
                 5=AUD/USD5071=5279=055=EUR/NOK
                 5071=5279=0
                 55=EUR/AUD5071=5279=055=EUR/CH
                 F5071=5279=055=GBP/JPY5071=3279=
                 055=EUR/USD50
                 71=5279=055=USD/NOK5071=5279=05
                 5=CHF/JPY5071=3279=055=AUD/NZD5
                 071=5279=0




                                                             862 of 1116
linux netbeans   The methode generateReject gets the
                 message and a String as parameter.
                 When we need to provide also the
                 reason, its neccessary to use the
                 following construction:
                 Reject r = new Reject();
                 r.set(new
                 RefSeqNum(message.getHeader().getInt
                 (MsgSeqNum.FIELD)));
                 r.set(new
                 SessionRejectReason(SessionRejectRe
                 ason....));// Reject reason
                 r.set(new Text("reject description")); //
                 readable message (optional, but
                 recommended)
                 try {
                 Session.sendToTarget(r, sessionID);
                 }
                 catch (Exception x) {
                 x.printStackTrace();
                 }




                                                             863 of 1116
This is an obscure bug that only surfaces
when you have the JdbcLogger
configured, but it actually can't connect
to the DB to log the message.

Stack Trace:
1:13:18,038 ERROR [main]
quickfix.CompositeLog
(CompositeLog.java:53) - null, c
ontinuing
java.lang.NullPointerException
at
quickfix.LogUtil.logThrowable(LogUtil.jav
a:54)
at
quickfix.JdbcLog.insert(JdbcLog.java:70)
at
quickfix.JdbcLog.onEvent(JdbcLog.java:
43)
at
quickfix.CompositeLog.onEvent(Composi
teLog.java:79)
at
quickfix.Session.<init>(Session.java:195)
at

Turns out the new session is only added
to the list of sessions after this log
message is printed so moving line 200
Modify the constructor that takes a field
number and delimeter tag to include only
the delimiter in the ordering. The order of
the remaining fields is undefined.

QF Rev. 1770




                                              864 of 1116
                Hi,
                Are there any performance data available
                about the quickfixj engine. Has someone
                used quickfixj in a production system and
                who can evaluate the performance of the
                engine. Or can someone tell us whether
                a standard tool exists to evaluate the
                performance.
                thanks & regards
                Houssem

                Hi,
                Is the quickfixj engine supporting third
                party routing. Is there any possibility to
                define an acceptor and an initiator with
                the same configuration(because in the
                case of routing we want host & port of
                the third party ).
                Thanks & regards
                Houssem
java netbeans   We are getting market data snapshots
                from Forex Hotspot
                Within these messages the timestamp is
                in UTC but quickfix was comming up with
                local time, because it uses a conversion
                class UTC-timestamp-converter.
                In the result I had some reference
                problems i.e. problems to find certain
                data from my database in the message
                log.
                Question: is it possible, to get the
                timestamp just as the original timestamp
                from the FIX-message ?

                Thanks, Welf


                QF Rev. 1982


                                                             865 of 1116
Has anybody tryed to pass all tests from
the openfix test server?
Since 2 days we are trying to understand
QFJ and to pass all tests with FIX.4.2 as
a preparation of connecting with
HotSpot.
Working at the tests is very helpful for a
better understanding of QFJ but very
timeconsuming ;-(.
Some tests could not be passed due to
some bugs/features in QFJ or openfix
server
For example:
Test 14h: Field appears more than ones
Test 14i: incorrect count field for
repeating group (Bug in QFJ already
reported)




                                             866 of 1116
linux, netbeans   First I have to say sorry, I have really
                  tryed to make it short - but it became
                  longer
                  Second: Thanks to Steve who patiently
                  answers all the questions (not only mine)

                  Its all about my problems doing (I think
                  typical) session management with QFJ.

                  Reffering to my last request "session
                  management at application level" I have
                  additional problems:
                  Like Steve said its possible to use any
                  external tools or cron jobs, the problem
                  with them is, that they need to be
                  coordinated with the FIX sessions, what
                  is additional (unneccessary) logic.
                  Now I did this and the following problem
                  occured:
                  We are running FIX sessions with
                  Hotspot, they are active approx 23 hours
                  per day. In the break of 1 hour we'd
                  like/need to cleanup the system
                  especially we'd like to archive logfiles
                  (approx 700MByte per day).
                  I did this now using a system functionality
                  (cron), since the two logfiles (event.log
                  and messages.log) were NOT created
                  again from the engine when the new
                  There should be some error checking on
                  the OrigSendingTime if the MsgSeqNum
                  is correct and the PossDupFlag is set
                  and a reject message sent if this fails.
                  The code is there if the MsgSeqNum is
                  less than expected but it is not run if the
                  MsgSeqNum is as expected. See FIX 4.4
                  Vol 2 Test case 2f&g

                  QF Rev. 1845, 1846


                                                                867 of 1116
                 Are there any benchmarking results for
                 quickfixj engine available? If not, can
                 benchmarking be performed on following
                 parameters :

                 1. Maximum number of simultaneous
                 sessions to fix engine.
                 2. Maximum number of orders per
                 second per session.
                 3. Maximum number of requests (New
                 orders/ Replace/ Cancel) per second per
                 session.
                 4. Memory, I/O, CPU requirments per
                 session.
                 5. Network bandwidth required per
                 session.

                 Optionally, Benchmarking of Broadcast
                 data (market rates) (latency, bandwidth).

                 If any such work has been done already
                 please let me know. If not what kind of
                 framework can be used to systematically
                 test quickfixj over above mentioned
                 parameters.

                 Cheers
                 Ashish

linux netbeans   It seems that the Field
                 "quickfix.field.LastPx" is the only field,
                 what does not has the "isSet" methode,
                 so that I need to catch the exception
                 instead of simply:
                 if (message.isSet(new LastPx())) { ... }




                                                              868 of 1116
Once a session is created, it is never
destroyed. Native Quickfix destroys
created sessions when the Initiator or
Acceptor that created it is destroyed.
I have encountered a counterparty
whose FIX 4.2 Logon message has
"98=0" appearing twice. It's clearly
wrong, but I couldn't find anywhere in the
spec that prohibits it.

We choke on these messages pretty
early with the not-too-helpful (see QFJ-
65) message "Invalid message: Actual
body length=x, Expected body length=x".

The Message.bodyLength() method adds
up the lengths of the fields after they've
been parsed and grouped as per the
DataDictionary, thus the duplicated
"98=0" field only gets counted once.

I have added a crude
"ValidateMessageStructure=N" work-
around for myself which disables the
whole bodyLength() validation step (as
well as the innocent checkSum and
header field order checks). I will attach
this hack as a patch against SVN
revision 571.

A better solution would be to re-think the
bodyLength() validation, could it not just
examine the raw (unparsed, ungrouped)
The primary message processing paths
were safe, but access to session state
variables was not fully protected in some
places.


                                             869 of 1116
linux, netbeans   Is there an opportunity to use the session
                  management (session schedule or state)
                  to run an own application methode?
                  What we´d like to do is: to clean up our
                  system (archive log-files and so on) in a
                  session break.
                  Now we do this with a cron-job, the
                  problem is, that the cronjob and the fix
                  session always need to be coordinated.
                  Im looking for an additional information
                  when I get a logout, to see that the
                  session has finished regular and Im in a
                  session break and so I can start my
                  cleaning scripts from my application
                  instead of using the cron-job.
                  Example: Hotspot has a break of one
                  and a half hour per day.

                  Thanks, Welf




                                                               870 of 1116
test   Currently the default Acceptor
       implementation expect the sessions to be
       pre-defined in the config file. Is it
       possible to dynamically create sessions
       after the connections are made? My plan
       is to have some kind of authentication
       and I want to load session dynamically.
       Any quick suggestion or example code
       available somewhere?

       My goal is
       1) Start aceptor using quickfix
       SocketAcceptor
       2) a way to get the logon message to the
       message handler
       3) the message handler then create the
       session or start the session

       Thanks for the help in advance.




                                                  871 of 1116
linux, netbeans   Since session management is important
                  for a good engine (and QFJ is my
                  favourite) I spent the afternoon a little in
                  testing and debugging.
                  I hope Steve as the maintainer is not too
                  mad on me, that I have decided to create
                  a new bug report.
                  First the result, I´d like to suggest to
                  change the code in:
                  SessionSchedule.java: private
                  TimeInterval
                  theMostRecentIntervalBefore(Calendar t)
                  There are the 2 if constructions adding a
                  day to the end day:
                  if (endTime.getDay() == -1 &&
                  startTime.getHour() >=
                  endTime.getHour()) {
                  endCal.add(Calendar.DATE, 1);
                  }
                  if (endTime.getDay() != -1
                  && (startTime.getDay() >
                  endTime.getDay() || (startTime.getDay()
                  == endTime
                  .getDay() && startTime.getHour() >=
                  endTime.getHour()))) {
                  endCal.add(Calendar.WEEK_OF_YEAR,
                  1);
                  }
                  My suggestion is, to make it more




                                                                 872 of 1116
linux, netbeans   I have installed QFJ using the source
                  package from sourceforge, it comes up
                  with a structure like:
                  quickfixj -> src -> quickfix -> ...

                  to participate on the new changes I have
                  checked out QFJ using subversion, but it
                  comes up with:
                  core -> src -> main -> java -> quickfix ->
                  ...

                  the directory test is at a completely other
                  place in the whole structure.
                  Now I have no idea how to update QFJ

                  And additionally, when I try to switch to
                  the subversion structure I will loose my
                  netbeans settings for QFJ

                  My questions:
                  What can/should I do?
                  Why QFJ has a completely other
                  structure in svn?

                  Many thanks, Welf




                                                                873 of 1116
test   Hi Steve,
       We are trying to evaluate using QF
       engine using java api and found new
       issues. The message creation by just
       using the data dictionary that comes with
       FIX.4.2.xml is taking longer than just
       adding required fields. Our application is
       very powerful and don't want to add any
       extra latency. But, when I did some stats,
       I found QF message creation takes
       longer time (say for MktdataIncRefresh)
       if I use groups. I changed the
       Message.java where I can now do
       addfield as list and create the message
       witout using Groups. That's 3 times
       faster. I understand that the way the java
       code is written and really superb. But, it
       affected the performance in big time.


       say if I want
       1) add desired fields
       2) add groups as a list

       currently I can't do it with QF. I have to
       use setField and addgroup methods.

       also I found another prb where the send
       and processmessage methods are




                                                    874 of 1116
This is a continuation of bug 133 - just
breaking out the recursive stack overflow
error.

See the (bottom of) attached log - if the
JdbcLog fails to insert a message, we
end up calling the JdbcLog.insert()
recursively until we get a stack overflow.
I think this is b/c of Proxool - it keeps
trying to get a connection and log
something.

Patch is attached to the bug 133 and
here as well.




                                             875 of 1116
I'm able to reproduce the same situation
as was in bug 89 initially
(http://www.quickfixj.org/jira/browse/QFJ-
89)

If you misconfigure the JdbcLog (wrong
db name, or just turn off the db
altogether), you get into a situation
where JdbcLog calls into
LogUtil.logThrowable() which tries to
lookup the session through
Session.lookupSession() which comes
back as null and that produces an NPE.

There are actually 2 bugs:
1. When you create a session you try to
log session creation.
2. if jdbc log is misconfigured, we get an
exception and go into
LogUtil.logThrowable() which calls
through to Session.lookupSession()
3. since we haven't registered the
session yet we get an NPE in
LogUtil.logThrowable()

Second bug (this has to do with proxool)
1. When we get the NPE in the above
scenario, we try to log it again, which
essentially ends up doing this recursively




                                             876 of 1116
ScreenLog is currently the only logger to
allow for filtering out of heartbeats.
Idea situation would be to have one
unified way to filter out heartbeats for all
the loggers.

In slf4j logger, it's trivial to implement by
just adding another special logger
category that can be filtered out in
log4j.properties.

However, since the strings created are
pretty large, it may actually be a lot more
efficient to intercept it at a higher level
and just not print altogether, hopefully
saving some string concats along the
way.




                                                877 of 1116
Seems that the SFL4JLog is not setup to
correctly show the actual class/line
printing the message.
All the messages come out looking like
this:
18:30:16,736 INFO [QFJ Timer]
quickfixj.msg.outgoing
(SLF4JLog.java:90) - FIX.4.2:MRKTC-
OMS->MRKTC-EXCH:
8=FIX.4.29=6335=034=2749=MRKTC-
OMS52=20070210-
02:30:16.73256=MRKTC-EXCH10=114

with (SLF4JLog.java:90) always being
the line origin of where the message is
coming from.

I know that in Log4J they have a concept
of a "wrapper function" name that gets
passed in to the log function to make
sure the wrapper doesn't get printed:
http://logging.apache.org/log4j/docs/api/o
rg/apache/log4j/Category.html#log(java.l
ang.String,%20org.apache.log4j.Priority,
%20java.lang.Object,%20java.lang.Thro
wable)

Perhaps there's some similar approach
for SLF4J as well?




                                             878 of 1116
the UtcTimeStampField has a boolean
argument whether or not t preserve the
millisecond field from a timestamp.

However, none of the subclasses call
that constructor, as a result, the
milliseconds are always lost when you
round-trip something like
Date aDate = new Date();
assertEquals("rountdrip fails",
aDate.getTime(), (new
EffectiveTime(aDate)).getValue().getTim
e());

Message msg = new Message();
msg.setField(new EffectiveTime(aDate));
assertEquals("rountdrip from msg fails",
aDate.getTime(), msg.getField(new
EffectiveTime()).getValue().getTime());

Fails in the second assert with: rountdrip
from msg fails
expected:<1172696741599> but
was:<1172696741000>

So the milliseconds are lost when a
subclass of UtcTimeStampField is
retrieved from the message.




                                             879 of 1116
What do you think of adding another
method to quickfix.Session that allows to
check if just the body of the message is
valid?

I can see the use cases being where a
quickfix message is created (a new order
single, a reject, etc) and may need to be
validated in the application layer before
sending it out on the wire (where it
potentially gets validated as well by QFJ
itself).

However, it's hard to do that since the
header and trailer information are
injected into the message by QFJ. And
while you can set almost anything, the
CheckSum is hard to calculate; and it
seems silly to duplicate the effort.

Any thoughts? What do you guys think?




                                            880 of 1116
                  DataDictionary.load() method currently
                  hardcodes all the header/trailer fields to
                  be "not required".
                  As a result, even validating a message
                  without a BeginString or SenderCompID
                  passes, even though those fields are
                  obviously required in the FIX dictionary
                  file.

                  Source example:
                  String required = "false";
                  addHeaderField(lookupXMLFieldNumber
                  (document, name),
                  required.equals("true"));

                  Need to behave the same as with regular
                  fields.


Linux, netbeans   We strongly request that (especially
                  incomming) messages are provided in all
                  application handlers.
                  e.g. "onLogon" and "onLogout" actually
                  only see the sessionID.
                  In general, the FIX-Spec allows
                  additional optional message fields also
                  for these messages wich should be
                  accessable for our business logic.
                  Our problem:
                  The optional text field from Hotspot -
                  logout message contains the expected
                  sequence number for our logon.

                  With best regards, Welf




                                                               881 of 1116
I think it'd be very useful to make it
configurable whether or not JdbcLog
prints heartbeats, just like ScreenLog
does.
This may be an addition to issue 75 (to
make names of JDBC tables
configurable).

We took a stab at making JdbcLog more
configurable, i'm attaching the patch file
(apply in core/) that contains all the
changes and a unit test.


We use Spring to configure our app (and
QuickfixJ), and the relevant code to
create a JdbcLog is:
<bean id="jdbcLogFactory"
class="quickfix.JdbcLogFactory">
<constructor-arg>
<ref bean="sessionSettings"/>
</constructor-arg>
<property name="skipHeartbeats"
value="true"/>
</bean>




                                             882 of 1116
Windows XP Pro SP2, JDK 1.5.0_01   Whenever we instantiate an Initiator with
                                   the following sample session schedule
                                   settings, the engine considers that we
                                   are out of schedule because internally (in
                                   SessionSchedule.theMostRecentInterval
                                   Before(Calendar)), the interval start date
                                   is always after the end date for some
                                   reason:

                                   SETTINGS
                                   ========
                                   Locale.setDefault(Locale.FRENCH);
                                   String[] WEEKDAYS = new
                                   DateFormatSymbols(Locale.getDefault())
                                   .getWeekdays();
                                   settings.setString(mySessionID,
                                   Session.SETTING_TIMEZONE,
                                   "Europe/London");
                                   settings.setString(mySessionID,
                                   Session.SETTING_START_DAY,
                                   WEEKDAYS[Calendar.SUNDAY]);
                                   settings.setString(mySessionID,
                                   Session.SETTING_START_TIME,
                                   "22:15:00");
                                   settings.setString(mySessionID,
                                   Session.SETTING_END_DAY,
                                   WEEKDAYS[Calendar.FRIDAY]);
                                   settings.setString(mySessionID,
                                   Session.SETTING_END_TIME,
                                   doing (new quickfix.Message()).toString()
                                   results in an NPE.
                                   That's b/c the FieldMap.calculateString()
                                   function doesn't guard against fields
                                   missing from the pre-canned set of
                                   fields.




                                                                                883 of 1116
The constructors for the singletons for
date-based FieldTypes (in
FieldType.java) are constructed with the
wrong Java datatype (I think). Fields that
represent UtcTimeStamps for example,
actually return a Date object from
getValue().

The offending lines are:

public final static FieldType
UtcTimeStamp = new
FieldType("UTCTIMESTAMP",
Calendar.class);
public final static FieldType UtcDateOnly
= new FieldType("UTCDATEONLY",
Calendar.class);
public final static FieldType UtcDate =
new FieldType("UTCDATEONLY",
Calendar.class);
public final static FieldType UtcTimeOnly
= new FieldType("UTCTIMEONLY",
Calendar.class);

I think the "Calendar.class" should be
replaced by "Date.class" at the end of
each constructor call.




                                             884 of 1116
Currently, the MessageFactory class only
exposes functionality to create a
Message based on the FIX version and
MsgType.

Would be nice to also add a function that
would create a group, based on the
version, MsgType and the corresponding
group type.

Here's the prototype:
{code}
/**
* Creates a group for the specified
parent message type and
* for the fields with the corresponding
field ID
*
* Example: to create a {@link
quickfix.fix42.MarketDataRequest.NoMD
EntryTypes}
* you need to call
* create({@link
quickfix.field.MsgType#MARKET_DATA_
REQUEST, {@link
quickfix.field.NoMDEntryTypes#FIELD})
*
* @param msgType Message type of the
enclosing message




                                            885 of 1116
test   Hi Steve,
       I have been doing some testing with
       quickfix and mina 1.0.1 and found it's
       very inefficient w.r.t the speed/latencies.
       Any advise would be really appreciated.
       We have a FIX engine that's
       implemented using QFJ and want to
       support 500 users and may be each
       getting about 250-500 messages per
       second. All users get the data at the
       same time as the marekt changes for
       everyone. When the data changes and
       as MINA uses "n" number of
       SocketIOProcessors, I notice delay of
       couple of mill seconds more on NIO
       compared to blocking I/O. Any advise of
       how I can achive more sessions and also
       less latency?

       Thanks for your help.

       Seems that Message.validate() method
       skips the validation of repeating groups.
       it validates the # of groups, but not the
       fields inside the group itself.

       Would be nice to have the groups be
       validated.




                                                     886 of 1116
Hello,

i tested my fixengine by creating an
acceptor and an initiator session on the
same machine. the initiator is configured
to login to the acceptor session. They
had different sequence numbers, so the
logout() callback from initiator session is
getting called. But the fromAdmin()
callback is never activated. That´s
confusing, because when initiating a
session to an remote fix engine this
works, I use to catch the fromAdmin()
callback and reset the sequencenumbers
by reading the remote message
sequencenumber; internally it does not
work. Why ?.

Regards
Thomas Hügel




                                              887 of 1116
Hello,
when exporting an jmx session with an
session qualifier, the code in
SessionJmxExporter.java, sets the
property "qualifier" twice which causes
the following exception:

22.05.2007 16:21:52
org.quickfixj.jmx.mbean.connector.Conn
ectorJmxExporter export
SCHWERWIEGEND: Failed to export
connector MBean
javax.management.MalformedObjectNa
meException: key `qualifier' already
defined
at
javax.management.ObjectName.addPro
perty(ObjectName.java:664)
at
javax.management.ObjectName.constru
ct(ObjectName.java:559)
at
javax.management.ObjectName.<init>(O
bjectName.java:1304)
at
javax.management.ObjectName.getInsta
nce(ObjectName.java:1187)
at
org.quickfixj.jmx.mbean.ObjectNameFact




                                          888 of 1116
Hi all!

I work as an engineer in a local trading
software company in Taiwan.
In our solution for outbound trading, we
use QuickFIX/J for
communication with FIX gateways. It
works fine for us most of the time,
thanks for the great work, developers!

I find some problems with weekly session
in QuickFIX/J in our test
environment these days though:

1. I can't confiure a weekly session using
SessionSettings with
an InputStream object (in my case, a
FileInputStream object),
because SessionSettings doesn't work
well with multibyte characters,
and the name of weekdays in our locale
(zh-TW) is in multibyte
characters. Therefore I change the code
to use InputStreamReader to read
characters instead.

2. When parsing name of weekdays in
class DayConverter, only the leading
two characters are used for comparison,




                                             889 of 1116
All   As requested previously
      (http://www.quickfixj.org/jira/browse/QFJ-
      125), we have a few compelling use
      cases where we would like our
      QuickFIX/J-based server application to
      be able to update session descriptions
      on the fly.

      I have attached patches to the current
      SVN HEAD (621), that provide the basic
      facilities for dynamic session definition in
      QuickFIX.
      * Replaced the singleton "sessions" map
      in Session.java with an instance of the
      new interface ISessionDB
      * Created two implementations of
      ISessionDB, StaticSessionDB (which
      provides the same semantics as the
      original map singleton) and
      CachingSessionDB which creates a local
      cache of any session created by a
      SessionFactory (not sure how useful this
      is, but it is useful during prototyping and
      testing)
      * Added a "UseDynamicSessions"
      boolean configuration variable that can
      be used in the global scope of the
      configuration file.
      * Added a "useDynamicSessions"




                                                     890 of 1116
Hello,

i tested my fixengine by creating an
acceptor and an initiator session on the
same machine. the initiator is configured
to login to the acceptor session. They
had different sequence numbers, so the
logout() callback from initiator session is
getting called. But the fromAdmin()
callback is never activated. That´s
confusing, because when initiating a
session to an remote fix engine this
works, I use to catch the fromAdmin()
callback and reset the sequencenumbers
by reading the remote message
sequencenumber; internally it does not
work. Why ?.

Regards
Thomas Hügel




                                              891 of 1116
NetBeans 5.5 JDK 1.6   Hi,
                       I am new to this and I am doing
                       something very simple, I think.

                       2 separate threads in the same class. In
                       the 1st thread messages can be sent &
                       received without any problem.
                       In the 2nd thread it throws a
                       SessionNotFound error when calling
                       sendToTarget();
                       The session is active, as my counterpart
                       at the other end of the session
                       confirmed.
                       Same class; same session; 2 separate
                       threads.

                       I tried defining a separate initiator in the
                       2nd thread. That got a Config error

                       Thanks in advance for any help,
                       Robert




                       If you create a configuration properties
                       file which ends with a comment line with
                       no carriage return, SessionSettings will
                       go into an infinite loop when it tries to
                       read it. This is because of the comment
                       line handing code in lines 502-510 in
                       SessionSettings. A change could either
                       be made to isNewLineCharacter(),
                       (which might have unintended side
                       effects with the other places it is called)
                       or in the condition on the while loop.




                                                                      892 of 1116
All.   Interpolation in 1.1.0 does not work with
       SenderCompID in default section, though
       it works elsewhere. Also possibly does
       not work with the other two fields used to
       generate session id.

       Often interpolation is required for
       SenderCompID since this should be
       different in dev, UAT and Production.

       Related to
       http://www.quickfixj.org/jira/browse/QFJ-
       114

       Thanks.




                                                    893 of 1116
I'm seeing the following show up when i
kill the connection to my FIX destination:
<20070713-01:24:51, FIX.4.4:test-quote-
asker->test-exchange, event> (Forcibly
disconnecting session)
<20070713-01:24:51, FIX.4.4:test-quote-
asker->test-exchange, event>
(Disconnecting)
<20070713-01:24:51, FIX.4.4:test-quote-
asker->test-exchange, event>
(Disconnecting)
18:24:51,172 ERROR
[SocketConnectorIoProcessor-1.0]
mina.initiator.InitiatorIoHandler
(AbstractIoHandler.java:77) - protocol
handler exception
jjava.lang.NullPointerException
at
quickfix.Session.disconnect(Session.java
:1369)
at
quickfix.mina.AbstractIoHandler.session
Closed(AbstractIoHandler.java:99)

This happens in Session.disconnect(),
where we have the following code:
if (hasResponder()) {
getLog().onEvent("Disconnecting");
NPE>>>> getResponder().disconnect();




                                             894 of 1116
1.2.0, linux   Hello,

               after exchanging the 1.1.0 libraries with
               the 1.2.0 ones all of my connected FIX
               Session counterparties complain "stale
               connection" or "hearbeat timeout". The
               session does not disconnect, but seems
               somehow to have a problem. The
               session now look like:
               0 Tue Jul 03 17:34:35 GMT 2007
               Heartbeat admin outbound
               1 Tue Jul 03 17:34:39 GMT 2007
               TestRequest admin inbound
               2 Tue Jul 03 17:34:34 GMT 2007
               Heartbeat admin inbound
               3 Tue Jul 03 17:34:00 GMT 2007
               Heartbeat admin outbound
               4 Tue Jul 03 17:34:04 GMT 2007
               TestRequest admin inbound
               5 Tue Jul 03 17:33:59 GMT 2007
               Heartbeat admin inbound
               6 Tue Jul 03 17:33:25 GMT 2007
               Heartbeat admin outbound
               7 Tue Jul 03 17:33:29 GMT 2007
               TestRequest admin inbound
               8 Tue Jul 03 17:33:24 GMT 2007
               Heartbeat admin inbound
               9 Tue Jul 03 17:32:49 GMT 2007
               Heartbeat admin outbound




                                                           895 of 1116
In a failover setup, two instances with
QuickFIX/J engines are running on
different nodes. They connect to the
same database using Jdbc. One engine
is started and persists its session state
into the database.

The other instance is stopped. If a
failover occurs (instance crashes etc.),
the second instance takes over and the
engine is started. But the session state is
not refreshed from the database. It has
been loaded when the instance started
and the QF connector (acceptor or
initiator) has been constructed. In the
meanwhile, the other instance has
updated the session state.

I would expect that the second instance
picks up the new session state on
connector.start() or even better
immediately before the Logon is sent /
processed.

RefreshOnLogon already does this for
acceptors. Maybe this is a good place to
add this for initiators.

In summary, a general




                                              896 of 1116
Sun JVM 1.4   [I searched to see if this had come up
              before, but couldn't find it - many
              apologies if this is a duplicate]

              We have an issue when an acceptor
              receives the a Logon(A) message to start
              a new session from an initiator which
              was not connected at the time that the
              old session expired.

              The Logon(A) message has 34=1 and
              141=Y, so I would expect the acceptor to
              just go ahead with the new session.
              Unfortunately the logon message is
              being passed to Session.next(Message),
              which is getting false from a call to
              checkSessionTime() and so just calls
              Reset(), which sends a Logout(5)
              message (without having reset the
              sequence number) and disconnects
              (without even waiting for a Logout(5)
              response).

              Our applicaiton is based on a slightly-
              customized version of QuickFIX/J
              (currently based on 1.0.4), so upgrading
              to a later version to see if this is resolved
              is not a quick and simple task, hence I
              thought I'd just ask a) if this is/was a




                                                              897 of 1116
HEAD revision of QFJ (actually, rev 710) This is a continuation of QFJ-215.
                                         I'm now seeing a new hang that happens
                                         in IoSessionResponder.disconnect() on
                                         the
                                         waitForScheduleMessagesToBeWritten()
                                         line.

                                       Seems that one of the connecting
                                       sockets gets the underlying MINA
                                       framework in a "bad state" and the
                                       IoSessionResonder.waitForScheduleMes
                                       sagesToBeWritten() function never gets
                                       out of the loop that's waiting for the
                                       messages to be written.

                                       I have 2 acceptor sessions running with
                                       MINA 1.1.0, and both end up in this state
                                       after a few days of being up.
                                       See the attached logs for the full stack
                                       dump, and the output of netstat
                                       command (on Ubuntu Linux).

                                       The relevant portion of the stack trace is:
                                       "SocketAcceptorIoProcessor-0.0" prio=1
                                       tid=0x082427c0 nid=0x546e
                                       sleeping[0xb0c71000..0xb0c71f60]
                                       at java.lang.Thread.sleep(Native Method)
                                       at
                                       quickfix.mina.IoSessionResponder.waitF
                                       I'm writing a monitoring web application
                                       using JMX and it would be very useful if
                                       SessionJmxExporter.createSessionNam
                                       e is made public.




                                                                                     898 of 1116
rev 709   I'm encountering a situation (in the HEAD
          code) where I get a deadlock when i
          disconnect from a QFJ acceptor running
          on Linux or Mac OS X from a Windows
          machine.
          I can reproduce this using the sample
          executor/banai applications, so i don't
          think that it has anything to do with my
          application code.

          Repro:
          Run the executor app on a Mac machine
          Setup Banzai to connect from a Windows
          machine to the acceptor on a Mac or a
          Linux box. this has to be a separate box,
          not localhost. VMWare Windows -> Linux
          host works.

          The first time the connection will go
          through successfully. Now, press Ctrl-C
          to disconnect the Banzai process - the
          "acceptor" side registers the disconnect
          messages:
          <20070726-02:30:40, FIX.4.0:EXEC-
          >BANZAI, event> (Responding to logon
          request)
          Jul 25, 2007 7:30:43 PM
          quickfix.mina.AbstractIoHandler
          exceptionCaught




                                                      899 of 1116
This is an extension to QFJ-165.
Currently the way to allow for dynamic
sessions is to use and specify a set of
session settings and a template
SessionID that will drive the creation of
new sessions dynamically.

That works great as long as all the new
sessions are of same FIX version and
need the same data dictionary file.

However, if you want to support different
FIX versions coming across the same
acceptor connection this paradigm
breaks down, since only the data
dictionary of the template session will be
used.

The simple solution is to use a Map of
templateIDs --> SessionSettings, with
different settings for each corresponding
session id. Then you look up the
appropriate template ID based on the
incoming FIX version and use the
corresponding settings.

Not sure if this simple approach has a
similar (but yet undiscovered) future
drawback....




                                             900 of 1116
I have an app that's using
SLF4JLogFactory and i have the slf4j-
logj4 jar in the path, so in the end it's
using log4j to print log messages.

The entries in the log4j.properties file are
parsed and used when the app starts up,
so whatever i have setup drives the
filtering of the output.
However, if i modify the log4j file after the
app starts up, the changes never take
effect - the same messages get printed,
regardless of whether or not i turn certain
categories on/off.

Anybody else seeing something similar?
I couldn't trace through in the QFJ code
where that would make a difference -
seems that SLF4J/Log4J would handle
that on their own.

Just wondering if maybe we are not
setting SLF4J/Log4J up correctly.




                                                901 of 1116
the OpenFIX testing suite requires the
ability for the FIX engine to send a
sequence reset at an arbitrary point in
the testing process (see attached
screenshot). I don't think QuickFIX can
do this currently.

It seems to me that this might be an easy
thing to add to the set of operations
available on SessionAdminMBean (which
is then exported via the JMX interface).
In order to satisfy the test the user would
need to be able to specify one int
argument to the operation (not sure if
this is possible).

Also, provided the JMX interface is the
right entry point, what is the correct way
to send the sequence reset? Can I just
construct a message and call
Session.sendToTarget?




                                              902 of 1116
We are filing this because of a failing
OpenFIX test, but we actually believe
that the test itself is broken, so I won't
describe the interaction here.

It would be nice if QuickFIX/J could
check for the presence of conditionally
required fields in messages when doing
validation with a data dictionary. An
example: In an execution report, we have
the following description of ExpireDate
and ExpireTime:

432 ExpireDate C Conditionally required
if TimeInForce (59) = GTD and
ExpireTime (126) is not specified.
126 ExpireTime C Conditionally required
if TimeInForce (59) = GTD and
ExpireDate (432) is not specified.

QuickFIX/J should reject a message if
59=6 but the message is missing both
432 and 126.

Other than that, this request is pretty
open-ended. Clearly there would need to
be some language for expressing these
conditional requirements in the data
dictionary, but we would have to think




                                             903 of 1116
This is a failing OpenFIX test. The test
sends a message with an SOH character
in a field specifier (see 500^A40 below).
QuickFIX/J does not send a reject.

Here is what OpenFIX has to say about
the test:
==========
This tests your ability to handle a field
that includes an SOH character. We will
send you a message with the SOH
character embedded in the OrderQty
value.

Expected flow:

* Send Reject (session-level) referencing
field identifier (tag number) with
embedded SOH
* Increment inbound MsgSeqNum
* Generate an "error" condition in test
output

The details of these session-level tests
can be found in the FIX 4.3 Specification,
Volume 2.
==========

I get this message in my QuickFIX/J log,




                                             904 of 1116
This is a failing OpenFIX certification
test. It will test that the FIX engine sends
a reject when it receives a message with
two of the same field (non-repeating
group fields). In this case, it sends a
message with OrderQty(38) set twice.
Here is what openFIX has to say about
the test:

============
This tests your ability to handle a field
that appears more than once in a
message. We will send you a message
with OrderQty set twice.

Expected flow:

* Send Reject (session-level) referencing
duplicate field identifier (tag number)
* Increment inbound MsgSeqNum
* Generate an "error" condition in test
output

The details of these session-level tests
can be found in the FIX 4.3 Specification,
Volume 2.
=============

This is the message that they send.




                                               905 of 1116
2003 Hi Steve, it's been quite a while.
     We are experiencing the bug detailed
     below.
     Do you have a specific patch for this for
     1.2.1, or is 1.3.0 stable enough
     for production.

     This could be related to a open bug
     about the timer events not being
     processed in an acceptor while it's
     disconnected (QFJ-218). This would
     cause the logout with the old sequence
     number to be sent the first time
     someone connects. Subsequent
     connections should be ok and should use
     the
     new session's sequence numbers. If we
     can complete the 1.3 release soon,
     I'll have the fix in there. Otherwise, I'll
     patch 1.2.1 and release a
     new version of that branch.

     A temporary workaround is to call reset
     manually on the message
     store before the new session start time.

     Regards,

     Steve
     I'm looking at the code in
     SessionState.isWithinHeartBeat()
     function, and it references a variable
     that's never initialized or modified.
     The whole function seems to be a no-op,
     since the value is always 'false'.

     Is it an oversight and it needs to be
     modified? or maybe we can just take it
     out altogether to make sure we don't
     cause confusion?

                                                   906 of 1116
After several logon attemps, quickfix/J
stops sending tag 141 and starts
increasing the sequence number which
has for effect to received a msg
sequence error when the logon is
eventually responded. See the log
excerpt below and note that there are
numerous logon attemps before and
after it:

8=FIX.4.39=8035=A34=149=cgiwl352=2
0070905-
10:12:44.51056=bofaCgiwlTest98=0108
=30141=Y10=154
8=FIX.4.39=8035=A34=149=cgiwl352=2
0070905-
10:12:55.50956=bofaCgiwlTest98=0108
=30141=Y10=164
8=FIX.4.39=8035=A34=149=cgiwl352=2
0070905-
10:13:06.54056=bofaCgiwlTest98=0108
=30141=Y10=156
8=FIX.4.39=7435=A34=249=cgiwl352=2
0070905-
10:13:18.52356=bofaCgiwlTest98=0108
=3010=119
8=FIX.4.39=7435=A34=349=cgiwl352=2
0070905-
10:13:29.52356=bofaCgiwlTest98=0108




                                          907 of 1116
FIX.4.4 protocol has MDEntryTime (273)
and MDEntryDate (272) to specify the
time/date of market data entries.

When you are trying to parse a market
data incremental refresh (MsgType=X),
and you have a MDEntryTime of
"13:30:00" it will parse it using the
UtcTimeOnlyConverter, but it'll parse the
time relative to the January 1, 1970 date.
As a result, in the summer you'll end up
with times being off-by-one, bc January
is not during DST.

The real way to parse the MDEntryTime
is to combine it with the MDEntryDate, so
that if the other field is present it should
use it and then it'll have the right date
and will have the DST value calculated
correctly.

The workaround, for now, is to of course
parse the entire date/time combined
string together.

Here's the example portion of a message
that'll break this (see fields 272/273):
8=FIX.4.4
35=X




                                               908 of 1116
2003 Hi Steve, it's been quite a while.
     We are experiencing the bug detailed
     below.
     Do you have a specific patch for this for
     1.2.1, or is 1.3.0 stable enough
     for production.

     This could be related to a open bug
     about the timer events not being
     processed in an acceptor while it's
     disconnected (QFJ-218). This would
     cause the logout with the old sequence
     number to be sent the first time
     someone connects. Subsequent
     connections should be ok and should use
     the
     new session's sequence numbers. If we
     can complete the 1.3 release soon,
     I'll have the fix in there. Otherwise, I'll
     patch 1.2.1 and release a
     new version of that branch.

     A temporary workaround is to call reset
     manually on the message
     store before the new session start time.

     Regards,

     Steve




                                                   909 of 1116
the configuration.html file contains an
entry for the SendResetSeqNumFlag:
SendResetSeqNumFlag Send a
sequence number reset when initiating a
logon.

However, i'm not seeing any references
to it in the QFJ code it self - the setting is
now showing up in the Session.java nor
is there a corresponding flag for it and it's
not used in Session.isResetNeeded()
function.

are the docs out of date? and what's the
appropriate way to ensure that a reset (ie
141=Y) is not being sent in the first
Logon message?




                                                 910 of 1116
Linux.   Hi,

         Was receiving this message without any
         stack trace or details on initialization of
         the quickfixj engine.

         2007-10-15 15:52:53,394 [QFJ Timer]
         INFO quickfixj.event - FIX.4.2:SENDER-
         >TARGET: Error Reading/Writing in
         MessageStore

         The subsequent incoming seqnum does
         not get updated in the db though
         outgoing does, causing the engines to
         stop talking to each other. I believe I had
         to delete entries in the messages table to
         get rid of the error. Unfortunately, I forgot
         to capture the offending data in
         messages table.

         Q:
         * Is there a way to get more information
         about 'Error Reading/Writing in
         MessageStore' message to make the
         cause more apparent (like a strack trace,
         or data that failed to be read/written)?
         * Is the behavior expected (unable to
         write incoming seqnum once the error
         has occurred )?




                                                         911 of 1116
We've been going through a certification
process with TransactTools
(http://www.openfix.net/), and
encountered a different expected
behaviour with sending Test Requests.

In the TransactTools test, they skip a
heartbeat message and expect our
quickfix engine (Ie QFJ) to send a test
request:
"We suppressed our last heartbeat
message.
In response we expected to receive a
test request message from you within 9
seconds (30% of the HeartBeatInt field)
but did not."

Seems like they expect it to be sent
within HeartBeatInt+9secs. Looking at
the code in
SessionState.isTestRequestNeeded(), it
calculates the Test Request delay as 1.5
* (HeartBeatInt + numTestRequestsSent
+ 1), which translates into HeartBeatInt *
1.5 (for first request) = 30 + 15secs,
which is over the +9 seconds that's
expected.

Is there a known spec for this formula or




                                             912 of 1116
The TransactionTime() constructor in
version 1.2.1 used to return a
TransactionTime with the current system
time in it, and this has changed in the
1.3.0 where the time of the first call to
this constructor is returned. Is this
intentional? There's no Javadocs, so I
can't tell for sure.

If this is not intentional, the problem lies
with the createDate() method of
quickfix.DateField.java:

private static Date createDate() {
synchronized (calendar) {
return calendar.getTime();
}
}

where calendar is also static.




                                               913 of 1116
Windows XP SP2, JDK 1.6.0_03 and   You are calling the method
J2SDK1.4.2_16                      "TimeZone.getTimeZone" with argument
                                   "UTC" to obtain the "GMT" timezone .
                                   According to the documentation, you
                                   should be calling this method with
                                   argument "GMT", instead. The call
                                   TimeZone.getTimeZone("UTC") is
                                   working because it has fallback logic that
                                   defaults to "GMT" when the requested
                                   timezone (in this case, "UTC") is not
                                   found. As far as I can tell, the following
                                   QuickFIX/J files are affected by this
                                   issue:

                                   DateField.java
                                   JdbcStore.java
                                   SessionSchedule.java
                                   SystemTime.java
                                   FieldConvertersTest.java
                                   SessionScheduleTest.java
                                   AbstractDateTimeConverter.java


                                   quickfix.DoNotSend should implement all
                                   four java.lang.Exception constructors.

                                   DoNotSend();
                                   DoNotSend(String);
                                   DoNotSend(String, Throwable);
                                   DoNotSend(Throwable);


                                   Is the onLogout event called when the
                                   heartbeat is not received within the
                                   configured interval?



                                                                                914 of 1116
Using JVM 1.5 on WindowsXP.   Field 93 is SignatureLength, Field 89 is
                              Signature. The fields 89 and 93 are in
                              the trailer. 89 is DataField. 93 is the
                              length of 89. When receives a message
                              containing field 89, accptor will extract
                              every field in order. 89 is extracted
                              earlier. Acceptor cannot find the length of
                              it(93) at this time. So exception occurs.

                              A effective method is to change the order
                              of message. Put the field 93 former to
                              the field 89. Thus, the field 93 is
                              extracted earlier than 89. Use this
                              method:
                              Message.Trailer.calculateString():
                              super.calculateString( buffer, new int[] {
                              SignatureLength.FIELD }, new int[]
                              {CheckSum.FIELD } );




                                                                            915 of 1116
In the class Message, method
extractField(Group group, DataDictionary
dataDictionary, FieldMap fields): The
length of "sohOffset" is not checked. This
will bring about full range of the message
received as Message string out of range.

For all the field, if it is dataField, its
length must be calculated by the former
Field(Except for Tag 89/93). Because the
data may contain a SOH.
For example, field 355 is dataField. Its
length is in Field 354.
We must check the offset of the
dataField is shorter than length of the
message, and the offset's next char is
SOH.

Add this code into
Message.extractField():

//Judge if sohOffset's next char is '\001'.
if(messageData.indexOf('\001',
sohOffset) != sohOffset)
throw new InvalidMessage("Wrong
length of data field.");
//Judge if sohOffset is shorter than fields.
if(sohOffset > messageData.length())
throw new InvalidMessage("Wrong




                                               916 of 1116
Windows XP SP2 (Spanish), Java JDK   Method SocketAcceptor.stop() does not
1.6                                  unblock method SocketAcceptor.block().
                                     As far as I can tell, the reason is that
                                     stop() does not call
                                     eventHandlingStrategy.stopHandlingMes
                                     sages(), so private variable "isStopped"
                                     continues "false", and
                                     eventHandlingStrategy.block() stays
                                     blocked.

                                     By contrast, SocketInitiator.stop() calls
                                     eventHandlingStrategy.stopHandlingMes
                                     sages(), and everything works OK.




                                                                                 917 of 1116
Linux   I am trying to set LogoutTimeout=10 in
        my quickfixj conf file.

        I have tried this in both the DEFAULT
        and SESSION sections, but it doesn't
        seem to be working.

        I still get a timeout after about 4 seconds
        (even though default is 2)

        <20071206-17:10:03, FIX.4.2:5J0004N-
        >XXXX, outgoing>
        (8=FIX.4.29=10035=034=249=XXXXXX
        X52=20071206-
        17:10:03.58356=XXXX50=XXXX57=G11
        2=1196960966326142=XXXX10=116)
        <20071206-17:10:15, FIX.4.2:5J0004N-
        >XXXX, event> (Initiated logout request)
        <20071206-17:10:15, FIX.4.2:5J0004N-
        >XXXX, outgoing>
        (8=FIX.4.29=10035=534=349=5J0004N5
        2=20071206-
        17:10:15.60756=XXXX50=XXXX57=G58
        =user
        requested142=OptionsCity10=084)
        <20071206-17:10:18, FIX.4.2:5J0004N-
        >CME, event> (Timed out waiting for
        logout response)
        <20071206-17:10:18, FIX.4.2:5J0004N-




                                                      918 of 1116
Unix / Windows   Currently, when using a DataDictionary,
                 Quickifx only allows preventing validation
                 of user defined fields in an incoming
                 message for fields with tags greater than
                 or equals 5000, by setting
                 ValidateUserDefinedFields property to N.

                 It would be nice to have a way to be able
                 to prevent Quickfix from validating any
                 user defined fields (not defined in the
                 DataDictionary for the Message Type) in
                 the incoming message.




                 Add support for subID and locationID.
                 This is mostly backward compatible, but
                 will change the database schemas.




                                                              919 of 1116
The order of fromString() is
parseHeader(),parseBody(dd),parseTrail
er(dd).
Problem 1:
When extracting header, if a
body/trailer's field appears in header, the
field will be pushed to body and the
extraction end up. This field will be
considered
as the first field of the body. This will
cause Other fields followed dropped.

Problem 2:
When extracting body, if a trailer's field
appers in it, it's the same as problem 1.

Problem 3:
When extracting body, if a header's field
appers in it, it will be set back into the
header. In this case, the header's field
could be set in the body which cannot be
validated.
e.g. This message can be received.
8=IMIX.1.09=15335=D11=00034=84049
=ICBC50=operator00152=20071207-
10:06:38.50556=XXX11=12344=148=as
d54=155=WAKEN354=7355=12\001493
=711=99989=memory10=XXX




                                              920 of 1116
                 I am not sure this is part of 1.3 but I don't
                 think so.

                 It would be nice if the FileStore class
                 uses commons-logging, log4j or slf4j for
                 outputing the message log to a file. This
                 way we could manage the log files the
                 same way we manage our application
                 logs. For example, it would be interesting
                 in a production environment to be able to
                 use a DailyRollingFileAppender to
                 prevent the file from growing too much.
                 We would also benefit from all formatting
                 options such as timestamps in the
                 platform timezone that are easier to read
                 than the time in the header of the
                 message (which may be in a different
                 timezone depending on the other party).




all situations   in DefaultSessionFactory.java:
                 When it reads "logoutTimeout"
                 parameter from sessionSettings, it
                 actually reads "LogonTimeout". It's a
                 terrible small bug.

                 code:
                 int logoutTimeout = getSetting(settings,
                 sessionID,
                 Session.SETTING_LOGON_TIMEOUT,
                 2);

                 should change as :
                 int logoutTimeout = getSetting(settings,
                 sessionID,
                 Session.SETTING_LOGOUT_TIMEOUT,
                 2);


                                                                 921 of 1116
This issue represents a portion of the
linked issue. This issue will be included
in 1.3.1, but the remaining functionality
described in the linked issue will be
implemented in a later release. See the
linked issue for the SVN commits (they
were committed before splitting the
issue).
FIXMessageEncoder#encode() may
throws protocol handler exception:
java.nio.BufferOverflowException, if
message contains Chinese characters.

we use "UTF-8" as default charset
instead of "ISO-8859-1". So
charsetEncoding = "UTF-8".

FIXMessageEncoder#encode() :
ByteBuffer buffer =
ByteBuffer.allocate(fixMessageString.len
gth());
try {
buffer.put(fixMessageString.getBytes(ch
arsetEncoding));
} catch (UnsupportedEncodingException
e) {
throw new ProtocolCodecException(e);
}

if message contains Chinese characters,
fixMessageString.length() will not equal
to
fixMessageString.getBytes(charsetEncod
ing).length. Because A Chinese
character will use "three" Bytes in "UTF-
8". But in String, it's length is still "1".




                                               922 of 1116
There is a misspelling in the value
assigned for
SETTING_LOG_HEARTBEATS constant
field in FileLogFactory.java

It is assigned a constant value of
"FileLogHeatbeats" when it should be
"FileLogHeartbeats". It is causing the
documented configuration setting to be
ignored.
If there is a checksum error an error is
logged, but it does not include the
problem section of stream. This would
useful in determining if it was a garble, a
problem with the counterparty's software
or whatever.

A patch we've tried is to add the following
snippet to
FIXMessageDecoder.handleError(ByteB
uffer, int, String, boolean), right before
the "if(disconnect))":

int mark = buffer.position();
try {
StringBuilder sb = new
StringBuilder(text);
sb.append("\nBuffer debug info:
").append(getBufferDebugInfo(buffer));
buffer.position(0);
sb.append("\nBuffer contents: ");
try {
final byte[] array = new
byte[buffer.limit()];
for(int i = 0; i < array.length; ++i)
array[i] = buffer.get();
sb.append(new String(array, "ISO-8859-
1"));
} catch (Exception e) {

                                              923 of 1116
any   Currently the only way to send binary
      data over FIX is to get the binary data
      into a String and then call setString()
      method on the message object passing
      the string variable as a parameter. Since
      putting binary data in strings could be
      error prone it would be better if there was
      a method (somethine like setBytes(byte[]
      b)) to directly set a byte array into a
      message field.

All   In the {{quickfixj.Session.java}} class we
      log that a message is sent even if the
      {{Responder}} for that Session is null:

      {noformat}
      1770 private boolean send(String
      messageString) {
      1771
      getLog().onOutgoing(messageString);
      1772 synchronized (responderSync) {
      1773 if (!hasResponder()) {
      1774 getLog().onEvent("No responder,
      not sending message");
      1775 return false;
      1776 }
      1777 return
      getResponder().send(messageString);
      1778 }
      1779 }
      {noformat}

      as you can see in line 1771, we log the
      message as being sent, but we still
      check that the Resonder can be null and
      the message may eventually not be sent
      out




                                                    924 of 1116
WinXP x64   Case 8_OnlyAminMessages.def faild.

            Suggestion for solution in Session.java:

            private void
            nextResendRequest(Message
            resendRequest) throws IOException,
            RejectLogon,
            FieldNotFound, IncorrectDataFormat,
            IncorrectTagValue,
            UnsupportedMessageType,
            InvalidMessage {
            if (!verify(resendRequest, false, false)) {
            return;
            }

            int beginSeqNo =
            resendRequest.getInt(BeginSeqNo.FIEL
            D);
            int endSeqNo =
            resendRequest.getInt(EndSeqNo.FIELD)
            ;

            getLog().onEvent("Received
            ResendRequest FROM: " + beginSeqNo
            + " TO: " + endSeqNo);

            String beginString =
            sessionID.getBeginString();




                                                          925 of 1116
If "\001" is set in the string field by users,
it can't be validated before sending. The
field is considered as user expected. But
it could be validated when received.
There are three cases:

(1)Error incorrect format when Agent
receives.
e.g. newOrderSingle.set(new
Symbol("\001WAKEN"));
8=FIX.4.4_9=142_35=D_34=346_49=IC
BC_50=operator001_52=20071128-
03:03:37.140_56=XXX_212=346_11=12
3_38=1_40=2_44=1_54=1_55=_WAKEN
_60=20071128-11:03:37.125_10=XXX_
Agent: [ERROR]
quickfix.mina.acceptor.AcceptorIoHandle
r - Invalid message: bad tag format: For
input string: "WAKEN_60"

e.g. newOrderSingle.set(new
Symbol("WAK\001EN"));
8=FIX.4.4_9=142_35=D_34=329_49=IC
BC_50=operator001_52=20071128-
03:00:50.875_56=XXX_212=329_11=12
3_38=1_40=2_44=1_54=1_55=WAK_EN
_60=20071128-11:00:50.875_10=XXX_
Agent: [ERROR]
quickfix.mina.acceptor.AcceptorIoHandle




                                                 926 of 1116
      If there are repeating groups or fields in
      a group, they will not be verified when
      received.

      1. When verify the field in a fieldMap,
      fields in groups must be vevified.
      DataDictionary.iterate(FieldMap map,
      String msgType) is the method to verify
      fields. It could be invoked in recursion.

      Add this into DataDictionary:
      // Check the fields and groups in groups.
      if (isGroup(msgType, field.getField())) {
      checkGroupCount(field, map, msgType);
      List groupMembers =
      map.getGroups(field.getField());
      Group originalGroup = (Group)
      groupMembers.get(0);

      for (int i = 0; i < groupMembers.size();
      i++) {
      originalGroup = (Group)
      groupMembers.get(i);

      GroupInfo rg = getGroup(msgType,
      field.getField());
      DataDictionary group_dataDictionary =
      rg.getDataDictionary();
      group_dataDictionary.hasVersion =
any   If there was a method to retrieve the data
      type of a given field it would be more
      convenient.




                                                   927 of 1116
JDK 1.6, Windows, Java   Using a quickfix initiator, logging on to
                         another FIX gateway (for the first time),
                         where the logon is rejected for some
                         reason, while the target gateway sends a
                         logout message with 58=The Reason,
                         this is not passed to the fromAdmin
                         method. The connection is simply
                         dropped without any way for the client
                         application to display the reason.

                         While the onLogout event is called, this
                         of course does not contain the message
                         and therefore no reason can be
                         extracted. Only looking at the fix
                         message logs and examining the fix
                         message can one tell why the logon was
                         rejected.

                         If a session is previously established,
                         and the target gateway sends a logout
                         message, in this case the message is
                         received on the fromAdmin and the client
                         can display the reason.




                                                                     928 of 1116
Windows XP, Eclipse RCP application   We have two FIX servers living on the
                                      same remote machine (however, this test
                                      will work if you have two different
                                      machines on different IP's as well). One
                                      is on listening port 8811, the other is on
                                      8911. Assuming I have no files in my
                                      FileStorePath and I connect with our
                                      client to 8811 and do things everything is
                                      fine and works as it should. After a while,
                                      I decide that now I want to connect to
                                      8911 to test that machine, so I change
                                      my quickfix configuration file and update
                                      the port number to reflect this and then I
                                      restart the client and connect. However,
                                      when I then try to log on to the server I
                                      now get the following error and the
                                      server disconnects me:

                                      MsgSeqNum too low, expecting 173 but
                                      received 32

                                      Basically, the "temp" files do not reflect
                                      either the server or the port in them, so
                                      as it's the same files being used but now
                                      a completely different connection, it
                                      becomes rather confused and I can no
                                      longer connect until I remove the files in
                                      the FileStorePath directory and connect
                                      again.




                                                                                    929 of 1116
ant -Dgenerator.decimal=true   When you use a "BigDecimal" build of
                               QuickFIX/J, it should preserve the scale
                               of the number inside a message. For
                               example, if I set the Price field to be
                               "10.3000" I should get that same value
                               (with the trailing zeroes) back from
                               fieldMap.getDecimal(), and similar calls.
                               Included is a simple test.

                               {code}
                               public void testQuickFIXAssumptions()
                               throws FieldNotFound, InvalidMessage{
                               BigDecimal originalPrice = new
                               BigDecimal("10.3000");
                               assertEquals(4, originalPrice.scale());
                               Message message = new Message();
                               message.setField(new Price(new
                               BigDecimal("10.3000")));
                               BigDecimal extractedPrice =
                               message.getDecimal(Price.FIELD);
                               assertEquals(4, extractedPrice.scale());
                               assertEquals(new
                               BigDecimal("10.3000"), extractedPrice);
                               String newOrderString =
                               message.toString();
                               Message rehydratedMessage = new
                               Message(newOrderString);
                               BigDecimal rehydratedPrice =
                               rehydratedMessage.getDecimal(Price.FI




                                                                           930 of 1116
Everywhere   The problem is in the function with
             prototype

             public boolean set(int sequence, String
             message)

             The mistaken code says:

             update.setInt(offset++, sequence);
             update.setString(offset, message);

             But ought to be:

             update.setString(offset++, message);
             update.setInt(offset, sequence);

             instead.

             If we see the place where
             INSERT_UPDATE_MESSAGE is defined

             INSERT_UPDATE_MESSAGE =
             "UPDATE " + messageTableName + "
             SET message=? " + "WHERE "
             + idWhereClause + " and
             msgseqnum=?";

             it is clear that the message ought to be
             stored before the sequence number.




                                                        931 of 1116
Solaris 10, jdk 1.5.0_14, proxool-   There is a bug in the proxool library. The
0.9.0RC3.jar                         default parameter defined in the
                                     documentation are not set. Therefore
                                     parameter like
                                     MaximumConnectionCount are not set.
                                     JdbcUtil from QuickFixJ sets this
                                     parameter. But the parameter
                                     SimultaneousBuildThrottle is not set and
                                     therfore 0. This leads to SQLExcption
                                     under high load. I changed
                                     JdbcUtil.getDataSource() with the line

                                     ds.setSimultaneousBuildThrottle(10);

                                     after the line

                                     ds.setMaximumConnectionCount(10);

                                     Now I do not get SQLException
                                     anymore.


                                     Log-Snipplet:

                                     00:59:52,795 [QFJ Message Processor]
                                     DEBUG fix.MessageConverter - Field(s)
                                     = SenderSubID SenderLocationID
                                     TargetSubID TargetLocationID
                                     OnBehalfOfCompID Delive




                                                                                  932 of 1116
The QuickFIX/J User Manual says that
the default value of the
_PersistMessages_ parameter is "N"
(false). But in the
_DefaultSessionFactory_ its default
value is true (line 150):
{code}
boolean persistMessages =
getSetting(settings, sessionID,
Session.SETTING_PERSIST_MESSAG
ES, true);
{code}

If this parameter is set to true, then there
is a memory leak in the _FileStore_
class. The size of _HashMap_
_messageIndex_ is growing all the time.
The _reset()_ method does not clear this
map.




                                               933 of 1116
Red Hat SE 5 Linux   The .messages log file does not show
                     the endline between two distinct FIX
                     messages. You'll notice that the field
                     delimiter does show up after tag 10 in the
                     first message, but then the second
                     message is appended onto it without a
                     new line being started.

                     20080626-15:42:19.969:
                     8=FIX.4.2☺9=208☺35=G☺34=429600
                     ☺49=SENDER☺52=20080626-
                     15:42:19.969☺56=TARGET☺1
                     1=428918☺21=1☺38=5000☺40=2☺41
                     =428899☺44=67.26☺54=1☺55=VBK☺
                     60=20080
                     626-
                     15:42:19.969☺100=ARCA☺111=1000
                     ☺115=SENDER☺10=251☺20080626-
                     15:42:19.969:
                     8=FIX.4.2☺9=238☺35=8☺49
                     =SENDER☺56=TARGET☺34=432761
                     ☺52=20080626-
                     15:42:19☺128=TARGET☺20=0☺17=76
                     ☺38=2700☺40=2☺44=26.7
                     5☺54=1☺55=EWA☺37=58☺32=200☺
                     31=26.74☺14=1300☺6=26.74☺39=1☺
                     151=1400☺60=20080626-
                     15:42:19☺150=
                     1☺11=687☺59=0☺10=127☺




                                                                  934 of 1116
When trying to retrieve a negative
timezone, I get an exception
quickfix.FieldMap.newIncorrectDataExce
ption(FieldMap.java:410).

It seems that it is caused by the following
code in IntConverter.java, it expects only
digits.
public static int convert(String value)
throws FieldConvertError {
try {
for (int i = 0; i < value.length(); i++) {
if (!Character.isDigit(value.charAt(i))) {
throw new NumberFormatException();
}
return Integer.parseInt(value);
...

The code I am using is as follows:

TimezoneOffset timezoneOffset = new
TimezoneOffset();
try {
noMDEntries.get(timezoneOffset);
} catch(FieldNotFound e) {
//field is optional
}




                                              935 of 1116
WindowsXP with Java 1.6   Here is the excerpt from our application:

                          try {
                          ...
                          Session.sendToTarget(message,
                          sessionID);
                          ...
                          }
                          catch (SessionNotFound e) {
                          ...
                          }
                          catch (XXXException e) {
                          ...
                          }

                          the sessionID was set to null due to
                          some reason and we got a
                          NullPointerException

                          java.lang.NullPointerException
                          at
                          quickfix.Message.setSessionID(Message
                          .java:423)
                          at
                          quickfix.Session.sendToTarget(Session.j
                          ava:454)

                          But in the sendToTaget method:




                                                                      936 of 1116
              Given the following Session Settings and
              system property fix.home=C:\fix\home.
              The value resolves to C:fixhome/logs
              instead of the expected C:\fix\home/logs.

              [DEFAULT]
              ...
              FileLogPath=${fix.home}/logs
              ...

              To fix this add the following line to the
              SessionSettings.java file (after line 563):


              if (variableValue != null) {
              variableValue =
              variableValue.replaceAll("\\\\", "\\\\\\\\");
              //this is the new line
              m.appendReplacement(buffer,
              variableValue);
              }


OSX 10.4.11   The switch statement in the
Java 1.5      FileUtil.open(...) does not break after
              matching CONTEXT_RESOURCE. This
              causes files to not open if they are found
              by CONTEXT_RESOURCE and not by
              CLASSLOADER_RESOURCE. This can
              also return the wrong file if each
              resource finds a different version of the
              file.




                                                              937 of 1116
The problem: When a response to
TestRequest is received too quickly, a
false positive heartbeat timeout happens
and causes disconnection.

In method quickfix.Session.next() there
exists the following code:

if (state.isTestRequestNeeded()) {
generateTestRequest("TEST");
state.incrementTestRequestCounter();
getLog().onEvent("Sent test request
TEST");
stateListener.onMissedHeartBeat();
} else if (state.isHeartBeatNeeded()) {
generateHeartbeat();
}

In this code,
generateTestRequest("TEST");
sends the Test Request, a response to
which can be received before line
state.incrementTestRequestCounter();
is executed.


Whenever this condition happens, there
is always a false disconnect due to
missed heartbeats (assuming the server




                                           938 of 1116
Windows XP      When connecting and disconnecting to a
Java 1.6.0_07   server and the sequence numbers get
                out of sync the
                SingleThreadedEventHandlingStrategy
                tries to log an event after the initiator has
                closed all of its sessions. This causes the
                quickfix.LogUtil.logThrowable(LogUtil.jav
                a:54) to throw a NPE as there is no
                session to get the log from.

                This is an intermittent bug as there are a
                number of threads involved (QFJ Timer,
                SocketConnectorIoProcessor-6.0, and
                QFJ Message Processor). One iteration
                logs the following message:
                quickfix.SessionException Logon state is
                not valid for message (MsgType=5)
                another has the NPE and yet another
                has not issues at all.

                The full stack trace is:
                Exception in thread "QFJ Message
                Processor"
                java.lang.NullPointerException
                at
                quickfix.LogUtil.logThrowable(LogUtil.jav
                a:54)
                at
                quickfix.mina.SingleThreadedEventHandl




                                                                939 of 1116
Windows XP      IoSessionResponder.send does not
Java 1.6.0_07   return true when message is sent.
                isWritten does not wait to see if the data
                has been written. Presumably the data is
                being written in another thread (since a
                Future is returned) from ioSession.write.
                If the thread doing the writing has not
                had time to execute the isWritten will
                return false even though the message
                will be written after the isWritten has
                been called. The writing needs to be
                performed in the same thread as the call,
                or the current thread needs to wait for
                the thread doing the writing to return.

                The method in question is:
                return ioSession.write(data).isWritten();

                When running this through the debugger
                the behavior is most likely correct (as
                can be the case with multi-threaded
                applications), but if running with just
                logging send method will return false
                even though the record is sent.




                                                             940 of 1116
When message grammar validation fails
(Invalid tag number, or similar errors) on
any message before Logon messages
are exchanged (including Logon
message itself), Quickfix/J attempts to
send Reject message which causes
"Tried to send a reject while not logged
on" SessionException

quickfix.SessionException: Tried to send
a reject while not logged on: Invalid tag
number (field 9001)
at
quickfix.Session.generateReject(Session
.java:1050)
at
quickfix.Session.next(Session.java:733)
at
quickfix.mina.SingleThreadedEventHandl
ingStrategy$SessionMessageEvent.proc
essMessage(SingleThreadedEventHandl
ingStrategy.java:106)
at
quickfix.mina.SingleThreadedEventHandl
ingStrategy.block(SingleThreadedEventH
andlingStrategy.java:70)
at
quickfix.mina.SingleThreadedEventHandl
ingStrategy$1.run(SingleThreadedEvent




                                             941 of 1116
2003 Hi Steve, it's been quite a while.
     We are experiencing the bug detailed
     below.
     Do you have a specific patch for this for
     1.2.1, or is 1.3.0 stable enough
     for production.

     This could be related to a open bug
     about the timer events not being
     processed in an acceptor while it's
     disconnected (QFJ-218). This would
     cause the logout with the old sequence
     number to be sent the first time
     someone connects. Subsequent
     connections should be ok and should use
     the
     new session's sequence numbers. If we
     can complete the 1.3 release soon,
     I'll have the fix in there. Otherwise, I'll
     patch 1.2.1 and release a
     new version of that branch.

     A temporary workaround is to call reset
     manually on the message
     store before the new session start time.

     Regards,

     Steve




                                                   942 of 1116
Windows XP      The SocketInitator has a start and stop
Java 1.6.0_07   method that imply that it can be
                started/stopped/restarted. However, you
                can only start the Initiator once as the
                fact that it has been started is tracked by
                whether or not it has been initialized.

                AbstractSocketInitiator.initiateSessions
                initializes the sessions and starts the
                sessionTimers.
                SocketInitializer.initialize controls the flag
                of whether the initiator is initialized or not.
                An initialized initializer implies it has been
                started.
                SocketInitializer.stop stops the
                sessionTimer and does not reset the
                initialized flag (which it shouldn't)

                There are two different states that need
                to be tracked of an initializer.
                1. whether or not it has been initialized
                (already tracked)
                2. whether or not it has been started
                (implied by being initialized and needs to
                have its own flag).

                As it stands, the only way to restart a
                SocketInitializer is to create an new
                instance and start it.




                                                                  943 of 1116
Java 1.6.0_07   When sessions are unregistered they do
Windows XP      not do any clean up of any resources
                that they may have opened. Once a
                session is unregistered by the static
                Session.unregisterSessions the session
                is basically dead and can no-longer be
                used. The unregisterSession method
                should check if the session's store is a
                FileStore and call closeFiles before/after
                removing from the session cache.

                This is releated to QFJ-224 and QFJ-
                287.




                To faciliate user to monitor and manage
                FIX messages, I think we should add
                more columns into those 2 tables:

                1. time (missing in messages_log)
                2. message type
                3. msgseqnum (missing in
                messages_log)
                4. id (missing in messages)
                5. isInbound (Y/N. Right now,
                sendercompid is the company and
                targetcompid is the counterparty. this is
                confusing from FIX message point of
                view and it is difficult to differentiate the
                direction)

                Also I suggest to make column naming
                of these 2 tables be consistent to help
                developer to reuse code.




                                                                944 of 1116
             it seems to be the rejected message is
             stored only in messages_log, but not
             message table. This can cause
             confusion and inconvenience and I
             wonder why it is this way.
             thanks.
Windows XP   Send too many logout messages when
             continuely received messages which has
             BadTime or doBadCompID.
             Session.java
             private void doBadCompID(Message
             msg) throws IOException, FieldNotFound
             {
             generateReject(msg,
             SessionRejectReason.COMPID_PROBL
             EM, 0);
             generateLogout("Bad CompID");
             }

             private void doBadTime(Message msg)
             throws IOException, FieldNotFound {
             generateReject(msg,
             SessionRejectReason.SENDINGTIME_A
             CCURACY_PROBLEM, 0);
             generateLogout();
             }


             Before Send a logout message, should
             check the session statues.
             isLogoutSent()

             private void doBadCompID(Message
             msg) throws IOException, FieldNotFound
             {




                                                      945 of 1116
                                       Our counterparty sent us a FIX msg with
                                       '865='. Our QFJ rejected
                                       (SessionRejectReason(373)=6(INCORR
                                       ECT_DATA_FORMAT_FOR_VALUE)),
                                       even though we have set
                                       ValidateFieldsHaveValues=N. I wonder if
                                       it does not work for enum fields?

All environments. Clients using Java   Hi,
Sample Code provided by QuickFIX
                                       We work on a number of FIX
                                       implementation where users connect to
                                       us using the QuickFIX FIX engine. Ours
                                       us a Cameron Engine. We offer 2
                                       sessions - an Order Session and a MKD
                                       Session for each user.

                                       We have been observing issues lately
                                       with Logon sessions with 141=Y at initial
                                       startup. There are 2 different issues we
                                       have observed that we need to attend
                                       urgently. We have worked numerous
                                       possibilities including modifying
                                       Configuration settings, but to no avail.
                                       Also, it is not viable for us to request all
                                       QuickFIX users to modify the source.

                                       1) Client sends Logon with 141=Y with
                                       MsgSeqNum=1. Cameron replies with
                                       Logon Acnowledgment but without
                                       141=Y and SeqNum=1. QuickFIX is
                                       unable to handle the Logon
                                       Acknowledgment with missing 141 Tag.
                                       QuickFIX assumes that the initial Logon
                                       was not acknowledged and sends a
                                       second Logon with SeqNum 2. Cameron
                                       sees a duplicate Logon request (whilst


                                                                                      946 of 1116
                SocketInitiator.stop(false) doesn't check
                sessions state. It always waits session
                logoutTimeout

                It seems a bug in
                SessionConnection.waitForLogout()

All platforms   When connected late in the day to the
                counterparty's fix engine, QuickFIX/J has
                trouble dealing with the large message
                backlog. An analysis of the garbage
                collector log reveals a large amount of
                objects in the tenured generation that
                stay alive and therefore cannot be
                collected.

                This is owing to the fact that the linked
                blocking queue in the following sources:

                SingleThreadedEventHandlingStrategy.ja
                va
                ThreadPerSessionEventHandlingStrateg
                y.java

                has the default capacity of
                Integer.MAX_VALUE. The message
                backlog is quickly loaded onto the queue
                and stays there until the client software is
                able to process it.

                Proposed fix:

                Define the message queue in the above
                sources with a reasonable capacity,
                ideally configurable via session settings.




                                                               947 of 1116
See
http://sourceforge.net/mailarchive/forum.
php?thread_name=ce06b732090110175
4l6050baf0j888ae610bdd7bf04%40mail.
gmail.com&forum_name=quickfixj-users

I am using the JmxExporter class to
expose QFJ to JMX. If I attempt to
shutdown and restart my QFJ instance
(my stopping then restarting my
Initiator within the same process) then I
get the following exception
because QFJ tries to export to JMX
again.

... ... ERROR
org.quickfixj.jmx.mbean.connector.Conn
ectorJmxExporter -
Failed to export connector MBean
javax.management.InstanceAlreadyExist
sException:
org.quickfixj:type=Session,beginString=F
IX.4.2,xxxxxxxx
at
com.sun.jmx.mbeanserver.Repository.ad
dMBean(Repository.java:453)
at
com.sun.jmx.interceptor.DefaultMBeanS
erverInterceptor.internal_addObject(Defa




                                            948 of 1116
If Logon message is sent with FIXT 1.1
BeginString then application message
(with FIX 5.0 BeginString) will be
dropped and the server will send Logout
to the client (because incorrect
BeginString).

Possible solution:
Add "!sessionID.isFIXT()" condition to
Session.java, near line 749 of svn rev.
899.

public void next(Message message)
throws FieldNotFound, RejectLogon,
IncorrectDataFormat,
IncorrectTagValue,
UnsupportedMessageType, IOException,
InvalidMessage {
...
if (!sessionID.isFIXT() &&
!beginString.equals(sessionID.getBeginS
tring())) {
throw new UnsupportedVersion();
}
...
}




                                          949 of 1116
Add the ability of monitoring the
underlying messaging queue size, so
that any slow consuming can be
detected.
In
org.quickfixj.jmx.mbean.connector.Conn
ectorAdminMBean:

/**
* The size of the underlying event queue
*
* @return size of the queue; if this
counters grows, the application does not
consume FIX message quick enough
*/
int getQueueSize();




                                           950 of 1116
In some circumstances fields may be
omitted from re-sent messages.

We tracked this down to the following
line in Session.parseMessage(String):
msg.fromString(messageData,
dataDictionary, false);
In our case there was a repeating group
used in outbound messages only that
was not present in the data dictionary.
Those fields silently disappeared.

So, a workaround is to edit the data
dictionary. But given the silent
misbehaviour, I would rate this a bug.

Probably could fix this by creating a
subclass of Message that treats the body
as an immutable string --> overrides to
parseBody, calculateString,
calculateLength and calculateTotal.
Hopefully there is a more elegant
solution.




                                           951 of 1116
Hello all,

In order to start our FIX connector, we
have a "start" call from our middleware
(there could be more than one FIX
connectors started at different times on
the same JVM). On this call, a logger is
paased to the connector and all the log
of the FIX connector should be dumped
to this logger. The log of the QuickfixJ
session is easily routed. However, the
log messages from Mina and of the
QuickfixJ initiators are more difficult to
route. We use InheritableThreadLocal to
pass the logger to all threads started by
our FIX connector.
We encountered a problem due to the
fact that the QuickfixJ SessionConnector
uses a static executor service for
executing SessionTimerTask tasks.
Could you please change this to non-
static?
For more details, please refer to thread:
http://sourceforge.net/mailarchive/messa
ge.php?msg_name=1714.65.220.39.123.
1208198497.squirrel%40webmail3.hrnoc
.net

We expect our application to go in




                                             952 of 1116
The settings of the "StartDay" and
"EndDay" day names must conform to
the locale of the running platform, that
make the installation of a QuickFIXJ
application difficult when customers have
several platforms languages.

It could be very interesting to always set
the configuration in US day names
whatever the locale setting is; and keep
the ability to use local day names
anyway.

The quickfix.DayConverter helper class
may try to convert day names using
Locale.getDefault() then using Locale.US
in case of failure, then throw the
ConfigError as it does now.




                                             953 of 1116
Solaris 8-10, Java 1.6.0_11   Our application started generating the
                              following error after upgrading from QFJ
                              1.3.1 to 1.3.3

                              27 Mar 2009 15:24:04,115:
                              FIX.4.4:MyComp->TheirComp: Error
                              during message processing
                              java.lang.NullPointerException
                              at
                              quickfix.DataDictionary.iterate(DataDictio
                              nary.java:609)
                              at
                              quickfix.DataDictionary.validate(DataDicti
                              onary.java:579)
                              at
                              quickfix.DataDictionary.validate(DataDicti
                              onary.java:545)
                              at
                              quickfix.Session.next(Session.java:716)
                              at
                              quickfix.mina.ThreadPerSessionEventHa
                              ndlingStrategy$MessageDispatchingThre
                              ad.run(ThreadPerSessionEventHandling
                              Strategy.java:75)

                              I have compared the DataDictionary.java
                              source code and discovered the following
                              snippet has been added to the iterate()...




                                                                           954 of 1116
See
http://www.quickfixj.org/jira/browse/QFJ-
326



I'd like this to be reopened as threads still
leak.
1. in
ThreadPerSessionEventHandlingStrateg
y.stopDispatcherThreads the
dispatchers.clear() is done before
looping through the collection and so
threads' stopDispatcher is never called
2.
ThreadPerSessionEventHandlingStrateg
y.MessageDispatchingThread.run never
terminates as this method repeatedly
calls getNextMessage in a loop and
getNextMessage calls messages.take
which blocks indefinitely
3. also, stopDispatcherThreads should
wait for threads to terminate before it
returns so that everything gets cleaned
up properly and in order

I've got a patch which fixes these by:
1. reordering statements in
stopDispatcherThreads




                                                955 of 1116
Java 1.5.0_12 on Linux   This issue is probably related to QFJ-
                         379:
                         http://www.quickfixj.org/jira/browse/QFJ-
                         379

                         We noticed that a stack overflow can
                         occur when QuickFIX is processing a
                         very large number of queued messages.

                         From the event log file (edited to make
                         the situation clearer):

                         MsgSeqNum too high, expecting 1430
                         but received 4937
                         MsgSeqNum too high, expecting 1430
                         but received 4938
                         Received SequenceReset FROM: 1430
                         TO: 1939

                         [...]

                         Processing queued message: 4030,
                         pending: [1432, 1433, 1434, ..., 1939,
                         4031, 4032, ..., 4937, 4938]
                         null
                         java.lang.StackOverflowError
                         at java.nio.Buffer.<init>(Buffer.java:176)
                         at
                         java.nio.ByteBuffer.<init>(ByteBuffer.java
                         Logon try interval can not be set. Add a
                         "LogonInterval" setting and allow
                         complex configuration as proposed in
                         QFJ-419 for ReconnectInterval.
                         To fully support custom FIX dictionary,
                         we should take care of msgcat to know if
                         the message is an admin message or
                         application message and not use
                         hardcoded values.


                                                                      956 of 1116
Logon / logout message can be accepted
even if acceptor and initiator out of
sequence.
Some other message has also to be
accepted even if out of sequence. e.g.,
with Currenex, we get a
TradingSessionStatus just after the logon
response, even if we detected that the
logon response was out of sequence. In
this case, it will be ignored, causing the
application not receiving mandatory
messages.




                                             957 of 1116
The existing implementation of
DynamicAcceptorSessionProvider does
not correctly handle the case where a
client disconnects due to network failure -
the DynamicAcceptorSessionProvider
never detects the disconnect, and the
connection appears to still be "active"
and the Session is never removed.
As a result, when the client subsequently
tries to reconnect, QFJ thnks that is
already connected and does not allow for
the new connection.

The DynamicAcceptorSessionProvider is
setup to accept all incoming connections
(based on a specified template).
Currently, a new session is created and
added to the sessions list, but if you are
running a
SingleThreadedEventHandlingStrategy
the new session is never added to the list
of sessions for the SessionConnector.
As a result the main
SessionConnector.SessionTimerTask
loop that goes through all the known
connections and calls Session.next() on
them (which tries to send TestRequest to
those it hasn't heard from in a while) is
never executed for the dynamically-




                                              958 of 1116
Windows Java 1.6   Because Session is using a String literal
                   as a lock, the scope of this lock is not per
                   Session instance

                   private String responderSync =
                   "SessionResponderSync";
                   // @GuardedBy(responderSync)
                   private Responder responder;

                   As well as reducing concurrency it
                   caused my app to deadlock, because the
                   vm will intern "SessionResponderSync". I
                   suggest changing this to

                   private String responderSync = new
                   String("SessionResponderSync");

                   My deadlock was probably caused
                   because I was trying a combination of

                   1) synchronous writes on both the
                   acceptor and initiator
                   2) both the acceptor and initiator in the
                   same vm process
                   3) switching out the
                   LinkedBlockingQueue in the
                   SingleThreadedEventHandlingStrategy
                   with a bounded ArrayBlockingQueue




                                                                  959 of 1116
The FieldNotFound exception contains a
useful exception description, which can
be fetched with e.getMessage():

{code}
public FieldNotFound(int field) {
super("Field ["+field+"] was not found in
message.");
this.field = field;
}
{code}

but other FIX exceptions as
IncorrectTagValue or NoTagValue etc.
lacks these description text.
This is not consistent with the second
constructor using a String description
text.

Provide useful description text for
IncorrectTagValue, NoTagValue and
possibly other FIX exceptions.




                                            960 of 1116
Hi,

The appendReplacement methof of
Matcher removes the backslash required
under Windows to create the directory
tree

private Pattern variablePattern =
Pattern.compile("\\$\\{(.+?)}");

private String interpolate(String value) {

//"value"=
"${servicemix.home}/data/log/quickfix/file
s/server"

if (value == null || value.indexOf('$') == -
1) {
return value;
}
StringBuffer buffer = new StringBuffer();
Matcher m =
variablePattern.matcher(value);
while (m.find()) {
if (m.start() > 0 && value.charAt(m.start()
- 1) == '\\') {
continue;
}
String variable = m.group(1);
In some cases, the daily or weekly
session reset is not required by the
application.
Add a parameter on the session such as:
NonStopSession=Y




                                               961 of 1116
When a session is disconnected
(Session.disconnect()), we just get a
"<session> disconnected" trace. In some
case, the disconnection is a normal
behavior (e.g. after a logout), in some
other it is not (e.g. socket failure). It is
therefore difficult to troubleshot FIX
connectors with this lack of information.
Add a "reason" string parameter to the
disconnect method and log it.

If the user logged out in a previous
trading session (previous week) and
wants to logon at the next trading
session start, the checkSessionTime()
will reset the session. If the user sends
the logon message immediately after the
socket connection the
checkSessionTime() fails because time
between the socket connection (last
sessiontime check) and the logon
message processing is less than one
second.

We suggested that Session.resetState()
should be set the Session's
lastSessionTimeCheck variable to 0 to
solve this problem.




                                               962 of 1116
The below bug is happening for me for
Quickfix1.4.0 and not 1.3.1

I have set UseDataDictionary=N, but I
see that the messages are still getting
validated

20090612-12:27:27.079: Message 3487
Rejected: Required tag missing:27
20090612-12:27:27.081: Message 3488
Rejected: Required tag missing:27
20090612-12:27:27.083: Message 3489
Rejected: Required tag missing:27

20090612-12:30:39.436: Received:
8=FIX.4.29=013435=634=381349=S023
56=R02352=20090612-
12:30:3923=23_123589038398399155=
QQQQ54=144=3.838=90059=31=18421
67=CS28=N25=H40=210=032
20090612-12:30:39.436: Sending
8=FIX.4.29=10535=334=381349=R0235
2=20090612-
12:30:39.43656=S02345=381358=Requi
red tag
missing371=27372=6373=110=169


and many more such message.




                                          963 of 1116
Windows XP   Dear colleagues.

             My integration component (listener of a
             FIX server) is based on QuickFix/J
             library. Component keeps working
             continuesly for a days; every midnight
             FIX server initiates relogon (or my
             component resores connection after
             failure). On every logon, I request FIX
             server to reset the sequence number.
             That some times (can't provide the
             strong algorythm to reproduce issue)
             causes the issue:

             "MsgSeqNum too low, expecting 10656
             but received 1"

             As I discovered, internal session state
             was not reset before relogon and I tryied
             to logon with old sequence number
             values. As a solution, I overwrote
             toAdmin message where I explicitly reset
             session state before started loggon on
             FIX server.

             Can you kindly provide solution for this
             issue, and give your opinion about
             solution that I currently use.
             Thank you.




                                                         964 of 1116
Windows XP   Hi,


             While trying to parse a message with a
             repeating group on the header
             627 (NoHops) =2
             628 (HopCompID) =_TED02A
             629 (HopSendingTime) =20090701-
             11:45:29.597
             628 (HopCompID) =_GWSURV
             629 (HopSendingTime) =20090701-
             11:50:31.284

             I'm receiving the following error on my
             events log:

             20090701-13:23:56: Error during
             message processing
             java.lang.NullPointerException
             at
             quickfix.DataDictionary.iterate(DataDictio
             nary.java:624)
             at
             quickfix.DataDictionary.validate(DataDicti
             onary.java:589)
             at
             quickfix.Session.next(Session.java:778)
             at
             quickfix.mina.ThreadPerSessionEventHa
             Hi, i am new to FIX and i am using the
             free java API from quickfix, and actually i
             want to establish the login session, what i
             want how to add the username and
             password to the login first message? i
             tried to add it to the config file but still it is
             not working, can you help?




                                                                  965 of 1116
HI Support,

I am inititating market data request
message V and when i receive the reply
message from the counterparty you
engine is sending back a rejection

can you please advise why is the engine
is rejecting the received message?

Sent Message

8=FIX.4.39=18135=V34=949=quote.SW
SPB.dev.SWSPB.com50=SWSPBle52=2
0090911-
20:20:21.28556=demo.client.fxgrid.integr
al.com128=146=155=EUR/USD460=426
2=12263=1264=0265=0267=2269=0269
=110=207

Received Message:
8=FIX.4.39=31135=W34=1149=demo.cli
ent.fxgrid.integral.com52=20090911-
20:20:22.79156=quote.SWSPB.dev.SW
SPB.com57=SWSPBle55=EUR/USD262
=12460=4268=2269=0270=015=EUR27
1=0276=B282=BOAN299=G-9a21e7-
123aac38287-BOAN-
7bb7BID290=0269=1270=015=EUR271=




                                           966 of 1116
Hi Support,

Please find below my code i am using to
subscribe using market data request, the
isse that i want when i create this
message i want tag55 to come after
tag146, as per to integral they want
Tag55 to come after Tag146

quickfix.fix43.MarketDataRequest sub =
new MarketDataRequest(new
MDReqID(reqID),new
SubscriptionRequestType('1'), new
MarketDepth (1));
System.out.println("This is the message
:" + sub.toString());
sub.setField(new
SenderSubID("SWSPBle"));
sub.setField(new Product(4));
sub.setField(new NoRelatedSym(1));

sub.setField(new MDUpdateType(0));
sub.setField(new NoMDEntryTypes(0));
sub.setField(new
quickfix.field.Symbol("EUR/USD"));

the generated message is coming as
below




                                           967 of 1116
java 1.6.0._07    Greetings!
windows
quickfixj 1.4.0   My configuration is as follows:
                  [DEFAULT]
                  UseDataDictionary=N
                  AllowUnknownMsgFields=Y
                  ValidateFieldsOutOfOrder=N
                  ValidateFieldsHaveValues=N
                  ValidateUserDefinedFields=N
                  and others
                  [SESSION1]
                  #nothing out of the ordinary as below
                  [SESSION2]
                  BeginString=FIX.4.2
                  SenderCompID=RBDC
                  TargetCompID=IRDC
                  SocketConnectHost=192.168.42.80
                  SocketConnectPort=15000

                  And yet, all incoming 35=8 messages are
                  being rejected with this error msg
                  Rejected: Tag not defined for this
                  message type.

                  What am I doing wrong?
                  Can we request a simple configuration
                  setting to suppress msgtypes?

                  Thank you
                  applVerIDtoBeginString map in
                  quickfix.MessageUtils does not include

                  '8' = FIX50SP1
                  '9' = FIX50SP2




                                                            968 of 1116
I am tryng to connect to integral and
subscripe to Market data request.

how can i set the tag order as per what i
want as currently tags are being ordered
by the tag number

Integral want the tag orders as below

Tag 146 should come before tag 55, but
when i am using this API tag 55 is
coming before Tag146 which lead a
rejection message from integral can you
help me please, as i have to do the same
for other tags as well on the same
message, as Tag 128 should come
before those tags




                                            969 of 1116
linux   such thread do not exit on
        acceptor.stop()


        stopDispatcherThreads iterates the
        collection after it clear()s it apparently so
        stopDispatcher() is not run on individual
        threads.


        The the run method of
        ThreadPerSessionEventHandlingStrateg
        y checks for the stopped variable and
        exits if set to true.
        However it uses a blocking queue and if
        no messages come that variable is not
        checked so the thread can keep the app
        from exiting.

        In stopDispatcherThreads() we can
        interupt the thread if the queue is empty.
        Alternately instead of messages.take()
        we can use messages.poll()
        with a timeout, but than we need to
        check for null return.




                                                        970 of 1116
The fix I found for this is:
1. Have a boolean flag
useDataDictionary in Session.java.
2. When the session is created in
DefaultSessionFactory this flag is passed
based on session setting.
3. In session.java validate only is
useDataDictionary=true.
ie. Modify function public void
next(Message message) Line 763
change
if (dataDictionaryProvider != null)
to
if (dataDictionaryProvider != null &&
useDataDictionary)




                                            971 of 1116
Ubuntu 9 Server x64   This week I downloaded the QuickFIX/J
                      source code from the trunk and built a
                      version of it to test our new FIX GW.

                      My test program fails when I try to do
                      send a LOGON with
                      ResetSeqNumFlag=Y. This is written to
                      the log;

                      <20091016-08:25:18, FIXT.1.1:ABN-
                      >XTRM, event> (Initiated logon request)
                      <20091016-08:25:30, FIXT.1.1:ABN-
                      >XTRM, incoming>
                      (8=FIXT.1.19=007235=A34=152=200910
                      16-
                      08:25:2649=XTRM56=ABN1128=798=01
                      08=301137=710=135)
                      <20091016-08:25:55, FIXT.1.1:ABN-
                      >XTRM, event> (Received logon
                      request)
                      <20091016-08:25:55, FIXT.1.1:ABN-
                      >XTRM, event> (Disconnecting:
                      Received logon response before sending
                      request)

                      The problem has been located to the
                      following lines of code in
                      /quickfixj/core/src/main/java/quickfix/Ses
                      sion.java (rev 926):
                      The new values for SP1 and SP2 are not
                      represented in class ApplVerID

                      8 = FIX50SP1
                      9 = FIX50SP2


                      Enable to configure the cipherSuites and
                      enabledProtocol on SSL filter


                                                                   972 of 1116
ThreadPerSessionEventHandlingStrateg
y still leaks threads

Hi,
We are using QuickfixJ FIX44 version for
our project. I could able to connect to the
counter party and get the Hearbeat
Messages. However, when the counter
party try to send some trade messages
neither I could capture nor I could log
them.
After couple of days we came to know
that the messages are rejected even
before we capture them.

How do I capture any kind of message
we send to counter party??

Thanks in Advance,
Nagendra.




                                              973 of 1116
n/a   I'd like to create a wrapper
      implementation and subclass of the
      Session class.
      This wrapper is by default stateless,
      delegating behaviour to a true Session
      object.
      This is useful for example to start global
      transactions around the next methods.

      Currently Session has two constructor
      that can only create 'true' Sessions.

      An empty protected constructor may
      suffice.

      In fact, it's not clear why there is a
      SessionFactory interface when actually
      one cannot modify or decorate the
      default Session implementation.




      FieldException is thrown, for example, if
      a tag has no value. However, as it has
      default scope it is not possible to retrieve
      the details of which field caused the
      problem even though FieldException
      includes a publically accessible getField()
      method. Not sure if this is a bug or
      whether there it was intentionally left with
      default scope.




                                                     974 of 1116
                            I have added custom tags to the
                            Instrument component in my data
                            dictionary and it uses them correctly
                            when validating messages containing
                            these custom tags, however they do not
                            appear in the set of fields for the
                            Instrument component but appear in the
                            enclosing group i.e.
                            quickfix.fix44.QuoteRequest.NoRelatedS
                            ym.
                            Not sure if this is a bug but behaviour is
                            not as I would expect.
Windows Xp Service Pack 2   i am using quickfix version 1.3.1.
                            Recently i had an issue that there are a
                            lot of test requests within two mins. For
                            each test request request the server
                            responds with a heartbeat message with
                            correct test request id. Below are the
                            messges.
                            For each test request the difference of
                            time is 10 secs. HeartBeat interval in my
                            settings file is 30 secs.

                            [Nondelimited FIX messages removed,
                            please attach message file or replace
                            delimiters with an ASCII character]




                                                                         975 of 1116
Hi Support,

Please find below my code i am using to
subscribe using market data request, the
isse that i want when i create this
message i want tag55 to come after
tag146, as per to integral they want
Tag55 to come after Tag146

quickfix.fix43.MarketDataRequest sub =
new MarketDataRequest(new
MDReqID(reqID),new
SubscriptionRequestType('1'), new
MarketDepth (1));
System.out.println("This is the message
:" + sub.toString());
sub.setField(new
SenderSubID("SWSPBle"));
sub.setField(new Product(4));
sub.setField(new NoRelatedSym(1));

sub.setField(new MDUpdateType(0));
sub.setField(new NoMDEntryTypes(0));
sub.setField(new
quickfix.field.Symbol("EUR/USD"));

the generated message is coming as
below

Using a Fix MarketData access, I would
like to deactivate message logging in
FileLogPath messages.log file

indeed, this file is growing quickly and
cause server crash




                                           976 of 1116
If there is a checksum error an error is
logged, but it does not include the
problem section of stream. This would
useful in determining if it was a garble, a
problem with the counterparty's software
or whatever.

A patch we've tried is to add the following
snippet to
FIXMessageDecoder.handleError(ByteB
uffer, int, String, boolean), right before
the "if(disconnect))":

int mark = buffer.position();
try {
StringBuilder sb = new
StringBuilder(text);
sb.append("\nBuffer debug info:
").append(getBufferDebugInfo(buffer));
buffer.position(0);
sb.append("\nBuffer contents: ");
try {
final byte[] array = new
byte[buffer.limit()];
for(int i = 0; i < array.length; ++i)
array[i] = buffer.get();
sb.append(new String(array, "ISO-8859-
1"));
} catch (Exception e) {




                                              977 of 1116
Below are some logs of the issue:

ABC-MARKET uses ResetOnLogon = Y
ABC-ORDER uses ResetOnLogon = N

10:27:49.581 EST INFO 3 - onLogout
FIX.4.3:ABC-MARKET->XYZ
10:27:49.581 EST ERROR 3 - The FIX
client FIX.4.3:ABC-MARKET->XYZ
disconnected.

10:29:08.530 EST INFO 3 - >>
8=FIX.4.3|9=60|35=5|34=2286|49=XYZ|5
2=20100302-15:29:08|56=ABC-
ORDER|10=252|
10:29:08.530 EST INFO 3 - <<
8=FIX.4.3|9=64|35=5|34=2354|49=ABC-
ORDER|52=20100302-
15:29:08.530|56=XYZ|10=194|
10:29:08.542 EST INFO 3 - onLogout
FIX.4.3:ABC-ORDER->XYZ
10:29:08.542 EST ERROR 3 - The FIX
client FIX.4.3:ABC-ORDER->XYZ
disconnected.

10:29:08.542 EST ERROR 3 - The next
FIX.4.3:ABC-ORDER->XYZ Sending
Sequence is expected to be: 2355




                                       978 of 1116
This patch ends dispatcher thread after
logout.

/**********************************************
*********************************
* Copyright (c) quickfixengine.org All
rights reserved.
*
* This file is part of the QuickFIX FIX
Engine
*
* This file may be distributed under the
terms of the quickfixengine.org
* license as defined by
quickfixengine.org and appearing in the
file
* LICENSE included in the packaging of
this file.
*
* This file is provided AS IS with NO
WARRANTY OF ANY KIND,
INCLUDING
* THE WARRANTY OF DESIGN,
MERCHANTABILITY AND FITNESS
FOR A
* PARTICULAR PURPOSE.
*
* See
http://www.quickfixengine.org/LICENSE




                                                  979 of 1116
The one-line fix for QFJ-421 in Mar 2009
(r921) seems to have been accidentally
reverted in Jan 2010 by r928.

Why not use an idiom such as:

private final Object responderSync = new
byte[0];

Others may prefer simply a new Object()
for a lock like this. I think the debate[1]
over bytecode size or whatever is moot,
but clearly a String was a bad choice
here for maintainability reasons, i.e. it
just looks like a constant value suitable
to be interned.

[1] http://java.itags.org/java-core-
apis/32998/ "Java Core APIs: locks:
Object versus empty byte array"




                                              980 of 1116
JDK 1.6_20   If an exception is thrown in fromApp, e.g.
             FieldNotFound, and we're using FIX4.2
             or greater when using a Routing
             Network, e.g. Autex, a
             BusinessMessageReject message is
             thrown. The message does not currently
             contain all of the addressing information
             required to successfully deliver the BMR
             message if the message isn't going
             directly to a recipient.

             If the message which causes the BMR
             contains routing information in:

             OnBehalfOfCompID (115) and
             OnBehalfOfSubID (116)

             This information should be included in
             the BMR reply in:

             DeliverToCompID (128) and
             DeliverToSubID (129)

             This will allow the Routing network to
             correctly deliver the message to the
             Application of the final recipient. Not
             including these fields results in the
             message being delivered directly to the
             Routing Network itself which doesn't




                                                          981 of 1116
VMWARE 3.5/4, Solaris 10 Upgrade 6,   On Solaris 10 the gethrtime (High
Multiprocessor                        Resolution Time) and time (Wall Clock
                                      Time) functions are sometimes returning
                                      wrong values. The function gethrtime is
                                      wrapped in JVM to get the Nanotime that
                                      many applications use. This is causing
                                      unpredictable behavior in various
                                      applications. The tests were done for
                                      gethrtime and time function that returns
                                      wall clock time - it was going backwards.
                                      For QuickFIX/J in particular, due to
                                      nanotime returning wrong values and
                                      deltas being negative, required FIX
                                      connections were not established as
                                      expected.

                                      Some links:

                                      http://communities.vmware.com/thread/2
                                      15461
                                      http://bugs.sun.com/view_bug.do;jsessio
                                      nid=36cc38bca9ae36e09ba7643c0f8?bu
                                      g_id=6855228

                                      Fixed: Following options were added to
                                      the VMX file on VMWARE:

                                      monitor_control.disable_tsc_offsetting=T
                                      RUE
Linux                                 I was trying to set up the number of failed
                                      logon attempts after which the logon
                                      session would be created with a different
                                      host. The configuration does match with
                                      the interval between reconnects, but I
                                      thought it would be useful if the number
                                      of reconnect attempts may also be
                                      configurable from the config file. Or is
                                      there an option that I maybe missing ?


                                                                                    982 of 1116
windows 7 professional 64 bits, multiple   I have tested with a simple server and
core Intel                                 client setup using a single session in the
                                           same machine(tcp socket on local host).
                                           The client sent in new orders and got
                                           execution reports back. If the orders
                                           were sent at a high data rate for a period
                                           of 100-200ms, the round trip time for a
                                           new order and the corresponding report
                                           was not good.

                                           My understanding is that there are two
                                           different threads in sending and receiving
                                           messages. What could be the reason
                                           causing QuickFix engine to slow down
                                           processing the incoming messages?
                                           Since there is no network overhead, it's
                                           most likely to be caused by the decoder
                                           and the way FIX message is constructed.




                                           I am tryng to connect to integral and
                                           subscripe to Market data request.

                                           how can i set the tag order as per what i
                                           want as currently tags are being ordered
                                           by the tag number

                                           Integral want the tag orders as below

                                           Tag 146 should come before tag 55, but
                                           when i am using this API tag 55 is
                                           coming before Tag146 which lead a
                                           rejection message from integral can you
                                           help me please, as i have to do the same
                                           for other tags as well on the same
                                           message, as Tag 128 should come
                                           before those tags


                                                                                        983 of 1116
SessionConnector.scheduledExecutorSe
rvice is a single-threaded executor, and
is used by all sessions for heartbeating.
If there is a problem in one session, it
can impact other sessions.

This is really QFJ-291 again. QFJ-291
was stated in terms of initiator
reconnects, and the fix to it targeted that
specific scenario. However, we have just
encountered this problem in production
involving only heartbeats. Heartbeating
seems innocuous, but in fact has most of
the same vulnerabilities as sending any
other message (logging, toAdmin etc.).




                                              984 of 1116
We have some system states where we
disable network connection but still may
have messages that we wish to deliver to
the gateway, i.e., message store, for
future delivery to the counterparty when
we re-enable the network connection.
Our technique is to create a
SocketAcceptor or SocketInitiator, but
not to start it. Since we upgraded from
QF/J 1.2.1 to QF/J 1.4.0, this is no
longer working for initiators.

Traced this back to QFJ-354, revision
number 874. QFJ-354 allows a
SocketInitiator to be stopped and
restarted. (Previously it could be
stopped, but the only way to restart it
was to recreate it.) As part of this
change, they moved where the sessions
are created out of the constructor.
(Session creation is one way a session
can be registered.) QFJ-354 was part of
the 1.4.0 release. There was no similar
change for acceptors.

I don't see any reason why the session
creation cannot be moved back into the
constructor. It does not interfere with the
intent of QFJ-354.




                                              985 of 1116
ThreadedSocketAcceptor/DynamicAccep
torSessionProvider Sessions do not get
checked by SessionTimerTask because
sessionconnector is always null from
ThreadPerSessionEventHandlingStrateg
y.

DynamicAcceptorSessionProvider.getSe
ssion(...) {
if(sessionConnector != null) {
sessionConnector.addDynamicSession(s
);
}
}


ThreadPerSessionEventHandlingStrateg
y.getSessionConnector() {
return null;
}


simple fix i tested was to just add the
connector constructor like in
SingleThread version

public
ThreadPerSessionEventHandlingStrateg
y(SessionConnector connector) {




                                          986 of 1116
N/A   Currently if you want to add a value in a
      repeating group, there isn't a
      straightforward way of doing so. For
      instance,

      //Just for illustration, if noSides group is
      read from TCR
      TradeCaptureReport.NoSides
      noSidesGroup = new
      TradeCaptureReport.NoSides();
      tradeCaptureReport.getGroup(1,
      noSidesGroup);

      //add account information in TCR
      noSidesGroup.set(new
      Account("accountA"));

      This action doesn't modify the original
      TCR message as the group returned by
      getGroup() method is a copy of the
      actual group object.

      Is there a reason for this behaviour?
      Also, I noticed that when we add a typed
      group object it is copied into a Group
      object and then stored in the underlying
      TreeMap of groups. The only reason I
      could find is that String to Object parsing
      doesn't create concrete group objects
      Incoming Logout message is routed to
      Application.onLogout() callback, but
      doesn't go to Application.fromAdmin()
      callback. Therefore logout reason can't
      be extracted from the message as in
      onLogout() we have just SessionID of the
      session which is disconnected.




                                                     987 of 1116
If the target sends an unrequested logout
message the text of the message is lost
as the event is logged as "Received
logout request". This makes debugging
these unexpected disconnects difficult.

We had the situation any FIX sessions
were immediately logged out with the
reason "Incorrect BeginString". But the
session was configured to use "FIX.4.4"
and the incoming message came with
"FIX.4.4" so we wondered why this
happened.

Finally, we found that the configured data
dictionary had the wrong FIX version tag
which was difficult to find.

Code analysis results:

* The logout reason "Incorrect
BeginString" is sent if the exception
UnsupportedVersion is thrown.
* This exception is sent on two quite
different occasions:
** Incoming BeginString does not match
the session configuration.
** On validate, configured data dictionary
does not match the session
configuration.
* In both cases, the same
undifferentiated exception is thrown.

Possible improvements:
* Provide differentiating reason text to
When there is a length format error, it
would be nice to see the full input FIX
message.


                                             988 of 1116
Windows & Linux.   We set the "ForceResync" to true and
                   "PersistMessages" to false. Attempting
                   connect to a target with a different
                   sequence number, we get a logout
                   message with the expected sequence
                   number and the following is called:

                   (in Session.java):
                   private void forceStoreResync(int
                   nextTargetMsgSeqNum, int
                   nextSenderMsgSeqNum )

                   in that method, a heartbeat message is
                   created for each missing sequence
                   number and it's stored in the Message
                   Store without checking if
                   persisteMessage is true.

                   Is there a reason for this or this a bug? If
                   it's a bug, I'd suggest this fix:

                   Line 1601:
                   - if (actualSenderMsgSeqNum <
                   nextSenderMsgSeqNum) {
                   + if (actualSenderMsgSeqNum <
                   nextSenderMsgSeqNum &&
                   persistMessages ) {


                   For specific test, it is sometime needed
                   to be able to force the sending of
                   TestRequest, Heartbeat and Logout
                   messages.




                                                                  989 of 1116
In some case, two thread access the file
store: one for writing outgoing
messages, another one for reading old
messages (e.g. while a sequence
resend).
This can lead to a concurrency using the
underlying file access and corrupt the
store.
The file store has to use two separate file
access to prevent this.
Patch available.

Add a ForceResync option Y/N per
session to help application developers
work with servers UAT withtou the need
of a perfect synchronization in the
sequenceing.

This option will be used:

- when the server rejects a logon with a
logout and error message such as
"expected iii but received jjj";
automatically re-sync using iii from the
error message.
- when target is too low, force the current
sequence value using the target
message value
- when the target is too high and the gap
is greater than a constant threshold, skip
the resend process and directly resync
the values

Each force-resync operation should
output a warning in the logs




                                              990 of 1116
Centos 5.3, Sun JDK 1.6   To show bug:
                          1) Create FIXT1.1 / FIX.5.0 session with
                          custom TransportDataDictionary and
                          ApplicationDataDictionary
                          2) Start session, send session level
                          logins
                          3) Try sending Application-level message
                          to QFix/J session with CstmApplVerID
                          (field 1129) set in the header to some
                          value (I chose '5.4' for the value)
                          4) QFix/J emits exception trying to find
                          DataDictionary FIX50_5_4, where '5_4'
                          reflects value of the CstmApplVerID field

                          Why it happens:
                          QFix/J indexes DataDictionaries by a
                          AppVersionKey. This key uses
                          ApplVerID and CstmApplVerID fields to
                          generate a unique reference to a given
                          DataDictionary. I think it is a correct
                          interpretation of the FIX spec to say that
                          it should only use ApplVerID, because
                          CstmApplVerID (1) is not a required field,
                          and thus may or may not consistently
                          appear in message headers, (2) does not
                          have a required default value in a
                          configuration file (e.g. DefaultApplVerID)
                          (3) is defined in the FIX spec as "Used to
                          support bilaterally agreed custom




                                                                       991 of 1116
Using a synchronized block can result in
a thread being starved of access to the
responder. This should be changed to
use a Lock with fair semantics.

Starvation was observed in a scenario
using SocketSynchronousWrites=Y
where a slow consumer could not be
disconnected because the message
writing thread kept re-obtaining the
monitor.




                                           992 of 1116
The following context diff shows a patch
which cleans up the issue by reducing
the possibility of a null pointer.

***
quickfixj/core/src/main/java/quickfix/Mess
ageUtils.java Thu Jan 15 11:47:03 2009
--- quickfixj-
svn/core/src/main/java/quickfix/Message
Utils.java Tue Jan 20 15:49:54 2009
***************
*** 104,107 ****
--- 104,116 ----
String customApplVerID = null;

+ MessageFactory messageFactory =
session.getMessageFactory();
+ DataDictionaryProvider ddProvider =
session.getDataDictionaryProvider();
+ DataDictionary sessionDataDictionary
=
ddProvider.getSessionDataDictionary(be
ginString);
+ DataDictionary payloadDataDictionary
= null;
+
+ // We check and if it's a Admin
message we don't need anything more
+ if




                                             993 of 1116
In our production environment, we saw
the following scenario:
They log on w/ 687
We send resent request from 684 to 0
They send a resend request (their #688)
They send gap fill from
MsgSeqNum=684 to NewSeqNo=688.
They send us 689.
QF did not recognize that the resend
request had been fulfilled, so it did not
send another resend request when it saw
689.
The counterparty was never going to
send us 688 otherwise - they had already
sent it (and indeed we acted on it).
So we ended up not processing any of
their messages (sequence number too
high), and eventually disconnected.

We tracked the problem down to the
boolean verify(Message msg, boolean
checkTooHigh, boolean checkTooLow)
method around line 1168. If the
MsgSeqNum is at or beyond the end of
the resend range waiting to be satisfied,
then the resend request will be deemed
satisfied. But for gap fills, it should really
consider the entire range of the gap, i.e.,
MsgSeqNum to NewSeqNo - 1, which it




                                                 994 of 1116
                                          A race condition is causing occasional
                                          skipped heartbeats.

                                          The likelihood is increased by (a) multiple
                                          sessions, (b) slow message store, (c)
                                          frequent heartbeats e.g. HeartBtInt=1.

                                          The "QFJ Timer" thread wakes up every
                                          second and looks at all sessions to see
                                          who needs a HeartBeat to be sent. The
                                          SystemTime.currentTimeMillis() is read
                                          at the moment the outgoing message
                                          header is created.

                                          Suppose you have a "quiet" session that
                                          is only exchanging heartbeats, and one
                                          or more other "chatty" sessions that don't
                                          always need a Heartbeat to be sent
                                          because of other traffic being sent.

                                          Suppose at time T, all the sessions get a
                                          heartbeat, but as the heartbeats are sent
                                          by the single QFJ Timer thread, the last
                                          session's HeartBeat is sent at time T + 1
                                          ms. This delay is a function of the CPU
                                          and MessageStore speed, not any
                                          network timings.

                                        Then suppose at time T + 1000, only the
Tag appears more than once... the error Tag appears more than once... the error
happens for user defined fields which   happens for user defined fields which
can appear more than once               can appear more than once
quickfixj [windows/unix]                The BeginString is mistakenly set to            QuickfixJ
                                        'FIX.1.1' in the quickfix.fix50.Message
                                        class. In other Message classes in the
                                        packages quickfix.fix* it is correctly set.
                                        Solution: getHeader().setField(new
                                        BeginString("FIXT.5.0"));


                                                                                                    995 of 1116
Hello;

please let me know if there are any plans
to make quickfixj more modular?

for example, I would like to replacae
mina with netty;

thanks

Andrei


Improve performance converters
(double, int) and add tests to cover all
cases.




                                            996 of 1116
When writing a custom acceptance test
script there is a bug if you include a tag
with '10' as the last two digits. This is
because module
InitiateMessageStep.java:line 47
contains a regex pattern that scans for a
Checksum tag in the message.

// Matches FIX.X.X or FIXT.X.X style
begin string
private static final Pattern
MESSAGE_PATTERN =
Pattern.compile("I(\\d,)*(8=FIXT?\\.\\d\\.\\
d\\001)(.*?)(10=.*|)$");

The problem is that the regex expression
doesn't look to see if the '10=' falls at the
beginning of a tag, thus it will
erroneously match against any tag with
'10=' in it such as '110=' (MinQty), '210='
(MaxShow), etc.

The fix for this is quite simple. Merely
add the field separator before the '10='
which will allow a match only if '10=' falls
at the beginning of a field.

// Matches FIX.X.X or FIXT.X.X style
begin string




                                                997 of 1116
quickfixj-1.5.0   Initial state on client side (not
                  synchronized with server side state,
                  because of some other bugs):
                  - NextTargetMsgSeqNum=637
                  - NextSenderMsgSeqNum=500544

                  Reception of a TradingSessionStatus
                  message:
                  8=FIX.4.4|9=220|35=h|34=571|43=N|49=
                  056001|50=1|52=20101216-
                  07:48:45.775|56=7|57=7|97=N|335=1547
                  29|336=20101216|340=2|341=20101216-
                  00:30:00.000|342=20101216-
                  01:00:00.000|344=20101216-
                  04:30:00.000|345=20101216-
                  05:00:00.000|625=1|10=032|

                  The MsgSeqNum=571 causes a
                  sequence resync:
                  20101216-07:48:43: Forcing sequence
                  resync, expected target num = 637,
                  received = 571

                  The Session.forceStoreResync(Message
                  msg) does this:
                  - nextTargetMsgSeqNum = 571
                  -> ok
                  - nextSenderMsgSeqNum =
                  nextTargetMsgSeqNum (because




                                                         998 of 1116
Following QFJ-431,
TradingSessionStatus is reported by the
MessageUtils.isAdminMessage as an
admin message.
This is wrong.
Also, Session has a method
isAdminMessage that is a duplicate of
the other one.
The latter will be removed and instead
the MessageUtils.isAdminMessage will
be called.

1) repro steps:
===========
send any message with valid repeating
group fields except in the count, set the
value to zero.

2) bad behavior:
============
No error is thrown. the repeating group is
not ignored and is parsed anyway even
though the group count is zero. Note: i
don't think fix protocol states how to
handle this case but i would assume this
is an error.

3) expected behavior:
================
normally, if the count value doesn't
match the actual number of "repeating
group" you get this error: "Incorrect
NumInGroup count for repeating group"




                                             999 of 1116
We had the situation any FIX sessions
were immediately logged out with the
reason "Incorrect BeginString". But the
session was configured to use "FIX.4.4"
and the incoming message came with
"FIX.4.4" so we wondered why this
happened.

Finally, we found that the configured data
dictionary had the wrong FIX version tag
which was difficult to find.

Code analysis results:

* The logout reason "Incorrect
BeginString" is sent if the exception
UnsupportedVersion is thrown.
* This exception is sent on two quite
different occasions:
** Incoming BeginString does not match
the session configuration.
** On validate, configured data dictionary
does not match the session
configuration.
* In both cases, the same
undifferentiated exception is thrown.

Possible improvements:
* Provide differentiating reason text to




                                             1000 of 1116
We had the situation any FIX sessions
were immediately logged out with the
reason "Incorrect BeginString". But the
session was configured to use "FIX.4.4"
and the incoming message came with
"FIX.4.4" so we wondered why this
happened.

Finally, we found that the configured data
dictionary had the wrong FIX version tag
which was difficult to find.

Code analysis results:

* The logout reason "Incorrect
BeginString" is sent if the exception
UnsupportedVersion is thrown.
* This exception is sent on two quite
different occasions:
** Incoming BeginString does not match
the session configuration.
** On validate, configured data dictionary
does not match the session
configuration.
* In both cases, the same
undifferentiated exception is thrown.

Possible improvements:
* Provide differentiating reason text to




                                             1001 of 1116
We had the situation any FIX sessions
were immediately logged out with the
reason "Incorrect BeginString". But the
session was configured to use "FIX.4.4"
and the incoming message came with
"FIX.4.4" so we wondered why this
happened.

Finally, we found that the configured data
dictionary had the wrong FIX version tag
which was difficult to find.

Code analysis results:

* The logout reason "Incorrect
BeginString" is sent if the exception
UnsupportedVersion is thrown.
* This exception is sent on two quite
different occasions:
** Incoming BeginString does not match
the session configuration.
** On validate, configured data dictionary
does not match the session
configuration.
* In both cases, the same
undifferentiated exception is thrown.

Possible improvements:
* Provide differentiating reason text to




                                             1002 of 1116
Documentation Links                           QuickfixJ
http://www.onixs.biz/tools/fixdictionary/4.
4/tagNum_871.html
http://fixprotocol.org/FIXimate3.0/en/FIX.
4.4/tag871.html

The Types which I didn't find in
InstrAttribType (871) field in FIX44.xml
file are:
<value enum="10"
description="ORIGINAL_ISSUE_DISCO
UNT"/>
<value enum="11"
description="CALLABLE_PUTTABLE"/>
<value enum="12"
description="ESCROWED_TO_MATURI
TY"/>
<value enum="13"
description="ESCROWED_TO_REDEM
PTION_DATE"/>
<value enum="14"
description="PRE_REFUNDED"/>
<value enum="15"
description="IN_DEFAULT"/>
<value enum="16"
description="UNRATED"/>
<value enum="17"
description="TAXABLE"/>
<value enum="18"




                                                          1003 of 1116
QFJ-272/1.3.1 added several fields to
SessionID (SenderSubID, TargetSubID,
SenderLocationID). These fields will be
populated in
MessageUtils.getReverseSessionID(...) if
they are set in the Login message. They
then form part of the session look-up in
AbstractSocketAcceptor.StaticAcceptorS
essionProvider.

In 1.2.1 and below,
MessageUtils.getReverseSessionID
included only the comp IDs, not the sub-
IDs and SenderLocationID.

This breaks us in two ways. One is that
we have been configuring our sessions
by the comp IDs, which works well with
the 1.2.1 code but mismatches with the
1.3.1+ code even if both sides get all
their IDs right.

The other, and more important, is that
several of our customer gateways will
vary the SenderSubID and/or
TargetSubID. For example, the FIX spec
describes SenderSubID as being useful
to distinguish between traders, and that
messages not intended for a particular




                                           1004 of 1116
We're currently working on a FIX
integration towards a large European
Exchange. One of the requirements from
the Exchange FIX engine, was that we
needed to bind our Initiator socket to
specific ip adresses for the different
sessions. We're currently using a locally
modified QFJ (based on tag
QFJ_RELEASE_1_4_0), which now
supports this feature (in addition to FIX
5.0SP2 support).

We thought we should give you our
modifications and hope it (in some way)
will be included in a future release of
QFJ. I will attach a patch (svn diff of the
tag mentioned and our modifications). All
diffs are for supporting Initiator local ip
binding. In addition we extended a little
logging in IoSessionInitiator.java (log the
Exception getMessage() in event log in
addition to class name; didn't really give
enough info!).

NOTE: The local ip binding configuration
we added should perhaps be extended to
be able to support different binding for
each "SocketAddress[]
socketAddresses" (we only added 1
                                              jmx




                                                    1005 of 1116
uname -a: Linux 2.6.9-34.ELsmp #1 SMP   java.io.IOException: Bad file descriptor   QuickfixJ
Fri Feb 24 16:56:28 EST 20 06 x86_64    at
x86_64 x86_64 GNU/Linux                 java.io.RandomAccessFile.seek(Native
Java VM: BEA JRockit(R) R27.6.0-50_o-   Method)
100423-1.5.0_15-20080626-2104-linux-    at
x86_64,BEA Systems, Inc.                quickfix.FileStore.storeSequenceNumber
                                        s(FileStore.java:403)
                                        at
                                        quickfix.FileStore.incrNextSenderMsgSe
                                        qNum(FileStore.java:288)
                                        at
                                        quickfix.SessionState.incrNextSenderMs
                                        gSeqNum(SessionState.java:350)
                                        at
                                        quickfix.Session.sendRaw(Session.java:
                                        2177)
                                        at
                                        quickfix.Session.generateHeartbeat(Ses
                                        sion.java:1786)
                                        at
                                        quickfix.Session.next(Session.java:1759)
                                        at
                                        quickfix.Session.next(Session.java:1032)
                                        at
                                        quickfix.mina.ThreadPerSessionEventHa
                                        ndlingStrategy$MessageDispatchingThre
                                        ad.run(ThreadPerSessionEventHandling
                                        Strategy.java:119)




                                                                                               1006 of 1116
linux netbeans   This a bug/feature I have reported some
                 weeks ago, but probably my description
                 was not good understandable (sorry)
                 In messages with repeating groups,
                 there is a field named NoAllocs (Tag 78)
                 This field in the message is not used by
                 quickfix. Instead its overwritten by
                 counting the repeating groups themself.
                 This leads to the problem that a possible
                 mistake can not be detected, for example
                 exception if NoAllocs != countedAllocs
                 would be better.
                 Maybe this could also lead to cutting of
                 groups like described in my bugreport in
                 log4FIX.

                 Welf




                                                             1007 of 1116
Hello;

I can not parse cme definition message
from cme file from
ftp://ftp.cme.com/secdef.dat.gz

code:

DataDictionary sessionDictionary,
applicationDictionary;

sessionDictionary = new
DataDictionary("FIXT11.xml");
applicationDictionary = new
DataDictionary("FIX50.xml");

Message message = new Message();

boolean doValidation = false;

message.fromString(messageString,
sessionDictionary,
applicationDictionary, doValidation);

sample cme input and quickfixj output:

INFO: messageString
1128=89=36835=d49=CME34=42552=2
009100416001803515=BRL22=848=208




                                         1008 of 1116
Hello;

I can not parse cme definition message
from cme file from
ftp://ftp.cme.com/secdef.dat.gz

code:

DataDictionary sessionDictionary,
applicationDictionary;

sessionDictionary = new
DataDictionary("FIXT11.xml");
applicationDictionary = new
DataDictionary("FIX50.xml");

Message message = new Message();

boolean doValidation = false;

message.fromString(messageString,
sessionDictionary,
applicationDictionary, doValidation);

sample cme input and quickfixj output:

INFO: messageString
1128=89=36835=d49=CME34=42552=2
009100416001803515=BRL22=848=208




                                         1009 of 1116
Hello;

I can not parse cme definition message
from cme file from
ftp://ftp.cme.com/secdef.dat.gz

code:

DataDictionary sessionDictionary,
applicationDictionary;

sessionDictionary = new
DataDictionary("FIXT11.xml");
applicationDictionary = new
DataDictionary("FIX50.xml");

Message message = new Message();

boolean doValidation = false;

message.fromString(messageString,
sessionDictionary,
applicationDictionary, doValidation);

sample cme input and quickfixj output:

INFO: messageString
1128=89=36835=d49=CME34=42552=2
009100416001803515=BRL22=848=208




                                         1010 of 1116
linux centos   Trying to pick up after a nework failure    sequnece
               the quickfixj engine is logging out after
               each resend request.
               The reconnection interval is set to 15
               seconds in the config file.
               See log example below where a
               syncronisation of approx. 3 messages is
               done before logging out and then waiting
               15 seconds(reconnection interval) for
               logging in again.
               In this case the initiator missed
               280(heartbeat) seq.no which took more
               than 20 minutes to syncronize.

               xxx = targetcomp
               yyy = sendcomp

               8=FIX.4.2|9=101|35=5|49=XXX|56=YYY|
               34=281|369=276|52=20110720-
               07:24:21|58=Error ! Expecting : 278 but
               received : 4|10=194|
               8=FIX.4.2|9=51|35=5|34=6|49=YYY|52=2
               0110720-07:24:26.998|56=XXX|10=055|
               8=FIX.4.2|9=63|35=A|34=7|49=YYY|52=
               20110720-
               07:24:41.988|56=XXX|98=0|108=30|10=
               092|
               8=FIX.4.2|9=69|35=A|49=XXX|56=YYY|3
               4=282|369=276|52=20110720-




                                                                      1011 of 1116
On parsing FIX 5.0 application messages
there is an error, thereafter
NullPointerExceptions thrown.

{{
java.lang.NullPointerException
at
quickfix.DataDictionary.isHeaderField(Da
taDictionary.java:258)
at
quickfix.Message.isHeaderField(Messag
e.java:651)
at
quickfix.Message.parseHeader(Message
.java:496)
at
quickfix.Message.parse(Message.java:45
9)
at
quickfix.MessageUtils.parse(MessageUtil
s.java:128)
at
quickfix.mina.AbstractIoHandler.messag
eReceived(AbstractIoHandler.java:113)
}}

This might be because FIX 5.0
DataDictionary is used for header
validation instead of FIXT 1.1.




                                           1012 of 1116
We had the situation any FIX sessions
were immediately logged out with the
reason "Incorrect BeginString". But the
session was configured to use "FIX.4.4"
and the incoming message came with
"FIX.4.4" so we wondered why this
happened.

Finally, we found that the configured data
dictionary had the wrong FIX version tag
which was difficult to find.

h4. Code Analysis

* The logout reason "Incorrect
BeginString" is sent if the exception
UnsupportedVersion is thrown.
* This exception is sent on two quite
different occasions:
** Incoming BeginString does not match
the session configuration.
** On validate, configured data dictionary
does not match the session
configuration.
* In both cases, the same
undifferentiated exception is thrown.

h4. Improvements
* Provide differentiating reason text to




                                             1013 of 1116
Ubuntu SMP (2.6.35-25-generic)          When a bug of the application around            QuickfixJ, encoding, session
                                        QuickFIX/J causes the generation of a
java version "1.6.0_24"                 message containing non-ISO-8859-1
Java(TM) SE Runtime Environment         characters (e.g. a price set to NaN or
(build 1.6.0_24-b07)                    Infinity will be formatted to a special
Java HotSpot(TM) Client VM (build 19.1- character by java.text.DecimalFormat),
b02, mixed mode, sharing)               the computed checksum is wrong
                                        (checksum is computed on Unicode
                                        characters, before they are converted to
                                        bytes, and non-ISO-8859-1 characters
                                        will be replaced by '?' during the chars to
                                        bytes conversion, making the checksum
                                        inconsistent).
                                        The peer FIX application will detect the
                                        problem and skip the affected message,
                                        then it will send a ResendRequest.

                                          To handle the ResendRequest,
                                          QuickFIX/J will retrieve asked messages
                                          in bytes version, will convert them to
                                          chars (still containing '?' instead of non-
                                          ISO-8859-1 characters), then parse them
                                          (and hopefully resend them).
                                          When parsing the message, QuickFIX/J
                                          detects the invalid checksum and throws
                                          an InvalidMessage exception.
                                          The problem is that this exception is not
                                          caught when iterating over the messages
                                          to parse, but in the next(Message




                                                                                                                       1014 of 1116
The long attribute lastSessionLogon in        Reconnect, ReconnectInterval
Session never gets written and always
stays 0. This makes
isTimeToGenerateLogon() to always
return true, because current Time - 0 will
always be greater than
computeNextLogonDelayMillis(). This
results in Initiators reconnecting
immediately and ignoring the
ReconnectInterval after a Server closes
the Connection.

This should affect all versions. But I only
checked 1.5.1, 1.5.0 and TRUNK.

I am not sure where lastSessionLogon
hast to be set, but I guess it should be in
generateLogon(). Additionally I don't
understand why lastSessionLogon gets
set to 0 in nextLogon(). As far as I
understand, it should never be necessary
to reset it to 0.
isTimeToGenerateLogon() is the only
function that uses it.




                                                                             1015 of 1116
                      As first noted by Parwinder Sekhon in
                      QFJ-433 and further elaborated (perhaps
                      confusingly) in QFJ-484, the locking
                      used in the following Session method
                      causes threads to hang when
                      SocketSynchronousWrites is enabled.

                      private boolean send(String
                      messageString) {
                      getLog().onOutgoing(messageString);
                      synchronized (responderSync) {
                      if (!hasResponder()) {
                      getLog().onEvent("No responder, not
                      sending message: " + messageString);
                      return false;
                      }
                      return
                      getResponder().send(messageString);
                      }
                      }

                      Slow consumers do exist in the real
                      world. We therefore sometimes have to
                      use SocketSynchronousWrites=Y in
                      order to avoid memory leaks due to all
                      the WriteFuture objects that are
                      generated. The problem with the current
                      locking is that the background thread
                      that handles heartbeats and forces
java 1.6 on Windows   How do you change CompIDs, IP and              QuickfixJ
                      port of a session at runtime?

                      I would like to repoint the initiator engine
                      to a different FIX server while the java
                      app is still running.




                                                                                 1016 of 1116
We have a strange behaviour:

The user is logged in, everything is fine,
but all of the sudden, his message is
rejected with "MsgSeqNum too low"
error, but I don't see why

2010-11-24 12:12:59,955] [DEBUG]
[SocketAcceptorIoProcessor-0.0] <<<
8=FIX.4.2^A9=00058^A35=0^A34=144^A
52=20101124-
12:12:59.943^A49=MMT^A56=BAXTERt
est^A10=066^A
[2010-11-24 12:13:28,884] [DEBUG]
[QFJ Timer] >>>
8=FIX.4.2^A9=58^A35=0^A34=158^A49
=BAXTERtest^A52=20101124-
12:13:28.884^A56=MMT^A10=184^A
[2010-11-24 12:13:29,955] [DEBUG]
[SocketAcceptorIoProcessor-0.0] <<<
8=FIX.4.2^A9=00058^A35=0^A34=145^A
52=20101124-
12:13:29.943^A49=MMT^A56=BAXTERt
est^A10=065^A
[2010-11-24 12:13:58,884] [DEBUG]
[QFJ Timer] >>>
8=FIX.4.2^A9=58^A35=0^A34=159^A49
=BAXTERtest^A52=20101124-
12:13:58.884^A56=MMT^A10=188^A




                                             1017 of 1116
RHEL kernel 2.6.18; Sun/Oracle Java   We have created a client to the              Concurrency,
1.6.20; QuickFixJ 1.5.1               QuickFixJ engine which implements the        ConcurrentModificationException,
                                      Application interface; in order to manage    QuickfixJ
                                      our threading we have put a thread
                                      barrier between our client Application
                                      and QuickFixJ, where its invocations of
                                      the Application API are converted into
                                      Runnable commands which are executed
                                      on the client thread. Other parts of the
                                      system interact with the client across the
                                      thread barrier in the same way and it
                                      enables the client to run in a single-
                                      threaded manner.

                                      We log the messages we get from
                                      QuickFixJ and fairly frequently see a
                                      ConcurrentModificationException being
                                      raised when we iterate over the fields in
                                      a message's header:

                                      Iterator<Field> iter =
                                      message.getHeader().iterator();
                                      while (iter.hasNext()) {
                                      // log out the values - CME is raised here
                                      }

                                      I would have thought that a message and
                                      its header should be immutable after it
                                      has been delivered to the client




                                                                                                                      1018 of 1116
When logging on with a negative             session, timeout
heartbeat interval, the Logon is accepted
but then the connection is terminated
immediately due to a Heartbeat timeout
("Disconnecting: Timed out waiting for
heartbeat").

I would propose to reject the Logon in
case of a negative HeartBtInt setting.

Maybe the check for the negative interval
should be done somewhere at the
beginning inside Session.nextLogon(). Is
this a valid place for this check? Any
comments?




                                                               1019 of 1116
SocketAcceptor initialization is using
Boolean object as both lock and flag.
This approach has 2 major problems:
1) Public object such as Boolean.FALSE
should not be used for synchronization. If
it is used as lock in multiple places it can
lead to performance degradation or
deadlock.
2) Synchronization is done on
Boolean.FALSE before initialization and
on Boolean.TRUE after initialization but
synchronization on 2 different locks do
not constitute "happens-before"
relationship. It means thread coming
shortly after initialization can see
changed flag and use Boolean.TRUE for
locking and so it uses different lock than
the lock used during initialization. As a
result this thread can see objects created
and updated during initialization in
inconsistent state.

The problem can be fixed by using
private not-share object as a lock and
boolean value as flag.




                                               1020 of 1116
Windows 7 Ultimate, Java 6 u29   TestRequest should be sent before a          Logout, testRequest
QuickFix J 1.5.1                 Logout is sent (Initiator).
                                 You may not agree this is a bug by the
                                 way but perhaps a feature not currently
                                 supported but the FIX Protocol
                                 recommends the following:-

                                 [1] a TestRequest is sent and a hearbeat
                                 is expected to be sent in return
                                 [2] NB No logout is sent until a heartbeat
                                 (with the TestRequest ID) is received.
                                 [3] Once receive a logout is sent and
                                 waitfor Logout is carried out.
                                 [4] then disconnect is done.

                                 I have seen a question relating to this on
                                 the forum but this goes way back
                                 http://quickfix-
                                 j.364392.n2.nabble.com/Log-file-rotation-
                                 td665743.html


                                 Currently the way the reset() on the
                                 Session is done it does not allow you to
                                 fire a TestRequest off and wait for the
                                 hearbeat.

                                 Any idea guys?




                                                                                                    1021 of 1116
Hi,                                            session

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
ValidateFieldsOutOfOrder=N
ValidateFieldsHaveValues=N
VaidateUserDefinedFields=N
CheckLatency=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,
Herman




                                                         1022 of 1116
Scenario is as follows:
- expecting 223
- received 227 Logon, which we
accepted --> "MsgSeqNum too high,
expecting 223 but received 227"
- sent resend request from 223 to 0
- received 228, which failed data
dictionary validation. --> "Message 228
Rejected: Invalid MsgType"
- sent a Reject
- received 223 SequenceReset, w/
PossDupFlag=Y, GapFillFlag=Y and
NextSeqNo=225. *This gap fill was not
applied.*
- received 225 ExecutionReport w/
PossDupFlag=Y. --> "Rejected
MsgSeqNum too high, expecting 224 but
received 225", and "Already sent
ResendRequest FROM: 223 TO: 226.
Not sending another."

We were able to write a test to reproduce
this. Tracing it through the debugger led
to the following snippet in
generateReject(Message, int, int):
{code:java}
if (!msgType.equals(MsgType.LOGON)
&&
!msgType.equals(MsgType.SEQUENCE
In case of full disk or file corruption, it is   FileStore
impossible to restart QFJ that throws
IOException while reading the file

The
ThreadPerSessionEventHandlingStrateg
y does not need a SessionConnector
reference internally however QFJ-609
and a few other things only work if it has
one available.


                                                             1023 of 1116
An Invalid argument exception was
thrown from methods invoked in
fromApp()

java.lang.IllegalArgumentException:
message
8=FIXT.1.1^A9=480^A35=d^A34=7528
...
at
package.removed.ApplicationImpl.fromA
pp(ApplicationImpl.java:46)
at
quickfix.Session.fromCallback(Session.ja
va:1361)
at
quickfix.Session.verify(Session.java:1314
)
at
quickfix.Session.verify(Session.java:1390
)
at
quickfix.Session.next(Session.java:796)
at
quickfix.mina.SingleThreadedEventHandl
ingStrategy$SessionMessageEvent.proc
essMessage(SingleThreadedEventHandl
ingStrategy.java:107)
at
quickfix.mina.SingleThreadedEventHandl




                                            1024 of 1116
I am curious as to the fact that their is no
enclosing transaction around the storing
of the messages to the database and the
updating of the sequence numbers that
happens in Session.sendRaw(). In here,
QuickFixJ (if configured for JDBC)
updates the database after it has send
out the message using:

state.set(msgSeqNum, messageString);
state.incrNextSenderMsgSeqNum();

Both of these update the database,
however they don't do it in a single
transaction. Doesn't this mean the DB
would be in an inconsistent state if the
server where to go down between the
above two statements.

Indeed I was hoping to be able to hook
into this transaction myself to update my
own tables so as to ensure that my OMS
is always inline with what QuickFix
believes it has sent.

I am a relative newbie to QuickFixJ, so
please let me know if I am missing the
boat entirely.




                                               1025 of 1116
The ReconnectInterval setting is
currently a simple value, in seconds, e.g.
5. That means that the socket will try to
connect each five seconds.
If the distant server never respond, this
can lead to a huge amount of tries,
processing and resource usage.
The tries interval should be short in the
beginning, then get longer.

Here is an example of syntax that could
be set instead of a simple value:
ReconnectInterval=6*5;5*15;60
This means that the connect will be tried
6 times each 5 seconds, then 5 times
each 15 seconds then each 60 seconds.

Setting a simple value such as:
ReconnectInterval=30
will result in trying each 30 seconds as
before.




                                             1026 of 1116
windows server 2003                  Hi All, I add the code below into my          QuickfixJ, encoding
Java Hotspot VM build 1.6.0_29-b11   quickfix app, hoping that it could send fix
                                     message with multibytes character, such
                                     as Chinese.
                                     CharsetSupport.setCharset("GBK");

                                     But I found it failed to send out the fix
                                     execution report and throws a
                                     BufferOverflowException in method
                                     encode of
                                     quickfix.mina.message.FIXMessageEnco
                                     der.
                                     Below is the code fragment in method
                                     encode:

                                     ByteBuffer buffer =
                                     ByteBuffer.allocate(fixMessageString.len
                                     gth());
                                     try {
                                     buffer.put(fixMessageString.getBytes(ch
                                     arsetEncoding));
                                     } catch (UnsupportedEncodingException
                                     e) {
                                     throw new ProtocolCodecException(e);
                                     }

                                     BufferOverflowException is thrown by the
                                     code "buffer.put".
                                     The reason is String.length() only return




                                                                                                         1027 of 1116
Hello everyone,

A client seems to have a problem that I
cannot reproduce. Basically, the third
party asks for a resend request of a
message sent 7 minutes earlier. During
those 7 mintures, heartbeats have been
exchanged and the sequence increased.
When the Resend Request is received,
this happens (look at the sequence
numbers).
Is it a known bug in QuickFIX/J 1.4.0 ?
fixed in 1.5.0 ?

Thanks, best regards,

Nicolas


<fix:trace logger="fix-engine-05301"
timestamp="2011-07-05 13:30:40.704"
level="Enabled" thread="QFJ Timer">
<fix:message length="79"
way="outgoing"><![CDATA[8=FIX.4.4|9=
57|35=0|34=260|49=NOYOBU|52=20110
705-
11:30:40.704|56=NOYOBU|10=215|]]></f
ix:message>
</fix:trace>
If the received message contains some
custom repeating group, QFJ will reject
with "Tag appears more than once" error.
We had to customize the dictionary to
work around. A configuration allowing
bypass this will be helpful




                                           1028 of 1116
ALL   The NextExpectedMsgSeqNum (789)
      field has been added in FIX 4.4 to the
      logon message to support a proposed
      way to resynchronize a FIX session. I
      was led to believe there is no internal
      QuickFix/J implementation pending and I
      have coded a configurable solution (as I
      have a pressing need for it), which I am
      currently testing I would like the solution
      to be integrated into QuickFix/J proper in
      a future version as that would make it a
      lot easier for me to maintain going
      forward.

      I can supply source code changes and
      /or an additional document describing the
      work flow in various scenarios on request
      for feedback.




                                                    1029 of 1116
I have an initiator connection to a foreign    logon, sequnece
acceptor which has sequence number
confusion on logon as the foreign
acceptor sends a TestRequest
immediately after the logon response.

It looks like the following is happening:
Quickfix/J accepts both (Logon &
TestRequest) messages. The and
proceeds to check the sequence number
of the Logon to make sure the session is
valid. It does this via
Session.isTargetTooHigh() which looks
at the last message in the message store
which is now 1 higher than is should be
because the TestRequest has been
received and stored. The "MsgSeqNum
too high" is issued and the engine tries to
recover. In some most circumstances,
but not all it (with the engine in question)
it can recover however it's not ideal.

The effect can be simulated (QuickFIX/J -
> QuickFIX/J) by using and acceptor with
the toAdmin below.


public void toAdmin(Message message,
SessionID sessionID)




                                                                 1030 of 1116
We use double-byte charset in no
english country.QFJ get the fix message
length using String.length(),get
checksum using String.charAt().But
these String method not support double-
byte charset,e.g. GBK.

In GBK encoding:
"青".charAt(0)=38738
"青".getBytes()[0] unsiged byte = 199
"青".getBytes()[1] unsiged byte = 244


We wish QFJ to support double-byte
charset.


We've found that the components
(timestamp, message, newline) of log
lines are occasionally interleaved in multi-
threaded applications that concurrently
send and receive FIX messages via
QuickFIX/J 1.5.2. This issue wasn't
present in QuickFIX/J 1.3.2.
It looks to me like the removal of
"synchronized" from
FileLog.writeMessage() in r928 was an
error. None of the JIRA tickets cited in
the commit log seem to explain the
change.




                                               1031 of 1116
Right now you can have multiple
sessions in same SocketInitiator only
when you configure them at startup.
Would be nice to have a programmatic
way to add new sessions to socket
initiator dynamically, either via code an
application level or via some JMX
adapter.

It's possible to work around this by
creating a new SocketIntiator, but that
may create threading issues for people
using single-threaded strategies and
having single-threaded assumptions in
their application code.

Not sure if the right way is to provide a
AbstractSocketInitiator.addSession()
(and removeSession) function, or if
there's a better approach.




When I set the tag in the body the tag is   QuickfixJ
sent in the message:
executionReport.setField(new
BooleanField(43, true));

But not when I set it in the header:
executionReport.getHeader().setField(ne
w BooleanField(43, true));

Is there a way to force header tags to be
sent?




                                                        1032 of 1116
Mandriva Linux 2008 EDT, kernel   The following error occurs when
2.6.24.7                          disconnecting the file system where log
                                  files are written on:
                                  {quote}
                                  [java] java.lang.StackOverflowError
                                  [java] at
                                  java.io.FileOutputStream.writeBytes(Nati
                                  ve Method)
                                  [java] at
                                  java.io.FileOutputStream.write(FileOutput
                                  Stream.java:247)
                                  [java] at
                                  quickfix.FileLog.writeTimeStamp(FileLog.
                                  java:116)
                                  [java] at
                                  quickfix.FileLog.writeMessage(FileLog.ja
                                  va:97)
                                  [java] at
                                  quickfix.FileLog.onEvent(FileLog.java:11
                                  1)
                                  [java] at
                                  quickfix.LogUtil.logThrowable(LogUtil.jav
                                  a:47)
                                  [java] at
                                  quickfix.LogUtil.logThrowable(LogUtil.jav
                                  a:60)
                                  [java] at
                                  quickfix.FileLog.writeMessage(FileLog.ja
                                  va:106)




                                                                              1033 of 1116
Placeholder for an RFE to add additional
functionality to current QFJ JMX support.
Would be great to have a notification
model, where listeners could register to
receive JMX notifications of
logins/logouts, and of potentially MINA
events.
Would be great to have capacity to add
new sessions/destinations via JMX, both
for acceptor and initiator sessions.




                                            1034 of 1116
When you create a Message from
incoming string that has invalid fields in
the repeating group, the message
parsing code will fail with a non-obvious
(and not helpful) error. This works when
you have 2 or more groups and never on
just 1 group.

Create a message and add a group to it,
and add an invalid field to the first group.
Add group to the message
Add another (valid or invalid) group to the
message.

Then try to "roundtrip" (ie do new
Message(origMessage.toString(),
dictionary)) and create a new message
from the old one.
The creation will fail, and the error you
get is "Tag not defined for this message" -
but the tag you get is the first tag after
the invalid one in the repeating group,
not the actual tag that's invalid.

What happens is that in
Message.parseGroup() function when
are in a repeating group, when we find
the first invalid field we essentially
"pushback" the invalid field and get out of




                                               1035 of 1116
Linux, quickfixj 1.5.0, FIX44   Dear all,

                                We are implementing connectivity with
                                the SWX market using the quickfixj
                                library but we've got a problem with
                                TradeCaptureReport messages.

                                We receive the following
                                TradeCaptureReport message from
                                SWX test platform :
                                8=FIX.4.4^A9=437^A35=AE^A34=14^A4
                                9=SwxRcg1.M01^A50=SwxObe.M01.1.1
                                ^A52=20110407-
                                09:07:04.219^A56=SQBCH-
                                02.M01^A369=1280^A15=CHF^A17=EF
                                R1_A568775_0O621059_2^A22=4^A31=
                                51.1^A32=124^A37=NONE^A48=CH001
                                0675863^A54=2^A55=[N/A]^A60=20110
                                407-
                                09:07:03.899^A75=20110407^A150=0^A
                                207=XSWX^A423=2^A447=D^A448=769
                                8^A452=17^A453=1^A487=0^A570=N^A
                                571=NONE^A572=157598^A856=1^A65
                                20=D^A552=1^A54=1^A37=NONE^A453
                                =1^A448=7698^A447=D^A452=7^A802=
                                1^A523=12589^A803=25^A576=1^A577
                                =0^A768=1^A769=20110407-
                                07:06:00.000^A770=1^A10=176^A




                                                                        1036 of 1116
This is a follow up for a recent issue we
had with our production system.
Few days after daylight switch in USA
(which happened to be on November 2nd
2008) our system disconnected one hour
early from the exchange.
Here is a little test case to illustrate:

public void
testSettingsWithStartEndDayWithDST()
throws Exception {
SessionSettings settings = new
SessionSettings();
settings.setString(Session.SETTING_TI
MEZONE, "America/New_York");
settings.setString(Session.SETTING_ST
ART_DAY,
DayConverter.toString(Calendar.SUNDA
Y));
settings.setString(Session.SETTING_ST
ART_TIME, "20:00:00");
settings.setString(Session.SETTING_EN
D_DAY,
DayConverter.toString(Calendar.FRIDAY
));
settings.setString(Session.SETTING_EN
D_TIME, "17:00:00");

//




                                            1037 of 1116
This happens because parseBody
function in Message.java does'nt take
doValidation as an argument. The fix for
this:
1. Change line 533 in Message.java to
private void parseBody(DataDictionary
dd) throws InvalidMessage
2. Add check at line 541:
if(doValidation){
if (isHeaderField(field.getField())) {
// An acceptance test requires the
sequence number to
// be available even if the related field is
out of order
setField(header, field);
throw new
FieldException(SessionRejectReason.TA
G_SPECIFIED_OUT_OF_REQUIRED_
ORDER,
field.getTag());
}
}




                                               1038 of 1116
While testing out of order messages, we
ran into the stack overflow at bottom. We
are using 1.2.1. I believe this also affects
1.3.0.

Scenario: Counterparty sends messages
through 41 OK, then sends 50 and 51
out of sequence. QF queues these and
issues a resend request. Messages 42
through 49 arrive, QF processes 50 from
the queue OK then cacks on 51.
Message 51 is:
16:13:27,627 INFO
[GATEWAYS.FWST.Incoming]
FIX.4.2:BIDS->FWST:
8=FIX.4.2^A9=60^A35=4^A49=FWST^A
56=BIDS^A34=51^A52=20071210-
21:13:26^A123=Y^A36=51^A10=215^A

The problem appears to be that message
51 is asking QF to set the next sequence
number to 51. QF obediently leaves the
sequence number at 51, resulting in an
infinite loop, and due to the use of
recursion, a stack overflow.

The FIX 4.2 spec didn't seem too clear to
me whether one should issue a reject or
ignore the message. Whatever the case,




                                               1039 of 1116
When QF/J receives a ResendRequest it       session
does not check for the MsgSeqNum of
the ResendRequest. Depending on the
MsgSeqNum on the ResendRequest it
does the following (no PossDup flag was
set):

- MsgSeqNum on ResendRequest too
low: QF/J performs the normal resending
or SequenceReset, incoming sequence
number is not altered
- MsgSeqNum on ResendRequest
correct: QF/J performs the normal
resending or SequenceReset, incoming
sequence number is incremented
- MsgSeqNum on ResendRequest too
high: QF/J performs the normal
resending or SequenceReset, incoming
sequence number is not altered

According to the spec (e.g.
http://fixprotocol.org/documents/3070/FIX
_Transport_1.1.pdf on pages 12 and 13)
the behaviour should be as follows:

- MsgSeqNum too low: terminate the
connection
- MsgSeqNum too high: perform the
normal resending or SequenceReset,




                                                      1040 of 1116
The problem happens when using
QuickFIX as an Acceptor.

Symptoms:
A user logs in, waits 30 seconds and
logout out.
One minute after, the same user logs in
and 2 seconds after the login, QuickFix
initiates a logout.

Why does QuickFIX initiate a log out?
I've traced the problem to a Boolean in
SessionState.logoutReceived that
doesn't get reset to false.

Let me explain exactly what happened:

When the user initiates the logout (the
fisrt time), at one time the method
Session.nextLogout(Message logout) is
executing.
There you do
state.setLogoutReceived(true); and call
disconnect() that will set
state.setLogoutSent(false);
All this happens in the "QF/J Session
dispatcher" thread.

In my case, in the




                                          1041 of 1116
The begin string header will be               encoding
incorrectly detected if a FIXT.1.1
message is fragmented at 12 bytes and
a message will be lost with a message
regarding bad message length.

{code}
/**
* Checks to see if the
byte_buffer[buffer_offset] starts with
data[]. The
* character ? is a one byte wildcard,
lowercase letters are optional.
*
* @param pBuffer
* @param pBufferOffset
* @param pData
* @return
*/
public static int startsWith(ByteBuffer
pBuffer, int pBufferOffset, byte[] pData) {
if (pBufferOffset +
minMaskLength(pData) > pBuffer.limit())
{
return -1;
}
final int tInitOffset = pBufferOffset;
int tDataOffset = 0;
for (int tBufferLimit = pBuffer.limit();
To fully support custom FIX dictionary,
we should take care of header fields
defined in XML dictionary.




                                                         1042 of 1116
windows / eclipse using FIX 4.3 initiator   Since QFJ v1.2, the QFJ lib consists of 5
                                            jarfile. Programs depending on QFJ need
                                            to import all five files for it to work
                                            because of internal circular
                                            dependencies.

                                            The submitted improvement breaks
                                            these dependencies and allows client
                                            application to import only the jarfiles of
                                            the FIX version that they use. For
                                            example, a client application conversing
                                            only with FIX 4.3 servers, could import
                                            only quickfixj-core.jarfile and quickfixj-
                                            msg-fix43.jar. The space savings could
                                            be useful in constrained remote
                                            deployment situations, and generally
                                            helps to reduce bloat.

                                            The first code transforms tries to to keep
                                            the original MessageCracker pattern
                                            intact, without breaking existing code.
                                            MessageCrackers no longer extend each
                                            other from one version to the next;
                                            instead they all derive from the core
                                            MessageCracker, which uses
                                            introspection used to load the
                                            appropriate MessageCracker classes for
                                            each FIX version that needs to be
                                            cracked. The version-specific




                                                                                         1043 of 1116
                Sequence of events - from the               Reconnect, ResendRequest,,
                perspective of an Acceptor:                 SequnceReset,, queued, sequence,

                0. Acceptor is restarted with inbound
                sequence number reset to 0 - all missed
                messages were session messages.
                1. Incoming Logon@sequence=6;
                responded with Logon response.
                2. Outgoing ResendRequest for
                sequence gap 1-5.
                3. Incoming
                ResendRequest@sequence=7 for
                sequence range 1005 to infinity.
                4. Incoming SequenceReset from 1 to 6 --
                i.e. gap 1-5 now filled. "Processing
                queued message: 6".
                5. Outgoing SequenceReset - requested
                gap starting 1005 filled.
                6. Incoming Heartbeat@sequence=8. -->
                At this point Acceptor complains
                "MsgSeqNum too high, expecting 7 but
                received 9". WRONG!
                7. Acceptor claims that "Already sent
                ResendRequest FROM: 1 TO: 5. Not
                sending another." --> and hence all
                subsequent inbound messages are
                considered out of sequence. PROBLEM!

                This problem seems to be due to that
Win7, Eclipse   During initialization I'm getting:
                quickfix.ConfigError: FXI-FIX43.xml:
                Component not found,
                quickfix.ConfigError: Component not
                found
                but it doesn't tell me which component is
                missing



                                                                                          1044 of 1116
      Currently there is only the possibility to
      supply a text which gets set to the Text
      field of the Logout message.

      Additionaly we should have the possibility
      to submit a value for the field
      SessionStatus (introduced with FIX5.0
      EP56).

n/a   The root cause is actually very simple.

      1) Multiple threads call convert(String) for
      a new day [new = wasn't already in
      dateCache]
      2) Multiple threads get a handle to the
      same new GregorianCalendar instance
      for the new day
      3) Multiple threads concurrently call
      getTimeInMillis() for the same instance
      from step #2
      4) ArrayIndexOutOfBoundsException
      due to concurrent modification of internal
      GregorianCalendar state

      Example stack trace

      Caused by:
      java.lang.ArrayIndexOutOfBoundsExcept
      ion: 101
      at
      sun.util.calendar.BaseCalendar.getCalen
      darDateFromFixedDate(BaseCalendar.ja
      va:454)
      at
      java.util.GregorianCalendar.computeFiel
      ds(GregorianCalendar.java:2333)
      at
      java.util.GregorianCalendar.computeTim


                                                     1045 of 1116
h4. problem

Inside the Session.next() method, the
callback
ApplicationExtended.canLogon(sessionI
D) is invoked. However, each time the
next() method gets called (i.e. each
second) and canLogon is FALSE a log
line is created:

"Do not initiate logon, Application can not
logon on <sessionID>"

This logging should be removed as that
log output could be implemented in the
specific application. There is no logging
output for the other callbacks (onLogon,
onLogout, ...) either.




                                              1046 of 1116
Solaris x86   I set ReconnectInterval in the DEFAULT
              section to the same string as the
              example in QFJ-419
              ReconnectInterval=6*5;5*15;60

              When I run the program I get the
              following stack trace

              quickfix.ConfigError:
              java.util.regex.PatternSyntaxException:
              Dangling meta character '*' near index 0
              *
              ^
              at
              quickfix.DefaultSessionFactory.getLogon
              IntervalsInSeconds(DefaultSessionFacto
              ry.java:339)
              at
              quickfix.DefaultSessionFactory.create(D
              efaultSessionFactory.java:176)
              at
              quickfix.mina.SessionConnector.createS
              ession(SessionConnector.java:140)
              at
              quickfix.mina.initiator.AbstractSocketIniti
              ator.createSessions(AbstractSocketInitiat
              or.java:160)
              at
              quickfix.mina.initiator.AbstractSocketIniti




                                                            1047 of 1116
When BeginString=FIXT.1.1 messages
can be skipped if the buffer ends before
the last '=' of "8=FIXT.1.1\0019=". That
will happen if the buffer contains a
correct message before that.

Example:

in messages:

8=FIXT.1.1\0019=12\00135=X\001108=3
0\00110=036\0018=FIXT.1.1\0019=12\0
0135=X\001108=30\00110=036\001

the second message will fail to be
decoded if the buffer contents presented
to the FixMessageDecoder in two
subsequent decode() invocations are:

"8=FIXT.1.1\0019=12\00135=X\001108=
30\00110=036\0018=FIXT.1.1\0019"

and

"=12\00135=X\001108=30\00110=036\0
01"




                                           1048 of 1116
Found on Windows XP but not OS   This has been mentioned on the mailing     WorkFlow
dependent                        list with no feedback so ...

                                 Ref: FIX Session protocol Version (FIXT)
                                 1.1. Errata

                                 In a FIX logon 1137,1147,1408 tags can
                                 set defaults for use in future FIX
                                 messages e.g. DefaultApplVerID, the
                                 behaviour I was seeing was that
                                 it was possible for preprocessing on
                                 future messages to occur before the
                                 logon was fully processed (race
                                 condition) and occasionally I would
                                 get this error message even though I
                                 was replaying identical messages
                                 (timing\thread delay is the variant) ...

                                 "12-Apr-2011 15:06:51
                                 quickfix.mina.AbstractIoHandler
                                 messageReceived
                                 SEVERE: Invalid message: Can't
                                 determine ApplVerID for message"

                                 In the debugger it was obvious the
                                 thread setting ApplVerID was free to
                                 "race" the thread doing preprocessing on
                                 the subsequent message i.e
                                 doing a get on ApplVerID, I have only




                                                                                       1049 of 1116
Windows, QFJ under heavy load   I keep meaning to investigate this ...
(performance test)
                                I've seen this a few times and reported it
                                on the forum with no response, basically
                                it appears possible to end up with two
                                sets of sequence numbers in the seqnum
                                file (I assume that's not intentional).

                                I suspect if the engine were to fail at the
                                exact time the bug occurs the current
                                sequence numbers could be wrong ?,
                                this should be very, very unlikely though
                                potentially serious.

                                So Expected seqnum file :
                                <length><Seq 1>:<Seq2>

                                corrupted file ..
                                <length1><Seq 1>:<Seq
                                2><length2><Another Seq 1>:<Another
                                Seq 2>

                                The session does not fail with such a
                                corrupted file or show ill effect, I suspect
                                possible session recovery would be the
                                only issue and as the file can still be read
                                only at the exact point the corruption
                                occurred.

                                Add support for repeating group count
                                validation (compatibility with QF HEAD).




                                                                               1050 of 1116
Windows XP, Sun JVM 1.4.2_06   When a weekly session is configured,
                               quickfixj would stop and start sessions
                               on other weekdays than the one
                               configured. In my particular case I have a
                               session that is reset on a Friday
                               afternoon, so quickfixj was configured for
                               a weekly session lasting from Friday
                               16:00 to Friday next week 13:00. Errors
                               in the calculation made it log out, reset
                               and log in on other weekdays as well.

                               Here are suggested code changes:

                               SessionSchedule.java line 221:
                               int time1Range =
                               timestamp1.get(Calendar.DAY_OF_WE
                               EK) - startDay;
                               int time2Range =
                               timestamp2.get(Calendar.DAY_OF_WE
                               EK) - startDay;

                               if (time1Range == 0) {
                               Calendar timeOnly =
                               getTimeOnly(timestamp1, calendar1);
                               if (timeOnly.before(startTime)) {
                               time1Range = 7;
                               }
                               * } else if (time1Range < 0) {
                               * time1Range +=7 ;




                                                                            1051 of 1116
Ok, my apologies for sending an
incomplete email earlier. Had an
"enter key" malfunction.

I'm working on a multi-module project
driven by Maven (instead of
ant), where couple of the modules use
QuickfixJ.

The directory layout is as follows:
parentModule
- childModule
- src
- test
- java
*.java files are here

I'm noticing a very strange situation: i
have a unit test that runs
just fine if you run it directly from the
<childModule> directory, it
initializes the Session correctly which
creates the appropriate
output/ and store/ directories for FIX.4.2-
xxx files.

However, if i run the same test from a
parent directory (ie one level
up) then it fails in to create/locate the




                                              1052 of 1116
Dear all,
I'm implementing FIX.4.4 and trying with
QuickFIX/J released version 1.0.3 but I
found that It's not suitable with our need
because there are only few parameters
in configuration file.For example:
SenderCompID, TargetCompID,
SocketConnectHost, SocketConnectPort

Should we allow user to configure more
paramteter to fit with their need ? Ex:
+ SenderSubID (Tag=50)
+ MessageType (Tag=35)
+ Username (Tag=553) that use for
session logon message
+ Password (Tag=554) that use for
session logon message
+ ...
Beside that should we open source code
for package quickfix-jni.jar that allow
user customize each of elements....to
meet their requirements.

Thanks and best regards,

Quoc Nguyen.

P/S: Any remark/ comment is always
appreciated (mailto quocnb@yahoo.com)




                                             1053 of 1116
Java2 RE 1.4.2, Windows XP, Eclipse   Set up two QuickFIX/J applications (one
3.1                                   as acceptor, on as initiator) and connect
                                      them together, then terminate/kill the
                                      acceptor application (i.e. as if it had
                                      crashed) - the inititator application gets
                                      the "Disconnecting" event but its
                                      implementation of application.onLogout()
                                      is not called

                                      Diagnostic investigation suggests that
                                      Session.disconnect() is not returning
                                      from the line

                                      responder.disconnect();

                                      Terminating the initiator application in the
                                      same way doesn't have the same
                                      problem - the acceptor gets the
                                      "Disconnecting" event, followed by a call
                                      to its implementation of
                                      application.onLogout() as expected.

                                      I tried re-building both applications on
                                      QFJ 1.0.2 and doing the same tests; this
                                      seems to work OK for both sides, so I
                                      guess something's changed between the
                                      two releases.




                                                                                     1054 of 1116
Win NT & UNIX. Sun JVM 1.4.2_01-b06 We are running an initiator and under
                                    normal operation there is no problem.
                                    However when the network gets unstable
                                    we find that quickfix does not send FIN
                                    or RST packets to the acceptor and
                                    sometimes forgets about connections
                                    that it has opened. This has been
                                    happening on an intermittent basis since
                                    quickfix 1.0.0 but so far we not managed
                                    to reproduce it reliably or to get packet
                                    captures when it happened.
                                    This is a major problem for us as the
                                    CME to which we are connecting to, only
                                    allow 1 connection and then reject
                                    additional ones. We have no way of
                                    cancelling those forgotten/hanging
                                    connections and the adapter cannot
                                    recover from a failure.
                                    I have now managed to get packet
                                    captures which show that quickfix does
                                    not send closing packets when there are
                                    network problems.
                                    I have seen that there is finally a mina
                                    1.0 library that is marked as stable which
                                    has also quite a few changes to the IO
                                    stream classes. Is there a chance that
                                    we get a new quickfix lib with the latest
                                    mina library?
                                    Are you interested in the packet




                                                                                 1055 of 1116
Tomcat 5.0.28, j2ee 1.4, Windows 2003   I have a J2EE web application composed
Server                                  with servlets, jsp's and other
                                        components. Within the application must
                                        be posible to have two different fix
                                        connections avialable, both connecting
                                        the same IP but on different ports.
                                        Currently I have two different classes
                                        implementing Application and extending
                                        MessageCracker classes respectly.
                                        Although I start their Initialtor objects with
                                        their corresponding SettingsConfig, it
                                        seems that just the last one is avialable
                                        and all the messages sent using
                                        Session.sendToTarget(...), are sent by
                                        the last connector initated. Is there any
                                        way to use different connectors running
                                        within the same appliation?




                                                                                         1056 of 1116
Windows, Solaris   I need msgTypeName -> msgType
                   mappings in the DataDictionary class.
                   Here's my use case: I have a
                   requirement to be able to change the
                   message metadata dynamically. For
                   example, if a custom field tag value is
                   wrong in a running system, then I should
                   be able to correct it without bouncing the
                   system. Hence message creation and
                   parsing should be completely metadata
                   driven (no hard coding of msgTypes and
                   field tag values is allowed). Looking at
                   the DataDictionary interface, I think
                   message parsing can be completely
                   driven by it, but I am not sure if message
                   creation can be driven by the same
                   metadata. For creating a message, I
                   need to set the MsgTpe. However given
                   a message name (e.g.
                   "NewOrderSingle"), I don't see any way
                   to get the msgType (e.g. "D") . What is
                   needed is a simple method on the
                   DataDictionary that returns a msgType
                   given the message name. For example,

                   String getMsgType(String msgName);

                   Thus dd.getMsgType("NewOrderSingle")
                   will return "D".




                                                                1057 of 1116
All   In the quickfix.SocketInitiator class, lines
      [77, 84] are as follows (version 1.1.0
      source code):

      private void initialize() throws ConfigError
      {
      synchronized (isStarted) {
      if (isStarted == Boolean.FALSE) {
      initiateSessions(eventHandlingStrategy);
      }
      isStarted = Boolean.TRUE;
      }
      }

      which incorrectly uses the synchronized
      keyword because Java locks on objects
      not variables. In other words, threads
      would lock on Boolean.TRUE and
      Boolean.FALSE, which could in turn
      cause deadlocks.




                                                     1058 of 1116
Any   Hi,

      When the acceptor gets the login
      message (35=A), certain verifications are
      being performed by the QuickFIX engine
      like SenderCompID, TargetCompId,
      CurrentTimes, SeqNum, etc. If one or
      many of these verifications fail, the issue
      is logged on the acceptor side but no
      messages are send to the initiator.

      Is it possible to configure/program
      QuickFIX so that it sends a Reject-
      session-level (35=3) message with a
      SessionRejectReason (373) with the
      rejection reason ? Or is there any other
      mechanism which would inform the
      initiator about the problem ?

      Thanks in advance,

      Ulvi




                                                    1059 of 1116
Linux and Solaris   If the FIX engine tries to connect to a
                    remote engine under little or no network
                    connectivity, it tends to be stuck in a
                    unrecoverable state and cannot
                    reconnect automatically when the
                    connectivity restores. This appears to be
                    caused by a NPE in the
                    quickfix.mina.initiator.IoSessionInitiator$
                    ConnectTask.connect() line: 136

                    quickfixSession.getLog().onEvent(e.getM
                    essage());

                    where e.getMessage() is a null pointer,
                    which causes
                    quickfix.FileLog.writeMessage(java.io.Fil
                    eOutputStream, java.lang.String,
                    boolean) line: 104

                    stream.write(message.getBytes(Charset
                    Support.getCharset()));

                    to throw a null pointer exception, which in
                    turn puts the engine into an
                    unrecoverable state. The event log looks
                    something like this:

                    20070820-08:59:02: Sent test request
                    TEST




                                                                  1060 of 1116
Windows XP Professional with JRE       I`m new to Java but I hope my
1.6.0.03 running Eclipse 3.3.1.1 and   stupidness regarding this environment is
QuickFix/J 1.3.0                       not the case of this issue I`m having.

                                       I`m trying to have a QuickFix/J
                                       application running. I`m using the same
                                       method used in C# with QuickFix.NET:
                                       I`m creating the SessionSettings and its
                                       configuration Dictionary manually from
                                       code. Anyway, the thing is that when I try
                                       to assign the Dictionary object to
                                       SessionSettings Eclipse tells me I have a
                                       ConfigError. I tried different schematics, I
                                       even tried with sample config files, still
                                       ConfigError. Here is my code:


                                       import quickfix.ConfigError;
                                       import quickfix.Message;
                                       import quickfix.SessionID;

                                       public class QFApplication extends
                                       quickfix.MessageCracker implements
                                       quickfix.Application {

                                       public QFApplication() {
                                       quickfix.SessionSettings settings = new
                                       quickfix.SessionSettings();




                                                                                      1061 of 1116
Wndows XP, Eclipse 3.2.1, Jdk1.5   SocketAcceptor ,ThreadSocketAcceptor
                                   stop mechanism can't work.

                                   In the version 1.2.1, in the sample, after
                                   the banzai and the executor have run, I
                                   press <enter> in the executor console. It
                                   turns out only one session has been
                                   disconnected in my computer and other
                                   four sessions still run.
                                   In the version 1.3.0, in the sample, after
                                   the banzai and the executor have run, I
                                   press <enter> in the executor console. It
                                   turns out all five sessions have been
                                   disconnected(not logout). In my opinion,
                                   after we call SocketAcceptor \
                                   ThreadSocketAcceptor stop method,
                                   what we really want to do is to initiate the
                                   logout procedure, not initiate the
                                   discnonnect procedure. Am I right?

                                   Thanks
                                   Mike Gu




                                                                                  1062 of 1116
windows 2000 professional. eclipse3.2   Recently, I notice that during the logou
                                        process there is a strage behaveior:
                                        sometimes in the initiator side's log file
                                        there is an unsend logon message. I
                                        think the cause is: when the initiator
                                        receive an logout from acceptor, it will
                                        call disconnect method. In the disconnect
                                        method, it will setResponder(null), then
                                        set sessionstate as the initial state and it
                                        ends. Between it sets sessionstate as
                                        the initial state and it ends. Another
                                        thread session timer thread happenedly
                                        executes at
                                        if (!state.isLogonReceived()) {
                                        if (state.isLogonSendNeeded())
                                        then, it will send a logon message, but it
                                        will not succeed because the Iosession
                                        has been closed.
                                        My solution is if
                                        (!state.isLogonReceived()&&hasRespond
                                        er()) {
                                        if (state.isLogonSendNeeded()) {




                                                                                       1063 of 1116
Using JVM 1.5 on WindowsXP.   It is possible for QFJ to accept messages
                              with invalid field values as defined in the
                              data dictionary xml file enumerations.
                              This can result in code built on QFJ
                              crashing due to acceptance of messages
                              with invalid fields, and thus developer
                              must enforce validation using hard-
                              coding to avoid this.

                              The DataDictionary.validate method only
                              checks values on the top level of the
                              message and does not walk the group
                              field trees.

                              It is necessary to add code at the end of
                              the method similar to following:

                              Map groups = map.getGroups();
                              if (groups.size() > 0) {
                              Iterator groupIter =
                              groups.entrySet().iterator();
                              while (groupIter.hasNext()) {
                              Map.Entry entry = (Map.Entry)
                              groupIter.next();
                              List groupInstances = ((List)
                              entry.getValue());
                              for (int i = 0; i < groupInstances.size();
                              i++) {
                              FieldMap groupFields = (FieldMap)




                                                                            1064 of 1116
The session timer and initiator reconnect
tasks run on the same single threaded
executor
(SessionConnector.scheduledExecutorS
ervice). As a result, if there is a problem
reconnecting on one session, it will block
the heartbeat on other sessions, leading
to test requests from the counterparties
and, if bad enough, disconnects. We
have seen this scenario in production
twice and view it as serious. Other similar
scenarios are possible.

Suggested fix is to switch to an
unbounded pool, i.e.,
scheduledExecutorService =
Executors.newScheduledThreadPool(1,
new QFTimerThreadFactory());
(There is no obvious reason the tasks
cannot execute in parallel.)




                                              1065 of 1116
This issue arise when the group data is
set incorrectly by users. Sometimes
users leave the group tags empty(mainly
the group count) with no value.

Below is the case where the test fail with
NullPointerException. The exception is
not caught in AbstractIOHandler.java and
is never sent to client app causing the
error to be ignored.

We should catch the exception and send
reject to clients.

# @testcase 14i
# @Receive a message with repeating
groups in which the "count" field value for
a repeating group is incorrect.

iCONNECT
# logon message and response
I8=FIX.4.235=A34=149=TW52=<TIME>
56=ISLD98=0108=2
E8=FIX.4.29=6035=A34=149=ISLD52=0
0000000-
00:00:00.00056=TW98=0108=210=0

#------------------------
# begin message exchange




                                              1066 of 1116
                        The problem is that sometimes the
                        SenderSubID contains the ':' character,
                        and that totally messes up the JMX
                        ObjectName. For instance, if the
                        SessionSubID=ABC:ABC, the
                        JMXExporter will create a name that
                        violates the JMX naming spec.

                        The culprit code is below, which basically
                        creates an ObjectName of the form
                        "org.quickfixj:key1=value1,key2=value2,k
                        ey3=value3". If any key or value has a ':'
                        or a '=' or a ',' in it, it will be messed up.
                        These characters should be escaped,
                        like with '_'.


                        public class ObjectNameFactory {

                        private StringBuffer sb = new
                        StringBuffer();

                        public void addProperty(String name,
                        String value) {
                        if (value != null && value.length() > 0) {
                        if (sb.length() > 0) {
                        sb.append(',');
                        }
                        sb.append(name).append('=').append(val
Ubuntu-Gutsy, JSK 1.5   Facility to get the Group in a list
                        (List<Group> ) from the FieldMap,
                        With the current implementation it has to
                        get the no of groups and a group iterator,
                        and access by creating a group object.
                        To get the group (delimiter) info required
                        to access the data dictionary. Which is
                        bit of work than getting a list of group
                        objects.


                                                                         1067 of 1116
QuickFIX 1.3.1, Java 1.5.0_12, Linux   We are testing a case where a
RHEL 4.4.2                             counterparty disconnects from our
                                       acceptor when we are filling their
                                       execution requests. In this case, when
                                       they reconnect, we have a large number
                                       of messages for them (ie: our sender
                                       sequence number is larger than what
                                       they expected), and they initiate a resend
                                       request, as expected.

                                       What surprised us was that if we are still
                                       sending new messages, those messages
                                       are interleaved with the resends. This
                                       causes our FIX client to drop the
                                       connection because it receives an out of
                                       sequence message during the replay.

                                       From our log files (we are using a
                                       custom MessageStore implementation)

                                       11:58:41,363 INFO Store - Get request
                                       from 20315 to 26359
                                       11:58:41,501 INFO Store - set: sequence
                                       26383 :: 8=FIX.4.1 [rest removed]

                                       From the event log:

                                       Thu Aug 14 11:58:11 JST 2008
                                       Disconnecting




                                                                                    1068 of 1116
I hope we can have a very useful method
like this:
public static Message
Message.getInstance(String
messageStr)

For example, if the messageStr is a
FIX44 Execution Report message string.
this method can give me an instance of
quickfix.fix44.ExecutionReport. Right
now, we store all the message in
database, when we retrieve them from
DB, it is impossible to create a
quickfix.fix44.ExecutionReport object
based on a FIX44 Execution Report
message string.

thanks.


Right now, it is:
public Group(int field, int delim) {
this(field, delim, new int[] { delim });
}

But I think it should get the order info
from the Dictionary to make more sense
based on the spec. Thanks.
If received msg contains a custom enum
value for a tag, QFJ will reject it saying
"Value is incorrect (out of range) for this
tag".




                                              1069 of 1116
QuickFIX 1.3.2   It seems that if we should receive a
                 sequence reset while QuickFIX is
                 processing queued messages, those
                 queued messages may not be processed
                 correctly. Is this the case?

                 Here are log file extracts demonstrating
                 this case. This shows a FIX-level failover
                 between ourselves and a FIX 4.1
                 counterparty; we have broken the
                 connection while receiving messages,
                 failed over, and restored state from the
                 message store.

                 Mon Dec 01 14:15:01 JST 2008
                 MsgSeqNum too high, expecting 1147
                 but received 1285
                 Mon Dec 01 14:15:01 JST 2008 Sent
                 ResendRequest FROM: 1147 TO:
                 999999

                 [Here, we notice that we have just
                 received message 1285, but we wanted
                 1147, because that was the extent of our
                 processing. We ask for a resend.]

                 Mon Dec 01 14:15:01 JST 2008
                 Received ResendRequest FROM: 2 TO:
                 999999
Windows XP       If one SessionState reset() failed, it will
                 throw a RuntimeError and cause all
                 existed session failed. It's unacceptable.
                 public void reset() {
                 try {
                 messageStore.reset();
                 } catch (IOException e) {
                 throw new RuntimeError(e);
                 }
                 }


                                                               1070 of 1116
OS: Solaris Software: Java JRE 1.5.0_10 Hi,
                                        We are using QuickFIX/J version 1.3.3
                                        as the FIX Engine in our Financial
                                        application, which services
                                        QuoteRequests and Trade Requests
                                        received from our counterparty. While
                                        our application passes along precisely
                                        rounded (to 2 decimal places) Price field
                                        value in the Execution Report to QFJ,
                                        this precision is lost when QFJ creates
                                        the string FIX message(4.21 becomes
                                        4.299999999998). Our counterparty
                                        truncates the values received, instead of
                                        rounding it, thus receiving 4.28 instead of
                                        4.29). This creates a considerable pricing
                                        issue depending on the precision.

                                         However, we would like to know if this
                                         issue been taken care of ? Are there any
                                         immediate fixes available?
                                         Would really appreciate your help on
                                         this.

                                         Thanks




                                                                                      1071 of 1116
Operating system: Linux tradera2 2.6.24-   The issue occurred after I had just
23-server #1 SMP Thu Nov 27 18:45:02       restarted my qfj initiator FIX engine:-
UTC 2008 x86_64 GNU/Linux
java version "1.6.0_14"                    15:12:12 INFO: Socket option:
16 GB RAM                                  SocketSynchronousWriteTimeout=30000
                                           15:12:12 Jul 13, 2009 3:12:11 PM
                                           quickfix.mina.initiator.InitiatorIoHandler
                                           sessionCreated
                                           15:12:12 INFO: MINA session created:
                                           /127.0.0.1:53335
                                           15:12:12 20090713-15:12:12 EVENT
                                           [FIX.4.2:NONAME->SIMULA] - Initiated
                                           logon request
                                           15:12:12 20090713-15:12:12 EVENT
                                           [FIX.4.2:NONAME->SIMULA] - Logon
                                           contains ResetSeqNumFlag=Y, resetting
                                           sequence numbers to 1
                                           15:12:12 20090713-15:12:12 EVENT
                                           [FIX.4.2:NONAME->SIMULA] - Received
                                           logon request
                                           15:12:12 20090713-15:12:12 20090713-
                                           03:12:12 DEBUG - Session logged on:
                                           FIX.4.2:NONAME->SIMULA
                                           15:12:12 ^[[00;31m^G20090713-
                                           15:12:12 EVENT [FIX.4.2:NONAME-
                                           >SIMULA] - MsgSeqNum too high,
                                           expecting 2 but received 3^[[00m
                                           15:12:12 20090713-15:12:12 EVENT
                                           [FIX.4.2:NONAME->SIMULA] - Sent




                                                                                        1072 of 1116
See
http://www.quickfixj.org/jira/browse/QFJ-
326



I'd like this to be reopened as threads still
leak.
1. in
ThreadPerSessionEventHandlingStrateg
y.stopDispatcherThreads the
dispatchers.clear() is done before
looping through the collection and so
threads' stopDispatcher is never called
2.
ThreadPerSessionEventHandlingStrateg
y.MessageDispatchingThread.run never
terminates as this method repeatedly
calls getNextMessage in a loop and
getNextMessage calls messages.take
which blocks indefinitely
3. also, stopDispatcherThreads should
wait for threads to terminate before it
returns so that everything gets cleaned
up properly and in order

I've got a patch which fixes these by:
1. reordering statements in
stopDispatcherThreads




                                                1073 of 1116
Sun Solaris   1) Wondering if someone could help with
              some fix session issues. This doesn't
              happen very often, but at least once
              every day, mostly during the evening. For
              some reason which I am not able to
              figure out, the session resets by itself
              thus causing the sequence number to be
              reset. Any idea why? I am trying to test
              the app from home , which is after like
              few hours of inactivity. Could that be the
              reason?
              2) Whatever maybe the reason, we do
              not want the session to be reset
              automatically. Is there a way to prevent
              this from happening ?

              Event Log:

              20100610-02:03:05: Session
              FIX.4.2:QA_JPMAM-
              >QA_COSMOS:NYEOSESSION
              schedule is daily, 00:00:00 UTC -
              00:00:00 UTC (daily, 00:00:00 UTC -
              00:00:00 UTC)
              20100610-02:03:05: Session state is not
              current; resetting FIX.4.2:QA_JPMAM-
              >QA_COSMOS:NYEOSESSION
              20100610-02:03:05: Created session:
              FIX.4.2:QA_JPMAM-




                                                           1074 of 1116
Hi,

I am new to QuickFIX, can you please
help me, if there is any feature which
allows multiple sessions which uses the
same host port combination.

I checked some jira cases, in which I
found
"http://www.quickfixj.org/jira/browse/QFJ-
165", is this useful, if yes, in which
version is this patch applied?
To use this I have to do the config
change, do i need to do any other
change other than this?

If above case is not applicable to me,
then how can I achieve this, is it
possible?

Thanks for the efforts you put in to
answer my query.
Appreciate your help.

Regards,
Hitesh




                                             1075 of 1116
SleepycatStore does not check returned
OperationStatus from call to
com.sleepycat.je.Cursor.getNext(...):

public synchronized void get(int
startSequence, int endSequence,
Collection<String> messages) throws
IOException {
...
if (retVal ==
OperationStatus.NOTFOUND) {
log.debug(sequenceKey + "/" +
messageBytes + " not matched in
database "
+
messageDatabase.getDatabaseName());
return;
} else {
Integer sequenceNumber = (Integer)
sequenceBinding.entryToObject(sequen
ceKey);
while (sequenceNumber.intValue() <=
endSequence) {
messages.add(new
String(messageBytes.getData(),
charsetEncoding));
if (log.isDebugEnabled()) {
log.debug("Found record " +
sequenceNumber + "=>"




                                         1076 of 1116
Desc:
i have a quickfix config (for initiator),
which doesn't have sender comp id. from
my application i get the sender comp id
at runtime, which i then set it session
settings object. i then create
SocketInitiator, and start the initiator. in
the onCreate() method, i get sessionID
without the sender comp id. am i trying
which is not possible? please let me
know if i am doing something wrong.

Code:

public boolean initialize(String
senderCompID){
SessionSettings settings = null;
try {
settings = new
SessionSettings(settingsFileName);
} catch (ConfigError e) {
System.err.println("Could not find FIX
setting file.");
e.printStackTrace();
System.exit(-1);
}
String fixVersion = null;
String sndrCompId = senderCompID;
settings.setString(SessionSettings.SEND




                                               1077 of 1116
Hi,

I have configured QuickFixJ to use JDBC
store. In doing so, we have seen an
issue with Proxool where it kills active
thread that are longer than 5 minutes.
We have no way to change the proxool's
maximum-active-time property in
Quickfixj configuration. When proxool
kills the thread, QFJ failed to perform
Scheduled Session reset. Please see the
error log as shown below.


2010-12-18 09:32:07,312 WARN
[HouseKeeper] HouseKeeper.sweep:149
- #0007 was active for 5559 milliseconds
and has been removed automaticaly. Th
e Thread responsible was named 'QFJ
Timer', but the last SQL it performed is
unknown because the trace property is
not enabled.
2010-12-18 09:32:07,316 ERROR [QFJ
Timer]
SessionConnector$SessionTimerTask.ru
n:257 - Error during timer processing
quickfix.RuntimeError:
java.io.IOException: Couldn't perform the
operation prepareStatement: You can't




                                            1078 of 1116
Windows XP   Dear All,

             Our application is Client-Server System.
             Multiple clients(initiators) connect to the
             server (dynamic acceptor) to exchange
             fix messages.
             We don't have physical configuration file;
             we create it at runtime. Our server(as
             initiator) also connects to other external
             server(second party).
             Our clients can connect to the server
             through internal or external network and
             up to 10 concurrent clients may connect
             to the server.When we was using
             threads to send and receive messages,
             the client was sending test request and
             sometimes login request(when the server
             didn't respond to the client test request).
             after we removed the threads, the
             problem became less but still occurring.
             Our time zone is Asia/Amman (GMT+2),
             but we still using default UTC.Below you
             will find our configuration file


             # Acceptor Configuration

             [DEFAULT]




                                                           1079 of 1116
Windows/Linux   I am using both 1.3.3 and 1.5.0 with an
                Oracle DB session/message store. I
                have set
                JdbcSessionIdDefaultPropertyValue="NA
                " and am seeing the row get created
                properly, but the imcoming_seqnum and
                outgoing_seqnum are not being updated,
                and when I restart the session I get a
                unique constraint violation. It appears
                that QuickFIX/J is using the 'null'
                session_qualifier rather than the
                JdbcSessionIdDefaultPropertyValue
                value for evaluating whether or not to
                create a new row. Am I going to be
                forced to set all of the session fields
                (LocId and SessionQualifier) to non-null
                values to get QuickFIX/J working
                properly with Oracle?




                                                           1080 of 1116
I have been writing a capacity test to
measure the performance of our FIX
engine (not quickfix based), however I
can barely get my machine to use any
CPU during the test despite my using a
large number of threads to generate
orders and respond with Acks.
Sadly I will have to now drop usage of
quickfix/j as this is a showstopper for a
high performance system.

After profiling, I tracked down that all
these threads are generally single
threaded through
quickfix.Session.sendRaw() which is
locking to hold onto a sequence number.
A scalable solution should keep locking
to a minimum duration, i.e. do as much
message checking and string conversion
as possible, then fill in the sequence
number as a short last step whilst inside
the lock.

A StringBuilder could be used to hold the
toString()'d message whilst not holding
the lock and leave sufficient capacity at
the head of the array to shift some of the
header content left/right to accomodate
the sequence number field whilst during




                                             1081 of 1116
All   QuickFIX configuration flag
      ValidateFieldsOutOfOrder=N has been
      applied. Although QuickFIX/J should
      ignore field ordering on all repeating
      group levels (as specified by
      ValidateFieldsOutOfOrder=N), some
      session rejects from the engine have
      been observed by the clients and in
      internal test, which reject FIX messages
      because of improper field ordering
      (example: reversed order of
      PartyIDSource (447) and PartyRole (452)
      in the Parties group). After reviewing the
      QuickFIX/J source code, it has been
      established that the cause of the problem
      is that the flag is not propagated properly
      to second and higher groups levels in the
      recursive validation of the FIX message.

      Fixed: propagate the flag properly.

      public void
      setCheckFieldsHaveValues(boolean flag)
      {
      checkFieldsHaveValues = flag;
      for(GroupInfo gi : groups.values()) { //
      ******* ADDED *******
      gi.getDataDictionary().setCheckFieldsHa
      veValues(flag);




                                                    1082 of 1116
All   The getGroups has the side effect of
      modifying i.e creating the empty group
      inside the message beeing read (with
      NoXXX field set to 0). The message
      serialization and checksum/length
      calculation inside quickfixj are not
      consistently treated for NoXXX=0 fields
      (i.e: the checksum/length calculation
      uses the NoXXX=0 field and serialization
      ignores it).

      Fixed: checksum/length calculation in
      QuickFIX/J for groups having NoXXX=0,
      in case that the library and
      getGroups+forwarding is used in a public
      call.


      int calculateLength() {
      int result = 0;
      int length = 0;
      for (Iterator<Field<?>> iter =
      fields.values().iterator(); iter.hasNext();) {
      Field<?> field = iter.next();
      if (field.getField() == BeginString.FIELD ||
      field.getField() == BodyLength.FIELD
      || field.getField() == CheckSum.FIELD ||
      isGroupField(field.getField())) {
      continue;




                                                       1083 of 1116
kubuntu 11.04   When starting an initiator via
jdk 1.6.0.26    'initiator.start()' the default section of the
                provided SessionSettings are overwitten
                in the method
                'SessionSettings.getSessionProperties(S
                essionID, boolean) in line 175. This
                results in a corrupted session settings
                configuration. I.e. in case the default
                section defines a custom data dictionary
                'default_dict', the first session section
                defines some other data dictionary 'dict1'
                and a second session section defines no
                data dictionary then the session
                properties for the second session will
                contain the 'dict1' data dictionary instead
                of the 'default_dict' data dictionary. This
                scenario can be reproduced with the
                following JUnit test:

                package test;

                import java.io.IOException;
                import java.io.InputStream;
                import java.io.StringBufferInputStream;
                import java.util.Properties;

                import org.junit.Test;

                import quickfix.Application;




                                                                 1084 of 1116
windows   If the quote and trade server is different     QuickfixJ, session
          then the session id generated for two
          servers are same when the configuration
          details for the 2 server (quote and trade
          server) are same except host name and
          port.......In this case user of the api have
          no idea how to distinguish between the 2
          servers...

          We might need to change the createID()
          method of of sessionID class which will
          generate 2 different sessionIDs..




                                                                              1085 of 1116
Java   The "quickfix.Field.getTotal()" method           QuickfixJ, encoding
       computes the checksum with the
       following code:
       for (int i = 0; i < this.data.length(); ++i) {
       sum += this.data.charAt(i);
       }

       A problem arises if the returned
       character is written with more than 1
       character.
       The checksum calculation must be done
       on "byte"s (the Quickfix specification)

       I wrote a correction:
       byte[] bytes = null;
       try {
       bytes =
       this.data.getBytes(CharsetSupport.getCh
       arset());
       for (int i = 0; i < bytes.length; ++i) {
       sum += (((int) bytes[i]) & 0x00FF);
       }
       } catch (UnsupportedEncodingException
       e) {
       throw new RuntimeException(e);
       }




                                                                              1086 of 1116
If QF/J receives a message which is           session
missing tag 34 it rejects the message by
the means of a session-level Reject
(MsgType=3). This is not according to
the spec which suggests to send a
Logout message in that case (e.g.
FIXT1.1 spec, p.40, "What constitutes a
garbled message").

But the really troubling point IMHO is that
QF/J increases the sender sequence
number anyway. This is done in method
generateReject( Message, int, int ) and
so the sequence numbers are out of
sync starting from that point. The
generateReject method even checks if
the MsgSeqNum field is set and if not
assumes '0' as default. (which can be
seen as error output: (Reject sent for
Message 0: Required tag missing:34).
Moreover, the resulting Reject message
is missing the 45/RefSeqNum field,
which is a required one!

QFJ-557 is addressing a similar topic
with regard to the increase of the target
sequence number in the
generateReject() method. However, the
missing MsgSeqNum is a special case




                                                        1087 of 1116
This is a similar issue as in QFJ-348 but
for acceptors.

When I do acceptor.start() QF/J says:

{noformat}
Listening for connections at
0.0.0.0/0.0.0.0:10040
{noformat}

netstat output:

{noformat}
tcp6 0 0 :::10040 :::* LISTEN
{noformat}

After a stop() and another start(), the
acceptor does not print the usual
"Listening... at" information and also the
netstat output is not listing the port.


A workaround could be to re-create the
acceptor. But this is somewhat
unexpected since we have start() and
stop() methods.

If I interpret the code in the
SocketAcceptor.class correctly, all that is




                                              1088 of 1116
If you do the following in your code:

Properties sessionProperties =
sessionSettings.getSessionProperties(se
ssionID, true);

Then after executing the previous
statement,
sessionSettings.getDefaultProperties()
will return the original default properties
MERGED WITH the session properties
specified under the sessionID, which is
completely wrong. The reason lies in
SessionSettings.java (comments inlined):


public Properties
getSessionProperties(SessionID
sessionID, boolean includeDefaults)
throws ConfigError {
final Properties p =
sections.get(sessionID);
if (p == null) {
throw new ConfigError("Session not
found");
}
if (includeDefaults) {
final Properties mergedProperties =
sections.get(DEFAULT_SESSION_ID); //




                                              1089 of 1116
From Edward Lee:

Hello,

I've upgraded to QuickFix/J 1.5.1
recently.
However, I encountered an issue
regarding the SequenceReset and
synchronziation with other FIX session. I
found that the QuickFix cannot
handle more that one SequenceReset
when sending out one ResendRequest.

Here is the scenario,

At first, the FIX connection is
synchronized and let say the incoming
message seqnum and outgoing message
seqnum is both 100.
Now, when I reset both in and out
message seqnum to 1. Then, out of sync
happened.
At this moment, I reset the outgoing
message seqnum to 100 again.
Then, QuickFix sent out a
resendRequest to request message 1 to
100 as it
received a logon message of message
seqnum 100.




                                            1090 of 1116
Linux + JDBC + SQL Server 2005   SessionState.java starts with the
                                 following bit of code:

                                 /**
                                 * Used by the session communications
                                 code. Not intended to be used by
                                 * applications.
                                 *
                                 * All dynamic data is protected by the
                                 session's intrinsic lock. The
                                 * log and message store implementation
                                 must be thread safe.
                                 */
                                 public final class SessionState {
                                 private final Object lock;
                                 private final Log log;

                                 // MessageStore implementation must be
                                 thread safe
                                 private final MessageStore
                                 messageStore;
                                 ...
                                 }

                                 Yet, looking at the JdbcStore.java and
                                 MemoryStore.java implementations, they
                                 are in fact not thread safe as designed
                                 (may also be true for FileStore.java, but
                                 haven't checked).
                                 If the application send a ResendRequest
                                 using QFJ, the incoming resent message
                                 from counterparty could not reach/trigger
                                 the toApp callback method for some
                                 reason. But the resent message can
                                 actually reach messages_log table, and
                                 if the message is invalid QFJ will also
                                 reject it.



                                                                             1091 of 1116
When sending/receiving a FIX 4.4          QuickfixJ
message with field 35=n, the message is
rejected with the following error:

58=Invalid MsgType
372=n
373=11

Is this a bug, or does anyone know what
can be done to resolve this issue?

Many thanks.




                                                      1092 of 1116
1. on my PC, i am running 'Executor'        I am using Executor service in the             QuickfixJ, logon
from quickfixj examples                     example, because it is similar to my FIX
PC config: windows7, i7, 2.7 GHz, 32-bit,   Gateway, in terms of using
4GB RAM                                     AcceptorTemplate

2. one linux box, where i am starting 25-   1. I have a simple client that connects to
30 clients to put load on the 'Executor'    Executor service and puts a
linux config: Intel(R) Xeon(TM) CPU         MarketDataRequest for every 10
3.20GHz, 2GB RAM                            milliseconds, total 100 market data
                                            requests.
                                            note: 'UnsupportedMessageType' errors
                                            are expected for all MarketDataRequests

                                            2. two clients are started for every
                                            second. total 30 clients are started

                                            Issues:
                                            -> connection is not established for some
                                            clients for some period
                                            From client logs:
                                            (Pending connection not established
                                            after 2146 ms.)
                                            (Pending connection not established
                                            after 2850 ms.)
                                            (Pending connection not established
                                            after 9795 ms.)

                                            -> server is not responding to logon
                                            requests promptly for some clients
                                            The documentation of
                                            allowUnknownMsgFields is a bit
                                            misleading, it has no effect if the field is
                                            not defined in the dictionary.
                                            allowUnknownMsgFields is not checked
                                            in void checkValidTagNumber(Field<?>
                                            field) .




                                                                                                              1093 of 1116
Windows 64, Eclipse,jdk7   What I'm trying to do is basicly. I whan to   QuickfixJ
                           establish a connection between 2
                           machines. On one of them I have
                           Executor, and on the other machine
                           Banzai.
                           Machine 1:- executor
                           -------executor.cfg-------------
                           [default]
                           FileStorePath=examples/target/data/exe
                           cutor
                           ConnectionType=acceptor
                           SenderCompID=EXEC
                           UseDataDictionary=Y


                           [session]
                           BeginString=FIX.4.0
                           TargetCompID=BANZAI
                           StartTime=00:00:00
                           EndTime=00:00:00
                           HeartBtInt=30
                           ValidOrderTypes=1,2,F
                           SocketAcceptPort=9876
                           SocketAcceptHost=192.168.2.213
                           DataDictionary=/etc/FIX40.xml

                           [session]
                           BeginString=FIX.4.1
                           TargetCompID=BANZAI




                                                                                     1094 of 1116
Java 7, Windows 7 - x64   In QFJ 1.5.2 acceptor.getSessions() is
                          returning an empty array list when
                          previous version (at least 1.4.0, but I'm
                          pretty sure this was working in 1.5.1 as
                          well) are returning non-empty lists.

                          For example, the following little code
                          segment (as part of an application)

                          Acceptor acceptor = null;
                          String configFileName = null;
                          try {
                          configFileName = args[0];
                          final SessionSettings sessionSettings =
                          new SessionSettings(new
                          FileInputStream(configFileName));
                          final MessageStoreFactory storeFactory
                          = new FileStoreFactory(sessionSettings);
                          final LogFactory logFactory = new
                          FileLogFactory(sessionSettings);
                          final MessageFactory messageFactory =
                          new DefaultMessageFactory();
                          acceptor = new SocketAcceptor(app,
                          storeFactory, sessionSettings,
                          logFactory, messageFactory);
                          log.info("version " +
                          org.quickfixj.Version.getVersion() + ",
                          size " + acceptor.getSessions().size());
                          }




                                                                      1095 of 1116
This is a similar issue as in QFJ-348 but
for acceptors.

When I do acceptor.start() QF/J says:

{noformat}
Listening for connections at
0.0.0.0/0.0.0.0:10040
{noformat}

netstat output:

{noformat}
tcp6 0 0 :::10040 :::* LISTEN
{noformat}

After a stop() and another start(), the
acceptor does not print the usual
"Listening... at" information and also the
netstat output is not listing the port.


A workaround could be to re-create the
acceptor. But this is somewhat
unexpected since we have start() and
stop() methods.

If I interpret the code in the
SocketAcceptor.class correctly, all that is




                                              1096 of 1116
Linux and Windows   Looks like many blogs are around this,   QuickfixJ
                    but no resolution. Here is log.

                    <20120214-20:00:09,
                    FIX.4.4:COMP1_OUT->COMP2_IN,
                    outgoing>
                    (8=FIX.4.4^A9=84^A35=1^A34=1154^A4
                    9=COMP1_OUT^A52=20120214-
                    20:00:09.303^A56=COMP2_IN^A112=T
                    EST^A10=098^A)
                    <20120214-20:00:09,
                    FIX.4.4:COMP1_OUT->COMP2_IN,
                    event> (Sent test request TEST)
                    <20120214-20:00:09,
                    FIX.4.4:COMP1_OUT->COMP2_IN,
                    incoming>
                    (8=FIX.4.4^A9=83^A35=0^A34=998^A49
                    =COMP2_IN^A52=20120214-
                    20:00:08.908^A56=COMP1_OUT^A112=
                    TEST^A10=073^A)
                    <20120214-20:00:10,
                    FIX.4.4:COMP1_IN->COMP2_OUT,
                    outgoing>
                    (8=FIX.4.4^A9=74^A35=0^A34=942^A49
                    =COMP1_IN^A52=20120214-
                    20:00:10.303^A56=COMP2_OUT^A10=0
                    26^A)
                    <20120214-20:00:14,
                    FIX.4.4:COMP1_IN->COMP2_OUT,
                    I have a session configured with         QuickfixJ, SocketUseSSL, logon, nonssl,
                    SocketUseSSL=Y at port 9887 and          ssl
                    another session configured with
                    SocketUseSSL=N at port 9888.
                    When client for second session (with
                    SocketUseSSL=N at 9888) is trying to
                    connect, a SSL handshake exception is
                    coming.
                    If same client is connecting with
                    SocketUseSSL=Y at 9888, connection is
                    successful

                                                                                             1097 of 1116
- An initiator creates the sessions in
start() -> initialize() ->
createSessionInitiators()
- if an initiator is stopped, then the
sessions will be unregistered
- if an initialized initiator is started, then it
only re-registers the sessions, and does
not recreate them (see initialize())
- a Session closes it's Log if it's closeable
(see Session -> unregisterSessions() ->
close() -> closeIfCloseable(getLog())
a FileLog only opens it's streams in
clear() and in it's constructor
- therefore, if SocketInitiator using a
FileLog is stopped, then next time it gets
started it will throw exceptions as the
underlying file descriptor is closed.

This bug is NOT present in the case of
Acceptors as they recreate sessions
when they start up.




                                                    1098 of 1116
The exceptionCaught() callback in
quickfix.mina.AbstractIoHandler calls
quickFixSession.disconnect() which is
now a 'blocking call' (changed from non-
blocking to blocking in 1.0.3). As result,
when a correctly operating connection
breaks, the callback invokes the blocking
quickFixSession.disconnect() and hangs
indefinitely in
quickfix.mina.IoSessionResponder.disco
nnect() on ioSession.close().join()
(because the close operation cannot be
completed).

It is not a good idea to mix asynchronous
callbacks with blocking API calls.

The reconnection mechanism is broken
now, which isn't good. Especially when
your application is waiting for trades
worth millions of dollars and it
experiences a temporary network related
problem.


Hi,
ther are several java classes that are not
available in the "quickfixj-1.0.4-src.zip",
for instance in the package quickfix.field.
Please help.
Thanks & regards




                                              1099 of 1116
Unix Sun JVM 1.4.2_06 and XP Sun   When the weekly Session starts on a
JVM 1.6.0_01                       Sunday, the QF engine resets but does
                                   not start at the configured time.
                                   This is quite a serious error for Reuters
                                   because the bug has made it into our
                                   production system because production
                                   has a different Schedule than
                                   development. The production system
                                   now needs to be started manually with
                                   temporary config changes every Sunday
                                   evening until we can deploy a fix.

                                   The SessionSchedule class has a bug in
                                   TimeInterval.theMostRecentIntervalBefor
                                   e() when the start or end date is a
                                   Sunday. The following code is making
                                   the wrong assumptions:
                                   if (startTime.getDay() != -1) {
                                   startCal.set(Calendar.DAY_OF_WEEK,
                                   startTime.getDay());
                                   }
                                   This code and the equivalent for endCal
                                   assume that the calendar moves
                                   backward if startTime is less than the
                                   current setting and moves forward if
                                   startTime is later than the current setting.
                                   I.e. if startCal is Wednesday=4 then the
                                   calendar would move back if set to
                                   Sunday=1 and forward if set to Friday=5.




                                                                                  1100 of 1116
JDBC   It seems that Proxool can have issues
       with some JDBC implementations. E.g.
       Oracle does not play well with Proxool.

       Therefore, I suggest to add an
       configuration option to disable the
       underlying Proxool connection pool.

       This should be straightforward to
       implement

       How do you think about this, Steve?




                                                 1101 of 1116
Any. Bug is happening on various Unix   This Friday morning our production
and Windows JREs                        system stopped at 00:30:00, rather than
                                        tomorrow, Saturday at 00:30:00, which
                                        caused a lot of trouble.

                                        We have changed the time zone of our
                                        session scheduling in the production
                                        system from GMT to America/Chicago to
                                        switch correctly for the US Daylight
                                        saving later this year. We have adjusted
                                        the start end end time accordingly to
                                        accomodate the new time zone. The
                                        setting is the following now:
                                        TZ=America/Chicago
                                        End Day=Friday
                                        End Time=19:30:00

                                        This equates to the same settings in
                                        GMT, which we had previously:
                                        End Day=Saturday
                                        End Time=00:30:00

                                        So QF should have shut down tomorrow
                                        morning and not today on Friday
                                        morning.

                                        I've had a look into the QF source code
                                        and found that the start and end time do
                                        not wrap the day when the TZ offset is




                                                                                   1102 of 1116
I was trying to retrieve NoPartyIDs group
from an Execution Report, and remove
NoPartySubIDs group from the
NoPartyIDs group, and then add the
NoPartyIDs group to an Allocation
Instruction . At this point, I suspect there
is a bug in the library (removing
subgroup from a group and adding that
group to a message), because the
BodyLength(9) in the message
(Allocation Instruction) is wrong (greater
than the correct number). My
counterparty disconnected the session
due to this error and then my FIX server
resent the message with
PossDupFlag(43)=Y after reconnection,
then the BodyLength is correct in the
resent message.

Looking at the removeGroup in
FieldMap.java, I wonder if it should adjust
the group count?

thanks.

public void removeGroup(int field) {
getGroups(field).clear();
removeField(field);
}




                                               1103 of 1116
I found NoLegs group in Confirmation
message in FIX44.xml (QFJ 1.3.3) is
required. But it is not required according
to the FIX spec. Same happens for
NoUnderlyings and NoCapacities.

<message name="Confirmation"
msgtype="AK" msgcat="app">
<field name="ConfirmID" required="Y"/>
<field name="ConfirmRefID"
required="N"/>
<field name="ConfirmReqID"
required="N"/>
<field name="ConfirmTransType"
required="Y"/>
<field name="ConfirmType"
required="Y"/>
<field name="CopyMsgIndicator"
required="N"/>
<field name="LegalConfirm"
required="N"/>
<field name="ConfirmStatus"
required="Y"/>
<component name="Parties"
required="N"/>
<group name="NoOrders" required="N">
<field name="ClOrdID" required="N"/>
<field name="OrderID" required="N"/>
<field name="SecondaryOrderID"




                                             1104 of 1116
Hi,
We are using QuickfixJ FIX44 version for
our project. I could able to connect to the
counter party and get the Hearbeat
Messages. However, when the counter
party try to send some trade messages
neither I could capture nor I could log
them.
After couple of days we came to know
that the messages are rejected even
before we capture them.

How do I capture any kind of message
we send to counter party??

Thanks in Advance,
Nagendra.
UseDataDictionary property is skipped
because session's
DefaultDataDictionaryProvider is always
created in DefaultSessionFactory




                                              1105 of 1116
Windows XP 32 bit, Java 6.   I wrote a FIX server that streams market
                             data to FIX subscribers. The market data
                             volume may be heavy, so I need to find
                             out performance benchmarks for
                             QuickFixJ API.
                             I have a test set up where Server is
                             running on 4 core XP machine streaming
                             FIX market data messages to a
                             subscriber running on another machine. I
                             do not use any file IO because I do not
                             use FileStoreFactory/FileLogFactory - so
                             no files are created in my logs directory
                             for both server and subscriber.
                             The server just sends market data
                             messages in infinite loop without any
                             delays. The message is
                             MarketDataIncrementalRefresh with Bid
                             and Offer groups containing Bid, Ask,
                             BidSize, and AskSize - 4 fields.

                             Now the problem is that I cannot receive
                             over 12,000 messages per second. My
                             CPU is not maxed out on client or server.
                             It is interesting that if I add another
                             thread on the server also sending the
                             same messages in a loop, the number of
                             processed messages does not increase.

                             My question is: is it possible to process




                                                                         1106 of 1116
All
      QuickFIX/J has an issue with the file
      store and message sequence numbers
      when simultaneously answering a
      ResendRequest on a connection, and
      processing brand new messages routed
      to that connection which are also to be
      sent to the client. The file pointers were
      not handled correctly for reading stored
      messages which are to be sent as
      PossDups, and for new messages to be
      written to the outgoing file. This caused
      outgoing message store file corruption,
      and repeated / out of sequence seqnums
      being sent.

      Fixed: synchronization QFJ patch, where
      the thread is blocked from sending new
      messages (i.e. buffering) until a
      ResendRequest is fully answered.

      private void
      nextResendRequest(Message
      resendRequest) throws IOException,
      RejectLogon,
      FieldNotFound, IncorrectDataFormat,
      IncorrectTagValue,
      UnsupportedMessageType,
      InvalidMessage {




                                                   1107 of 1116
Ubuntu Linux 2.6.24-23-server #1 SMP The FIX initiator is logged out at 21:30
Thu Nov 27 18:45:02 UTC 2008 x86_64 UTC by the acceptor (itself built with
GNU/Linux                            QFJ). The initiator logs out. An exception
                                     is reported in the initiator. Shortly after,
                                     the initiator initiates a logon request
                                     which is declined as it is outside the time
                                     window of the acceptor. There is then a
                                     endless sequence of 'Pending
                                     connection not established after XXXX
                                     ms' messages. See my application log
                                     below:-

                                         20090828-21:30:00 EVENT
                                         [FIX.4.2:NONAME->SIMULA] - Received
                                         logout request
                                         20090828-21:30:00 EVENT
                                         [FIX.4.2:NONAME->SIMULA] - Sent
                                         logout response
                                         20090828-21:30:00 EVENT
                                         [FIX.4.2:NONAME->SIMULA] -
                                         DisconnectingAug 28, 2009 9:30:00 PM
                                         quickfix.mina.AbstractIoHandler
                                         exceptionCaught
                                         SEVERE: socket exception
                                         (localhost/127.0.0.1:9876): Connection
                                         reset by peer

                                         20090828-21:30:00 20090828-09:30:00
                                         DEBUG - loggingOutState:true




                                                                                    1108 of 1116
This bug happens when QuickFixJ is
working in acceptor mode.

If the acceptor wants to initiate the logout
procedure (send logout message to an
initiator), it calls the "logout()" method on
the Session.

This sets the boolean "enabled" to false.

public void logout() {
setEnabled(false);
}


Then, the next() method is called by the
timer SessionTimerTask. On the first
call, it send the logout message to the
client because the not enabled, the client
is logged on and the logout hasn't been
sent yet.

if (!isEnabled()) {
if (isLoggedOn()) {
if (!state.isLogoutSent()) {
getLog().onEvent("Initiated logout
request");
generateLogout(state.getLogoutReason(
));




                                                1109 of 1116
WINXP   When a lot of messages arrive at the
        same instance, Quickfix seems to ingore
        some message (they can be found in the
        logs),
        and think that the earlier message is not
        arrived, so it will then send
        "ResendRequest" to the counterparty.

        e.g. 34=2, 34=3, 34=4 has arrived at
        20091203-08:47:53 [ i use the
        screenLogFactory]
        it will complaint about: (MsgSeqNum too
        high, expecting 3 but received 4)
        and (Sent ResendRequest FROM: 4 TO:
        0)

        then the MsgSeqNum will be screwed
        up, keep sending resend request when
        more messages arrived.
        and there will be a messge queue stored
        the out of order message.
        <20091203-08:47:53, FIX.4.2:INITIATOR-
        >ACCEPTOR, event> (Processing
        queued message: 5, pending: [4, 6, 7, 9,
        8, 11, 12, 10, 13, 15, 16, 14, 17, 19, 18,
        20, 21, 23, 24, 22, 25, 27, 26])

        How to prevent quickfix from ignoring the
        message with a smaller MsgSeqNum?




                                                     1110 of 1116
Linux, JBoss 5.1.GA, Apache Synapse   QuickFIX/J versions greater than 1.4.0      QuickfixJ, session
2.0                                   do not work with Apache Synapse. See
                                      following stack trace for more details:


                                      java.lang.NullPointerException
                                      at
                                      quickfix.Session.<init>(Session.java:455)
                                      at
                                      quickfix.DefaultSessionFactory.create(D
                                      efaultSessionFactory.java:179)
                                      at
                                      quickfix.mina.acceptor.AbstractSocketAc
                                      ceptor.createSessions(AbstractSocketAc
                                      ceptor.java:246)
                                      at
                                      quickfix.mina.acceptor.AbstractSocketAc
                                      ceptor.<init>(AbstractSocketAcceptor.jav
                                      a:81)
                                      at
                                      quickfix.mina.acceptor.AbstractSocketAc
                                      ceptor.<init>(AbstractSocketAcceptor.jav
                                      a:97)
                                      at
                                      quickfix.SocketAcceptor.<init>(SocketAc
                                      ceptor.java:37)
                                      at
                                      org.apache.synapse.transport.fix.FIXSes
                                      sionFactory.createFIXAcceptor(FIXSessi
All                                   Even after setting
                                      ValidateFieldsOutOfOrder=N, I am still
                                      getting the Out of order repeating group
                                      members error.




                                                                                                       1111 of 1116
prod   For the below use case, QFJ is not
       working correctly.

       Client doesn't send HB messages to
       server and server always sends
       TestRequest.

       1) Client sends a garbled message.
       Example 34=35. QFJ just logs the
       message "invalid checksum or body
       length"
       2) Client sends next message with
       34=36. QFJ sends ResendRequest to
       replay 35 (correct) and puts into the
       queue
       3) Client sends next message with
       34=37. QFJ logs Resend already
       sent(correct) and puts into the queue
       4) Client is NOT sending any messages
       to server and due to no processed
       incoming messages, it fires TestRequest
       5) Client respond to TestReqeust with
       HB
       6) QFJ code hande the HB in the
       nextHeartbeat message, where it will
       verify for Seq too high and just return
       (correct)

       private void nextHeartBeat(Message




                                                 1112 of 1116
windows 7,my eclipse   USING FIX 5.0                                logon

                       I am trying to send logon message from
                       initiator but not able to see any response
                       in acceptor.

                       In initiator i setField for logon type(35)
                       and i send message by
                       session.sendToTarget(message);

                       but i am not getting any response in
                       acceptor side and logon is not
                       successfully done.

                       **********Acceptor side code***********

                       ---AlertAcceptor.java
                       class AlertAcceptor
                       {

                       Application application = new
                       AlertServer();
                       //All setting is done
                       socketAcceptor
                       acceptor=socketAcceptor(application ,,,);
                       acceptor.start();
                       //sleep
                       acceptor.stop();




                                                                            1113 of 1116
Microsoft Windows [Version 6.1.7601]   Our application runs 24/7. We have            QFJ, SessionSchedule, Timer, session
                                       started using a weekly SessionSchedule
java version "1.7.0_03"                (Sunday 17:02 - Friday 16:59:50). In the
Java(TM) SE Runtime Environment        out-of-schedule period, several clients try
(build 1.7.0_03-b05)                   to connect, every 2 seconds, sending
Java HotSpot(TM) 64-Bit Server VM      Logon messages to our application. As
(build 22.1-b02, mixed mode)           far as I know, the QFJ Timer regularly
                                       checks if the Session is already within
                                       schedule and if not, resets the Session.

                                       In this out-of-schedule period, it happens
                                       that both QFJ Timer and QFJ message
                                       processor try to execute
                                       Session.generateLogout(...) at the same
                                       time (within the same millisecond). QFJ
                                       timer does that as result from the regular
                                       Session-check, QFJ MessageProcessor
                                       as a result from the received Logon
                                       message. None of the two is able to
                                       generate the logout and QFJ Timer stops
                                       checking the Session(s) regularly. At the
                                       SessionSchedule start, the Session(s) is
                                       not valid because it has not been reset
                                       since the unsuccesful
                                       Session.generateLogout(...). No client
                                       can Logon because "Logon rejected:
                                       quickfix.RejectLogon: Logon attempt not
                                       within session time". This is a critical
                                       problem: we have to stop and restart our
                                       MessageDispatchingThread is not
                                       correctly GC'd or released because it is
                                       not stopped and removed from
                                       dispatcher map after client disconnects.




                                                                                                                    1114 of 1116
Deadlock arises between the following     deadlock
threads:

Thread1:
"GatewayStateTimer" daemon prio=3
tid=0x04d65388 nid=0x2bef waiting for
monitor entry [0x790ff000..0x790ff9f0]
at
quickfix.SessionState.isLogonSent(Sessi
onState.java:162)
- waiting to lock <0x9d12c020> (a
quickfix.Session)
at
quickfix.Session.sentLogon(Session.java
:690)
at
quickfix.Session.isLoggedOn(Session.jav
a:731)
at
quickfix.Session.sendRaw(Session.java:
2151)
at
quickfix.Session.send(Session.java:2213
)
at
quickfix.Session.sendToTarget(Session.j
ava:590)
at
com.greatBank.application.fix.Engine.se




                                                     1115 of 1116
Windows XP   We have an inhouse FIX engine
             developed using Quickfix Engine. We are
             trying to connect with a client as an
             acceptor. But we have this error while
             attempting to create a session. I couldn't
             understand why we have this error.
             Because we had successful tests with
             different clients before. What should I do
             to pass over this problem?

             org.apache.mina.common.IoFilterLifeCyc
             leException: onPreAdd():
             protocolCodecFilter:org.apache.mina.filte
             r.codec.ProtocolCodecFilter@bc917c in
             (SOCKET, R: /194.75.231.194:52928, L:
             /213.143.244.124:2000, S:
             /213.143.244.124:2000)
             at
             org.apache.mina.common.support.Abstr
             actIoFilterChain.register(AbstractIoFilter
             Chain.java:179)
             at
             org.apache.mina.common.support.Abstr
             actIoFilterChain.addFirst(AbstractIoFilter
             Chain.java:124)
             at
             quickfix.mina.AbstractIoHandler.session
             Created(AbstractIoHandler.java:96)
             at




                                                          1116 of 1116

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:212
posted:9/8/2012
language:Unknown
pages:1116