Release Date: Wednesday, June 21, 2017
Release Highlights
- Bug Fixes and Stability Improvements.
Compatibility Notes
ADM Compatibility Level: 3.4.1 (see ADM Compatibility Matrix) The Adm Compatibility level last changed in Core X 3.4.373 release.
Change Log
- Improvement
- Change
- Bug
- XPLATFORM-1686 - UnhandledMessageEvent + source and dest buffers offsets and copy length must be >= 0
- XPLATFORM-1689 - Empty string dest pointer in solClient_msg_setDestination seen in solace JNI binding
- XPLATFORM-1706 - PreprocessingTs missing when reading 3.4 transaction log with 3.5 binaries
- XPLATFORM-1707 - XString.charAt can return wrong value
- XPLATFORM-1710 - SIGSEGV JVM crash in solace JNI binding after error in send call.
- XPLATFORM-1711 - JsonMappingException: Incompatible ODS class: Unknown message view encoding: -1 (through reference chain: com.neeve.rog.log.Entry"contentEncodingType")
- XPLATFORM-1726 - Transaction log corruption can occur with XVM stats enabled
Improvement
Change
Bug
XPLATFORM-1686 - UnhandledMessageEvent + source and dest buffers offsets and copy length must be >= 0 |
This release fixes the following exception in the solace binding when usejni=true&set_key_on_receipt=true&detached_dispatch=true java.lang.IllegalArgumentException: source and dest buffers offsets and copy length must be >= 0 at com.neeve.util.UtlBuffer.copy(UtlBuffer.java:377) at com.neeve.io.IOElasticBuffer.putFrom(IOElasticBuffer.java:900) at com.neeve.lang.XString.copyInto(XString.java:1603) at com.neeve.rog.impl.RogDirectMetadata.setMessageKeyAsRaw(RogDirectMetadata.java:875) at com.neeve.rog.impl.RogNode.setMessageKeyAsRaw(RogNode.java:341) at com.neeve.sma.impl.MessageBusBindingBase.wrap(MessageBusBindingBase.java:446) at com.neeve.sma.impl.MessageChannelBase.onMessage(MessageChannelBase.java:656) at com.neeve.solace.SolaceMessageChannel.onMessage(SolaceMessageChannel.java:221) at com.neeve.solace.SolaceMessageBusBinding.dispatchMessage(SolaceMessageBusBinding.java:306) Prior to this release it was possible that with detached dispatch enabled in the binding that the solace reactor thread would dispose the received topic prior to it be in copied into the message by the detached dispatch thread. SOLACE BINDING |
XPLATFORM-1689 - Empty string dest pointer in solClient_msg_setDestination seen in solace JNI binding |
This release resolves a bug in the solace JNI binding in which the jni portion of the binding can overwrite another memory location with a NUL (0x00) character. This would occur when the solace JNI binding appends a NUL character at the end of topic string with a backing buffer size of exactly the topic length – in such a case the null character could overflow into the beginning of an adjacent memory buffer. SMA SOLACE BINDING |
XPLATFORM-1706 - PreprocessingTs missing when reading 3.4 transaction log with 3.5 binaries |
This release fixes a bug in which preProcessingTs is not read when reading transaction logs created with version 3.4 or earlier. In the Talon version 3.5 the transaction log metadata serialization version was changed from 2 to 3. When a v2 version of the transaction log is read by 3.5 the metadata is converted to the v3, but this conversion was not reading the preprocessingTs field. TALON TOOLS |
XPLATFORM-1707 - XString.charAt can return wrong value |
Fixes a bug with XString when it is initialized from a java String and charAt is called prior to the java String being sync'd into its backing buffer. Prior to this fix charAt would return an incorrect value. HUMMINGBIRD |
XPLATFORM-1710 - SIGSEGV JVM crash in solace JNI binding after error in send call. |
This release fixes the following JVM crash in the Solace JNI binding related to freeing message memory after encountering a solace error code in send. # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f2288309512, pid=18855, tid=139786289620736 # # JRE version: Java(TM) SE Runtime Environment (8.0_60-b27) (build 1.8.0_60-b27) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.60-b23 mixed mode linux-amd64 compressed oops) # Problematic frame: # C [libsolclient.so.1+0xd6512]<1,18855,perf4.neeveresearch.com> 20170522-19:27:25:022 (dbg)...[MsgChannel<sender.default@nvx-perf-sma(Solace)>] closing channel [state=Open, flags=0] solClient_msg_free+0x12 # # Core dump written. Default location: /home/root/work/nvx-perf-3.7-SNAPSHOT/core or core.18855 # <1,18855,perf4.neeveresearch.com> 20170522-19:27:25:022 (dbg)...[MsgChannel<sender.default@nvx-perf-sma(Solace)>] leaving channel # An error report file with more information is saved as: # /home/root/work/nvx-perf-3.7-SNAPSHOT/hs_err_pid18855.log <1,18855,perf4.neeveresearch.com> 20170522-19:27:25:022 (dbg)...[MsgChannel<sender.default@nvx-perf-sma(Solace)>] Closing channel... # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # ./xperftool.sh This fix requires picking up the latest native libraries 3.5.19 SOLACE BINDING |
XPLATFORM-1711 - JsonMappingException: Incompatible ODS class: Unknown message view encoding: -1 (through reference chain: com.neeve.rog.log.Entry"contentEncodingType") |
This release fixes an TLT issue that occur when dumping Remove entries from a State Replication log that resulted in the an exception like the following: java.lang.RuntimeException: com.fasterxml.jackson.databind.JsonMappingException: Incompatible ODS class: Unknown message view encoding: -1 (through reference chain: com.neeve.rog.log.Entry["contentEncodingType"]) at com.neeve.rog.log.RogLogUtil.dumpLogEntryJson(RogLogUtil.java:1403) at com.neeve.tools.TransactionLogTool.writeEntry(TransactionLogTool.java:2988) at com.neeve.tools.TransactionLogTool.writeEntry(TransactionLogTool.java:2978) at com.neeve.tools.TransactionLogTool.access$700(TransactionLogTool.java:93) at com.neeve.tools.TransactionLogTool$Next.execute(TransactionLogTool.java:270) TOOLS |
XPLATFORM-1726 - Transaction log corruption can occur with XVM stats enabled |
The 3.6.74 release introduced additional stats to track the allocated file size of an engine's transaction logs. Under the covers the implementation of this feature makes a call to RandomAccessFile.length() to retrieve the current size of the file. This can cause a problem because of a JDK Bug in RandomAccessFile which can cause the length() call to erroneously move the file pointer. If this bug occurs it can result in transaction log entries being written to an incorrect location in the log. This release works around the JDK bug by using a different file instance to retrieve the size of the transaction log file. As part of this fix, additional assertions were added to transaction log write and flush logic to validate the file pointer has not been modified. ODS STATS AND ALERTS TALON |