Skip to content

QFJ 1.6.0 release notes

Christoph John edited this page Apr 2, 2015 · 11 revisions

Points of interest

With [QFJ-781] the code generation for FIX5.0 SP1/2 has been introduced, leading to two additional JAR files which are several megabytes in size. This means that putting the quickfixj-all or quickfixj-messages-all JAR file into your classpath will most likely lead to PermGen errors when using the default PermGen size (at least when not using JRE8 which has Metaspace instead of PermGen). To circumvent this you should

  • either specify a higher PermGen size with the -XX:MaxPermSize JVM parameter
  • or only put the needed message JARs into the classpath (e.g. if your application only uses FIX4.4 then quickfixj-messages-fix44 will suffice (of course along with quickfixj-core and needed third-party libraries like MINA and slf4j or log4j))

Complete list of issues

Bug

  • [QFJ-282] - FIXMessageEncoder#encode() may throws java.nio.BufferOverflowException if message contains Chinese characters
  • [QFJ-378] - SessionSchedule incorrectly handles Daylight Savings timezone change
  • [QFJ-448] - Skipped heartbeats
  • [QFJ-518] - Incomplete addressing on BusinessMessageReject when using a FIX routing network
  • [QFJ-557] - Session.generateReject methods may incorrectly increment nextTargetMsgSeqNum in some scenarios
  • [QFJ-626] - ResendRequest (silently) aborted when one of the message to resend was (sent and) stored with a bad checksum
  • [QFJ-631] - Wrong checksum calculation in "quickfix.Field.getTotal()"
  • [QFJ-638] - SocketSynchronousWrites=Y Hangs Threads on Session responderSync
  • [QFJ-658] - Sequence numbers not checked for incoming ResendRequest
  • [QFJ-673] - QFJ sequence problem following inbound SequenceReset - a previously received ResendRequest not "queued"?
  • [QFJ-724] - quickfix.field.NoLegSecurityAltID extends quickfix.StringField instead of quickfix.IntField
  • [QFJ-727] - build failure due to invalid character in source files
  • [QFJ-728] - SessionState is leaking memory when dealing with resends and sequence numbers are skipped due to a SequenceReset
  • [QFJ-735] - in quickfixj-v1.5.3, I cannot find 'Order Mass Action Request' with MsgType="CA"
  • [QFJ-738] - Deadlock on disconnect
  • [QFJ-742] - If the first field of a type is a group - it will not build the group
  • [QFJ-744] - FIX44.xml is missing fields 201 and 315 (PutOrCall and UnderlyingPutOrCall)
  • [QFJ-750] - Receiving Logout with too high or too low sequence causes messages to be lost
  • [QFJ-751] - Incorrect handling of SequenceReset-GapFill messages when using ResendRequestChunkSize > 0
  • [QFJ-760] - NullPointerException in Message.parseGroup
  • [QFJ-763] - Wrong constant values in NoSides
  • [QFJ-767] - StartTime/EndTime should be optional when NonStopSession=Y
  • [QFJ-772] - NPE in DataDictionary::isTrailerField
  • [QFJ-775] - FileStore: exception thrown when more than one : is used in SessionID
  • [QFJ-776] - QuickFix/J Initiator fails to process messages without TargetCompID tag
  • [QFJ-779] - Standardize line endings
  • [QFJ-786] - First three fields getting truncated when converting from string to message using Message constructor
  • [QFJ-788] - StackOverflowError still an issue when processing larger queues
  • [QFJ-790] - Logout message not propagated to the fromAdmin() callback
  • [QFJ-795] - "MsgSeqNum too high" should not be an error
  • [QFJ-800] - jar signing issue with quickfixj-all-1.5.3.jar
  • [QFJ-804] - Race condition between sessionClosed and processing logout message received
  • [QFJ-812] - Non-Logon message received before Logon should result in disconnection
  • [QFJ-823] - Problem with concurrent access to UtcTimestampConverter#dateCache
  • [QFJ-825] - Restart of SessionConnector might lead to creation of additional message processor threads
  • [QFJ-826] - Maven build is failing on test cases for quickfixj-core when compiling with JDK8
  • [QFJ-827] - quickfixj-core build failure when generating javadocs on JDK8

Improvement

  • [QFJ-382] - Foreign Language Support - Multibyte Characters - Chinese
  • [QFJ-597] - move to github
  • [QFJ-599] - make quickfixj artifacts into osgi bundles
  • [QFJ-664] - Upgrade MINA from 1.1.8 to 2.0.x
  • [QFJ-678] - EventHandlingStrategy BlockingQueues are unbounded
  • [QFJ-736] - performance improvement: Modify the code to use StringBuilder instead of StringBuffer in calculateString method of FieldMap
  • [QFJ-737] - Use current JDK for compilation of QuickFIX/J and discontinue JDK 1.4 compatibility
  • [QFJ-740] - Replace StringBuffer with StringBuilder
  • [QFJ-758] - Improve log output on incoming connection
  • [QFJ-761] - Remove conversion from Message to String in Session.nextQueued()
  • [QFJ-773] - 'MessageStore.reset()' called extraneously outside session time window
  • [QFJ-777] - Determine session's IP address
  • [QFJ-783] - Update documentation and website to reflect new project setup
  • [QFJ-807] - On a NonStopSession there is no use to check the session time each second
  • [QFJ-808] - Prevent setting illegal double values to FIX messages in order to avoid checksum errors
  • [QFJ-809] - Provide sensible default for property FileStoreMaxCachedMsg
  • [QFJ-816] - Put milliseconds in OrigSendingTime if SendingTime has them

New Feature

  • [QFJ-38] - FIX Message support double-byte charset.
  • [QFJ-781] - Fix code generation for SP1/2 .

Other

  • [QFJ-799] - SessionTest : Assertion failure as a side effect of previous sessions not being closed

Task

  • [QFJ-499] - Modify build system to use Maven