Release Date: Wednesday, August 16, 2017
Release Highlights
- Improved memory usage for embedded entity array fields in Xbuf.
- Microsecond resolution timestamps in transaction logs.
- Message Type latency stats can now be included in heartbeats.
- Ability to log per transaction stats to a binary transaction stats log.
- Support for Application Triggered Rollback.
Compatibility Notes
ADM Compatibility Level: 3.8.0 (see ADM Compatibility Matrix) The Adm Compatibility level last changed in Core X 3.7.163
This release introduces new features in ADM generated code that require new platform APIs, Consequently code generated with this version of the platform cannot be run with older versions of the platform.
The following issues have compatibility implications:
- XPLATFORM-1295 - Subscription sanitation feature
- XPLATFORM-1527 - Add check for Orphan Subscriptions in Solace JNI Binding
- XPLATFORM-1766 - Improve memory footprint of entity array deserialization for XBUF messages
- XPLATFORM-1629 - Enhance Xbuf entity clone() to preserve pass-through fields.
- XPLATFORM-1648 - Add nvx-adm-maven-plugin to replace nvx-core-maven-plugin
- XPLATFORM-1666 - Change solace binding 'sender_cpu_affinity_mask' to 'detached_sends_cpu_affinity_mask'
- XPLATFORM-1685 - Make sparse population optimization the default for Xbuf
- XPLATFORM-1704 - Channel join failure in an AepEngine should be treated as a failure rather than a warning
- XPLATFORM-1758 - Change to record preProcessingTs and outTs to microsecond precision in transaction logs.
- XPLATFORM-1649 - White space in returned app commands should not be trimmed.
Change Log
- New Feature
- XPLATFORM-757 - Application Triggered Rollback
- XPLATFORM-1058 - Add Message Type latency stats to server heartbeats.
- XPLATFORM-1295 - Subscription sanitation feature
- XPLATFORM-1451 - Implement AEP option to ack on store commit.
- XPLATFORM-1515 - Allow messages sync() to be done by AepEngine at injection time
- XPLATFORM-1527 - Add check for Orphan Subscriptions in Solace JNI Binding
- XPLATFORM-1591 - Capture wait times in thread stats
- XPLATFORM-1628 - Create getXXXTo(EmbeddedEntity) copying accessor
- XPLATFORM-1630 - Allow control over the initial backing buffer size for embedded Xbuf fields
- XPLATFORM-1641 - Implement TransactionLogTool query based transaction repair.
- XPLATFORM-1647 - Add autoStopOnLastAppStop as a server config element in DDL.
- XPLATFORM-1650 - Add XVM admin command for triggering a thread dump
- XPLATFORM-1651 - Add XVM admin command for triggering garbage collection
- XPLATFORM-1657 - Add adminClientOutputQueueCapacity as a server config element in DDL
- XPLATFORM-1662 - Add MessageBusBindingFailPolicy to DDL
- XPLATFORM-1663 - Add MessagingStartFailPolicy to DDL
- XPLATFORM-1742 - Implement ability to configure pools from DDL environment
- XPLATFORM-1743 - Implement ability to configure Xbuf pool parameters at runtime
- XPLATFORM-1749 - Record per transaction latency stats
- XPLATFORM-1757 - Add enqueueTs timestamp to MessageView and persist it in transaction logs
- Improvement
- XPLATFORM-1159 - Set more meaninful name for solace producer session threads.
- XPLATFORM-1234 - Allow configuration of Xbuf desync policies
- XPLATFORM-1644 - Change Solace binding to treat 0 length queue name as null
- XPLATFORM-1654 - Add displayName attribute to Command, Argument,Option and RemainingArgs annotations
- XPLATFORM-1676 - Enhance heartbeat thread stats to include affinitization and interval cpu usage
- XPLATFORM-1683 - Implement solace config parameter controlling SMA metadata version
- XPLATFORM-1688 - Unchecked exception preparing UnhandledMessageEvent should be caught
- XPLATFORM-1700 - Deprecate IOBuffer.getBuffer() in favor of IOBuffer.takeBuffer()/releaseBuffer()
- XPLATFORM-1702 - Add IOElasticBuffer.getTo(..,IOBuffer,...)
- XPLATFORM-1705 - Enforce RogLog cannot be opened after closed
- XPLATFORM-1712 - Enhance Transaction Log Tool to surface objects in Remove entries.
- XPLATFORM-1729 - Add ability to set compaction window size in TLT
- XPLATFORM-1737 - XVM heartbeat logger should not be auto optimized to busy spin.
- XPLATFORM-1745 - Report pools stats in heartbeats on evicts or when the size hits a new high water mark
- XPLATFORM-1766 - Improve memory footprint of entity array deserialization for XBUF messages
- XPLATFORM-1770 - Reduce log level of solace queue provisioning warnings to info level
- XPLATFORM-1772 - Solace binding should not display warning messages about known binding properties
- XPLATFORM-1773 - Solace binding should not display warning messages about known discovery properties
- Change
- XPLATFORM-1629 - Enhance Xbuf entity clone() to preserve pass-through fields.
- XPLATFORM-1648 - Add nvx-adm-maven-plugin to replace nvx-core-maven-plugin
- XPLATFORM-1660 - Prevent usage of adaptive commit and replicate in parallel simulatenously
- XPLATFORM-1666 - Change solace binding 'sender_cpu_affinity_mask' to 'detached_sends_cpu_affinity_mask'
- XPLATFORM-1672 - Disallow environment provider registration when replicateInParallel is enabled
- XPLATFORM-1685 - Make sparse population optimization the default for Xbuf
- XPLATFORM-1697 - Failure to get subscription over SEMP should throw exception on binding start.
- XPLATFORM-1704 - Channel join failure in an AepEngine should be treated as a failure rather than a warning
- XPLATFORM-1713 - "cannot find object to remove" error should be treated as non fatal store integrity failure
- XPLATFORM-1758 - Change to record preProcessingTs and outTs to microsecond precision in transaction logs.
- Bug
- XPLATFORM-1635 - Transaction batch not closed because of EventMultiplexer wakeup event
- XPLATFORM-1649 - White space in returned app commands should not be trimmed.
- XPLATFORM-1655 - Command annotation aliases are ignored by xvm
- XPLATFORM-1667 - High memory usage / pool leaks when intializaing backup member with Xbuf messages containing a large number of embdedded entity fields.
- XPLATFORM-1670 - Normalize solace binding boolean properties to accept 1/true or 0/false
- XPLATFORM-1674 - "source and dest buffers offsets and copy length must be >= 0" seen in solace binding
- XPLATFORM-1677 - AepEngine's auto created direct bus binding creates a spinning core.
- 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-1708 - AEP Engine throws NPE when primary environment provider returns null on recording end (no data recorded)
- 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-1739 - Cstart and tleg1 transaction stats are incorrect.
- XPLATFORM-1741 - Solace discovery descriptor with embedded protocol results in exception
- XPLATFORM-1752 - Backup shuts down with last transaction when primary killed before messages replicated
- XPLATFORM-1777 - NPE 3.7 using setValuesFrom on XbufRepeatedLongFieldBuffer
New Feature
XPLATFORM-757 - Application Triggered Rollback |
This release provides the ability for applications to rollback states changes and outbound message to application defined "savepoints". See AEP Transactions for details. TALON |
XPLATFORM-1058 - Add Message Type latency stats to server heartbeats. |
This release provides the ability to include message type latency stats in xvm heartbeats. To include message type latency stats in hearbeats the stats must be enabled for the corresponding app and the server must be configured to emit them: See the DDL Schema Reference for more information STATS AND ALERTS TALON |
XPLATFORM-1295 - Subscription sanitation feature |
When using dynamic substitution for channel keys, we will replace non digit or letter characters with an '_' when resolving a topic using substitution values at runtime if nv.sma.cleanmessagekey == true. Prior to 3.7 X would not perform the same substitution on the subscribe side, which could lead to channels being subscribed to incorrect topics. As of 3.7, this substitution is also performed on the subscribe side by default if nv.sma.cleanmessagekey == true. This change will replace non letter and digit characters in channel keys when 'nv.sma.cleanmessagekey=true'. To preserve the old behavior set 'nv.sma.cleanchannelfilter=false' |
See Ddl Config Reference (https://docs.neeveresearch.com/display/KB/DDL+Schema+Reference#DDLSchemaReference-\<inboundEventAcknowledgementPolicy\>)
XPLATFORM-1515 - Allow messages sync() to be done by AepEngine at injection time |
This release adds the ability to configure an AepEngine such that it calls MessageView.sync() on injected messages. This feature can save the AepEngine cpu cycles in cases where serializes the message for logging or replications. See DDL Config Reference: syncInjectedMessages (https://docs.neeveresearch.com/display/KB/DDL+Schema+Reference#DDLSchemaReference-\<syncInjectedMessages\>) for additional details. AEP |
XPLATFORM-1527 - Add check for Orphan Subscriptions in Solace JNI Binding |
This release ads the ability to enable solace binding orphan subscription checks introduced in 3.5 for JCSMP in the JNI binding. See The Solace Binding documentation for more details. When using JNI is it critical that you have the most up to date version of the nvx-native runtime (3.6.11). |
Wait times are reported in heartbeats as part of SrvMonSysIndividualThreadStats and can also be traced by enabling trace in DDL:
<servers> <server name="my-xvm"> <heartbeats enabled="true" interval="5"> <collectIndividualThreadStats>true</collectIndividualThreadStats> <tracing enabled="true"> <traceThreadStats>true</traceThreadStats> </tracing> </heartbeats> </server> </server>
[Thread Stats] ID CPU DCPU DUSER CPU% USER% WAIT% STATE NAME 42 9.0m 10.3s 10.2s 100 99 90 RUNNABLE X-STEMux-myapp-2 (aff=[2(s0c2t0)])
Where the above shows that the the my app event multiplexer is consuming 100% cpu, but 90% of that is spent spinning in a busy spin.
See SrvMonSysIndividualThreadStats Javadoc
XPLATFORM-1628 - Create getXXXTo(EmbeddedEntity) copying accessor |
This release adds copying accessors for embedded entities to ADM generated messages and entities of the form getXXXTo(Entity target), and also creates copy() and copyInto(Entity target) methods on generated entities. In Xbuf and Protobuf generated code the copy() operations preserve pass-through field value for received entities that have not been modified (a pass-through field is a field not defined in the generated code, but encoded on the wire by a sender). Additionally, in Xbuf generated code the copy is zero garbage. Prior to this change applications could:
The new copy() methods provide a way to do a pass-through field preserving copy that is also zero garbage. ADM MESSAGE LIBRARY |
XPLATFORM-1630 - Allow control over the initial backing buffer size for embedded Xbuf fields |
This release provides the ability to globally configure the initial backing buffers size for embedded xbuf entities by setting the property: nv.xbuf.fullyQualifiedClassName.initialbackingbuffersize For example: System Property or in DDL DDL To take advantage of this functionality code regeneration is required. When not configured, the default backing buffer size of 256 bytes will continue to be used. ADM MESSAGE LIBRARY |
XPLATFORM-1641 - Implement TransactionLogTool query based transaction repair. |
This release adds a new 'rewrite' command to the TransactionLogTool which writes the contents of a query into new transaction logs. This command can be used to remove 'poison' transaction log entries to allow recovery in situations where the removal of the event doesn't affect recoverability of subsequent entries. See Transaction Log Tool Command Usage TALON TOOLS |
XPLATFORM-1647 - Add autoStopOnLastAppStop as a server config element in DDL. |
This release adds the ability to configure the nv.server.autostop.onlastappstop using the new autoStopOnLastAppStop element in DDL. See DDL Schema Reference (https://docs.neeveresearch.com/display/KB/DDL+Schema+Reference#DDLSchemaReference-\<autoStopOnLastAppStop\>) CONFIGURATION TALON SERVER |
XPLATFORM-1650 - Add XVM admin command for triggering a thread dump |
This story adds the ability to trigger a thread dump via a talon admin command (available through lumino or robin admin clients). TALON SERVER |
XPLATFORM-1651 - Add XVM admin command for triggering garbage collection |
This story adds the ability to trigger garbage collection via a talon admin command (available through lumino or robin admin clients). TALON SERVER |
XPLATFORM-1657 - Add adminClientOutputQueueCapacity as a server config element in DDL |
This release adds the ability to configure nv.server.adminclient.outputqueue.capacity via an adminClientOutputQueueCapacity element on the server in DDL. See DDL Config Reference (https://docs.neeveresearch.com/display/KB/DDL+Schema+Reference#DDLSchemaReference-\<adminClientOutputQueueCapacity\>) CONFIGURATION |
XPLATFORM-1662 - Add MessageBusBindingFailPolicy to DDL |
This release makes the MessageBusBindingFailPolicy a DDL configurable option. See the DDL Reference (https://docs.neeveresearch.com/display/KB/DDL+Schema+Reference#DDLSchemaReference-\<messageBusBindingFailPolicy\>) CONFIGURATION |
XPLATFORM-1663 - Add MessagingStartFailPolicy to DDL |
This release makes the MessagingStartFailPolicy a DDL configurable option. See the DDL Reference (https://docs.neeveresearch.com/display/KB/DDL+Schema+Reference#DDLSchemaReference-\<messagingStartFailPolicy \>) CONFIGURATION |
XPLATFORM-1742 - Implement ability to configure pools from DDL environment |
This release provides experimental support for configuring pools at runtime via the environment or DDL config. This can be achieved by setting properties of the form "nv.pool.<poolKey>.propertyName" where poolKey is: propertyName is one of the bean properties on UtlPool.Params:
For example, pool stats may show stats for the packet backing an XBuf generated message as "packet.MyMessageXbufPacket.71.1.216". The key to use for the pool would thus be "packet.MyMessageXbufPacket.71.1", and the pool could be configured for preallocation in DDL as: HUMMINGBIRD |
XPLATFORM-1743 - Implement ability to configure Xbuf pool parameters at runtime |
This release introduced the ability to configure pools for xbuf generated messages and entities at runtime in the same way that initial backing buffer sizes can be configured (introduced in 3.5) Pooling parameters for Xbuf can be configured as environment properties using nv.xbuf.<fullyqualifiedobjectname>.pool.<propertyName> where: *propertyName* is one of the bean properties on UtlPool.Params:
For example: or in the DDL environment section: Runtime configuration done for xbuf pools takes lower precedence than the general pool configuration mechanism introduced in XPLATFORM-1742. The primary motivation for allow Xbuf pools to be configured in the above fashion XBUF |
XPLATFORM-1749 - Record per transaction latency stats |
This release provides the ability to record message and transaction stats on per transaction basis in a transaction log file. At the expense of additional processing overhead, this provides a means by which more detailed analysis of transaction latencies can be performed than those emitted in histographical summary in server heartbeats. AEP TALON |
XPLATFORM-1757 - Add enqueueTs timestamp to MessageView and persist it in transaction logs |
This release now records the time at which Messages are enqueued on an application's input queue. EnqueueTs is set for any message queued for an application including those received from a message a bus or injected by the application. Like preProcessingTs and outTs, the timestamp is recorded in microseconds. A message's getEnqueueTs() accessor returns the value in milliseconds since the epoch and its getEnqueueTsMicros() returns the value in microseconds since the epoch. Like preProcessingTs, enqueueTs is set on the Primary application instance and is persisted in transaction logs and replicated to backup instances. It is not updated when recovering from a transaction log or on the backup. STATS AND ALERTS TALON |
Improvement
XPLATFORM-1159 - Set more meaninful name for solace producer session threads. |
This release provides better names for threads created by the solace API. The solace api doesn't provide a mechanism for specifying meaningful thread names. In previous releases the Neeve Solace binding would append "X-SMA-<busname>IN" to the solace reactor thread on receipt of the first message. This release now also sets appends "X-SMA<busname>-OUT" on receipt of the first ack to provide a more meaningful name to the producer session thread. SOLACE BINDING |
XPLATFORM-1234 - Allow configuration of Xbuf desync policies |
This release allows global configuration of xbuf generated types desync policy. The desync policy can now be globally configured via: nv.xbuf.default.desyncpolicy=Copy or on a type by type basis via: nv.xbuf.typename.desyncpolicy=FrameFields for example in DDL one might set: Where the valid values are one of Copy, FrameFields or FrameContainer. This release also removes the restriction against calling getXXXUnsafe() for String fields when FrameFields is the desync policy which makes it possible to use FrameFields when application code uses Unsafe accessors. ADM CONFIGURATION MESSAGE LIBRARY XBUF |
XPLATFORM-1644 - Change Solace binding to treat 0 length queue name as null |
This release allows specifying a blank (empty string or whitespace) 'queue_name' solace bus descriptor property. When a blank value is provided it is interpreted to mean that a queue should not be used. This is useful in situations in which a default queue name property is specified for a bus via DDL config, and one would like to override the binding not to use a queue. |
XPLATFORM-1654 - Add displayName attribute to Command, Argument,Option and RemainingArgs annotations |
This release adds the ability to set displayName on the Command, Argument, Option and RemainingArgs annotations. Specifying a display name allows for a better presentation in UI tools such as Lumino TALON SERVER |
XPLATFORM-1676 - Enhance heartbeat thread stats to include affinitization and interval cpu usage |
This release changes the XVM server stats thread to populate the heartbeat fields for individual thread stats with cpu usage, user mode cpu usage, affinitization information and the collection time in nanoseconds. These stats can be used by monitoring tools to determine the number of cycles the thread used in a sampling interval and can help to diagnose problems cpu affinitization configuration. See SrvMonSysIndividualThreadStats Javadoc STATS AND ALERTS |
XPLATFORM-1683 - Implement solace config parameter controlling SMA metadata version |
This release provides the ability to set the property 'sma_metadata_version' on solace binding bus descriptors. This property can be used to control the version of the metadata to tag on the message. The solace binding currently defaults to metadata version 1, which does not include the transmitted message's type id. Setting it uses the current metadata version which does include the type id, but the metadata version used must be supported by all downstream receivers that deserialize it. SOLACE BINDING |
XPLATFORM-1688 - Unchecked exception preparing UnhandledMessageEvent should be caught |
This release improves error handling in the Solace binding to handle the case where there is an issue contructing an UnhandledMessageEvent. With this change:
|
XPLATFORM-1700 - Deprecate IOBuffer.getBuffer() in favor of IOBuffer.takeBuffer()/releaseBuffer() |
XPLATFORM-1702 - Add IOElasticBuffer.getTo(..,IOBuffer,...) |
This release adds the IOElasticBuffer.getTo(index, IOBuffer, bufferOffset, length) method to copy data from an IOElasticBuffer to an IOBuffer |
XPLATFORM-1705 - Enforce RogLog cannot be opened after closed |
Prior to this release, the RogLog did not validate that the open-close-open sequence is not permitted on a log. This release adds that validation. From this release onwards, if one opens, closes and then tries to open a log again, it will throw an IllegalStateException |
XPLATFORM-1712 - Enhance Transaction Log Tool to surface objects in Remove entries. |
XPLATFORM-1010 changed the store transaction log to include the serialized object being removed in Remove entries. This changes the TransactionLogTool and RogLog to surface the removed store objects in RogLog.Entry making the object content available for query. TALON TOOLS |
XPLATFORM-1729 - Add ability to set compaction window size in TLT |
The release provides the capability to set the compaction window size when using the transaction log tool's 'compact' command. TOOLS |
XPLATFORM-1737 - XVM heartbeat logger should not be auto optimized to busy spin. |
This release disables auto optimization of an XVM's binary heartbeat logger so that it doesn't busy spin when nv.optimizefor is latency or throughput. STATS AND ALERTS |
XPLATFORM-1745 - Report pools stats in heartbeats on evicts or when the size hits a new high water mark |
This release changes server heartbeats to include pool stats for a pool if size highwater mark has changed or if there are evicts in a given interval.
|
XPLATFORM-1766 - Improve memory footprint of entity array deserialization for XBUF messages |
Prior to this release, entities in an entity array in an XBUF message were deserialized into objects during the deserialization phase of message receipt. Bursty traffic containing a large number of messages with a large number of entities in the message's entity arrays could result in a large number of entities being in-flight before they are added to their pools. This can result in large pool sizes effectively resulting in large working heap set size even though the active working set of the heap during steady state is a small fraction of the heap. This release fixes this issue. It does so by holding the serialized form of the entity arrays contained in a message until actual access of the entities. The entities are deserialized on demand on invocation of the generated getXXX() entity array accessor or the next() method of the generated getXXXIterator() entity accessor method. A few points to note related to this change
3.7 generated code is not compatible with earlier versions of the X runtime. |
XPLATFORM-1770 - Reduce log level of solace queue provisioning warnings to info level |
This release changes the level of the following solace warning messages to info rather than warn: |
The solace session does not have endpoint management capability. Assuming queue '<queuename>' is already provisioned.
No queue name supplied. Guaranteed message receipt is disabled.
Change
XPLATFORM-1666 - Change solace binding 'sender_cpu_affinity_mask' to 'detached_sends_cpu_affinity_mask' |
This release changes changes the solace binding property for the detached sender cpu affinity mask from 'sender_cpu_affinity_mask' to 'detached_sends_cpu_affinity_mask' so that is is more consistent with the the other 'detached_sends_*' binding properties. The old property is still honored when specified. See SolaceBindingProperties javadoc Applications are encouraged to update the solace binding property for the detached sender cpu affinity mask from ''sender_cpu_affinity_mask' to 'detached_sends_cpu_affinity_mask' |
Bug
XPLATFORM-1667 - High memory usage / pool leaks when intializaing backup member with Xbuf messages containing a large number of embdedded entity fields. |
This release fixes an issue in which Xbuf embedded entities were not being disposed when initializing a backup member from a primary member's transaction log. Failing to dispose the entities during initialization can cause a lot of allocations to occur which can lead to significant garbage collection pauses. XBUF |
XPLATFORM-1670 - Normalize solace binding boolean properties to accept 1/true or 0/false |
This release allows specifying boolean solace bus descriptor properties in either the JCMSP true/false format or the JNI 1/0 formats. The solace binding will now rationalize them appropriately depending on the value of the use_jni property. CONFIGURATION SOLACE BINDING |
XPLATFORM-1674 - "source and dest buffers offsets and copy length must be >= 0" seen in solace binding |
This release fixes an issue in the Solace binding that can occur when detached dispatched is enabled. Prior to this fix, with detached dispatch enabled, it was possible that the the solace reactor thread would dispose the topic it dispatched to the detached dispatch thread before the detached dispatch thread copied it into the channel key field of the message being dispatched to the application. HUMMINGBIRD SOLACE BINDING |
XPLATFORM-1677 - AepEngine's auto created direct bus binding creates a spinning core. |
Prior to this release, An AepEngines would automatically creates a direct bus binding with the same name as the application to avoid the need for boilerplate configuration. However when optimized for latency, this caused a bus manager with a BusySpin thread to be created which ties up an additional core. Consequently, with this release auto creation of a direct binding has been disabled unless the runtime property nv.aep.autocreatedirectbus=true.
AEP |
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-1708 - AEP Engine throws NPE when primary environment provider returns null on recording end (no data recorded) |
Prior to this release, AEP Engine threw an NPE when a primary environment provider returned null on recording end i.e. if no data was recorded. This release fixes that issue. |
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-1739 - Cstart and tleg1 transaction stats are incorrect. |
This release fixes a regression in the cstart and tleg1 transaction latency stats that could cause them to report time spent waiting in the engine's input disruptor. STATS AND ALERTS TALON |
XPLATFORM-1741 - Solace discovery descriptor with embedded protocol results in exception |
This release fixes a bug in discovery over SMA in which a discovery descriptor containing slashes in the address portion (e.g. solace://tcp://solacehost:55555) results in the error "bus name cannot contain '/'" DISCOVERY SOLACE BINDING |
XPLATFORM-1752 - Backup shuts down with last transaction when primary killed before messages replicated |
This release resolve a regresion in Talon that cause the backup instance to shutdown gracefully if a primary crashes before replicating any new transactions to the backup. AEP ODS TALON |
XPLATFORM-1777 - NPE 3.7 using setValuesFrom on XbufRepeatedLongFieldBuffer |
This release fixes a regression that results in a NullPointerException when setting the value of an XbufRepeatedFieldBuffer from another XbufRepeatedFieldBuffer that has not been initialized: java.lang.NullPointerException at com.neeve.io.IOElasticBuffer.putFrom(IOElasticBuffer.java:944) at com.neeve.xbuf.XbufRepeatedLongFieldBuffer.setValuesFrom(XbufRepeatedLongFieldBuffer.java:133) XBUF |