Release Date: Monday, February 05, 2018
Release Highlights
- Beta Introduction of XSQL based query and indexing for StateReplication applications.
- Several new DDL features including support for profiles, templates, xvm specific environment, and provisioning for robin.
- JMS Binding Improvements.
- Improvements in Talon Archetypes.
Compatibility Notes
ADM Compatibility Level: 3.9.1 (Updated) Code generated with this release cannot run with earlier version of the plaform. (see ADM Compatibility Matrix) The Adm Compatibility level last changed in Core X 3.8.126. Code generated with this version of the platform will not be compatible with earlier versions.
The following issues have compatibility implications:
- XPLATFORM-1838 - Allow JMS binding to make connection retry attempts
- XPLATFORM-1900 - Enhance Talon Server Main to include an option to stop a running XVM
- XPLATFORM-1821 - Properties based DDL should fail on unrecognized x.* properties
- XPLATFORM-1903 - Simplify code generated by ADM for collection nodes
- XPLATFORM-1915 - Remove intermediate copy made when calling pooled string factory getter on Xbuf using FrameFields
- XPLATFORM-1805 - Update DDL to allow using <xvms> and <xvm> instead of <servers> and <server>
- XPLATFORM-1823 - Allow lendXXX(XString value) to accept a null XString
- XPLATFORM-1835 - Allow setting JMS Client ID on JMS Binding Connections
- XPLATFORM-1908 - Talon Server Main errorneously sets XVM environment properties as System properties
- XPLATFORM-1886 - Generated XBuf code has a compiler warning on deprecated PktBuffer.create() method
- XPLATFORM-1901 - EmbeddedXVM.create(URL, String, Properties) erroneously sets provided properties as System properties
- XPLATFORM-1916 - Pooled String Factories can ignore the 'threaded' flag causing it to always be set to true
Change Log
- New Feature
- XPLATFORM-1120 - Allow DDL to provide vm scoped <env> section which overrides global env.
- XPLATFORM-1524 - Allow validation of solace queue's configured max bind count
- XPLATFORM-1665 - Add support for DDL config templates
- XPLATFORM-1668 - Add support for DDL config profiles.
- XPLATFORM-1782 - TransactionLogTool compact command should provide an option to specify target log file size.
- XPLATFORM-1786 - Allow registration of custom bus providers in DDL
- XPLATFORM-1793 - Provide ability to pass properties to ADM CodegenListeners
- XPLATFORM-1817 - Provide support for specifying provisioning information in DDL
- XPLATFORM-1837 - Create TibcoEmsMessageBusBinding with support for Guaranteed Messaging
- XPLATFORM-1838 - Allow JMS binding to make connection retry attempts
- XPLATFORM-1839 - Treat empty string variables in dynamic topic as null
- XPLATFORM-1858 - Support programmatic creation of Store indexes in AepEngine
- XPLATFORM-1865 - Provide the ability to configure cluster leader election priority for deterministic startup role
- XPLATFORM-1879 - Provide AepEngine getEngineTimeMicros()
- XPLATFORM-1880 - Update Talon archetypes with new 3.8 config features.
- XPLATFORM-1891 - Implement Store Data Size statistic.
- XPLATFORM-1900 - Enhance Talon Server Main to include an option to stop a running XVM
- XPLATFORM-1907 - Add p/-profiles option to Talon XVM Main
- XPLATFORM-1918 - Include Per Transaction Stats Logger stats in heartbeats
- XPLATFORM-1919 - Include binary heartbeat logger stats in heartbeats
- XPLATFORM-1925 - Default value for maxTraceHistory should be increased to 512 from 256 and configurable via DDL
- Improvement
- XPLATFORM-1783 - Packet log reader should return all valid packets up until point of corruption
- XPLATFORM-1784 - Implement convenience API in Xbuf field to copy serialized form of a field
- XPLATFORM-1785 - Generate method in message/entities that allow for a user to set preserialized fields
- XPLATFORM-1796 - PktHeader subheaders consume unecessary memory
- XPLATFORM-1821 - Properties based DDL should fail on unrecognized x.* properties
- XPLATFORM-1832 - Add diagnostic packet dump for corrupted packets on the store replication connection
- XPLATFORM-1847 - Provide an option to not include every message type in every XVM Hearbeat
- XPLATFORM-1866 - Improved logging of affinitization settings at startup/role change
- XPLATFORM-1884 - nvx-hummingbird and nvx-talon javadoc jars should be published to nexus
- XPLATFORM-1890 - Propagate origin and pre wire timestamps in JMS binding
- XPLATFORM-1892 - Talon Archetypes should use nvx-platform-bom for ease of use
- XPLATFORM-1893 - Talon Archetypes should declare nvx-native dependency
- XPLATFORM-1899 - Create run scripts for archetypes
- XPLATFORM-1903 - Simplify code generated by ADM for collection nodes
- XPLATFORM-1915 - Remove intermediate copy made when calling pooled string factory getter on Xbuf using FrameFields
- Change
- XPLATFORM-1803 - Talon Maven build should use nvx-adm-maven-plugin, and nvx-adm-maven-pluging should not declare nvx-hummingbird as optional
- XPLATFORM-1805 - Update DDL to allow using <xvms> and <xvm> instead of <servers> and <server>
- XPLATFORM-1818 - Channel Filter cleaning should allow common wildcard characters
- XPLATFORM-1820 - Allow configuring DDL config prefix in ddl config properties in addition to the environment
- XPLATFORM-1823 - Allow lendXXX(XString value) to accept a null XString
- XPLATFORM-1834 - nv.sma.cleanchannelfilter should default to false
- XPLATFORM-1835 - Allow setting JMS Client ID on JMS Binding Connections
- XPLATFORM-1845 - Change 'nv.sma.treatemptykeyasnull' to 'nv.sma.treatemptykeyfieldasnull'
- XPLATFORM-1856 - Remove Adm annotation processor.
- XPLATFORM-1908 - Talon Server Main errorneously sets XVM environment properties as System properties
- Bug
- XPLATFORM-1740 - NullPointerException can occur when Store open fails due to role expectation mismatch
- XPLATFORM-1790 - "Encountered orphan slice element on stability (duplicate ack?)" error when mixing solicited and unsolicited sends
- XPLATFORM-1791 - Embedded configuration repository missing from nvx-talon jar
- XPLATFORM-1792 - nvx-platform-maven-plugin execution filter for m2e not filtering xar goals.
- XPLATFORM-1795 - Solace Orphan Subscription Check returns 'response too big: use sequenced get'
- XPLATFORM-1800 - Sender Gateway Archetype is broken
- XPLATFORM-1827 - Direct Binding can lose messages during retransmit.
- XPLATFORM-1828 - Cannot inline an embedded entity into a target that alreadey contains the same field definition as the target
- XPLATFORM-1829 - Outgoing topic corrupted after previous error
- XPLATFORM-1830 - Provide better errror when disallowing ADM Message Inlining
- XPLATFORM-1836 - JMS Binding doesn't clean up connection if there is a failure during open
- XPLATFORM-1842 - Transaction log corruption can occur when log configured with cdcEnabled=true
- XPLATFORM-1877 - System property set on command line does not override env var declared in profile
- XPLATFORM-1883 - xconfig script localizes ${} channel key variables, but it should not.
- XPLATFORM-1886 - Generated XBuf code has a compiler warning on deprecated PktBuffer.create() method
- XPLATFORM-1888 - NullPointerException in XBuf setPreserializedFields method when called with uninitialized buffer
- XPLATFORM-1894 - Archetype generated TestFlow does not work if archetype generated with different app name
- XPLATFORM-1898 - nvx-talon-sr-processor-archetype does not substitute the outbound message name correctly
- XPLATFORM-1901 - EmbeddedXVM.create(URL, String, Properties) erroneously sets provided properties as System properties
- XPLATFORM-1902 - Failed to set store descriptor property 'displayName' when xvm displayName is set in DDL
- XPLATFORM-1912 - Deadlock in XVM when admin client stops trace watch
- XPLATFORM-1913 - The -all flag in StatsDumpTool does not take effect
- XPLATFORM-1914 - When process and cpu load stats are unavailable in system stats they are reported in heartbeats as -1
- XPLATFORM-1916 - Pooled String Factories can ignore the 'threaded' flag causing it to always be set to true
- XPLATFORM-1923 - Commit Queue Size is not being set on the primary
New Feature
XPLATFORM-1120 - Allow DDL to provide vm scoped <env> section which overrides global env. |
This release provides the ability to specify XVM specific <env> properties in config DDL. For example: Would result in the XRruntime for server-1 ending up with:
CONFIGURATION |
XPLATFORM-1524 - Allow validation of solace queue's configured max bind count |
This release introduces the ability to validate and enforce the value of a solace queue's max bind count when starting a solace message bus binding by setting See Enforcing Max Queue Bind Count in the Talon Manual for more details SOLACE BINDING |
XPLATFORM-1665 - Add support for DDL config templates |
This release provides the ability for DDL config to define template apps, buses and xvms that can provide base configuration shared by multiple applications. For example in the following DDL snippet tracing configuration is defined in the "app-template" which is referenced by the ems1 app which inherits that configuration. See DDL Config Reference for more details
CONFIGURATION |
XPLATFORM-1668 - Add support for DDL config profiles. |
This release introduce DDL profiles as a new configuration feature. DDL profiles allow defining overlay configuration directly inside a the <profiles> section of a DDL. DDL profiles can be activated explicitly or via the profile's <activation> element which support the ability to automatically activate a profile based on environment variables. In the above code snippet if DDL is parsed with -Dnv.ddl.profiles=troubleshooting, the configuration defined in the troubleshooting profile will be overlaid on top of the main configuration. See DDL Config Reference for more details.
CONFIGURATION |
XPLATFORM-1782 - TransactionLogTool compact command should provide an option to specify target log file size. |
This release enhances the Transaction Log Tool's compact command to allow specifying the initial length of the new file into which to compact by using the '-i initialLogSizeBytes' option flag. ODS TALON TOOLS |
XPLATFORM-1786 - Allow registration of custom bus providers in DDL |
This release allows registration of custom message bus providers in DDL which allows custom message bus binding implementation to be used with out having to register the messaging provider programatically. See: Message Bus Provider Configuration CONFIGURATION SMA |
XPLATFORM-1793 - Provide ability to pass properties to ADM CodegenListeners |
This release implements the ability to pass properties to an ADM codegen listener via the maven plugins. Below is example of passing properties Properties can then be accessed by the listener via the event passed to it: ADM MAVEN PLUGINS |
XPLATFORM-1817 - Provide support for specifying provisioning information in DDL |
This release provides the ability to specify provisioning information in DDL Config. For example: This allows provisioning tools such as Robin or Lumino to leverage configuration directly from DDL rather than relying on additional files such as <xvmname>.jvmparams or <xvmname>.env For more information see DDL Config Refefence
CONFIGURATION |
XPLATFORM-1837 - Create TibcoEmsMessageBusBinding with support for Guaranteed Messaging |
This release provides a tibco ems message bus binding provider that supports Guaranteed Qos. The ems provider can be enabled by replacing the jms://... with tibems://. JMS BINDING |
XPLATFORM-1838 - Allow JMS binding to make connection retry attempts |
This release changes the JMS to allow it to make connection retry attempts when the initial connection attempt to the broker fails. Prior to this release, only a single connection attempt would be made which may not be enough in the event that the message broker has not detected the connection drop of a primary application instance when a backup takes over. Two new binding properties were introduced to support this functionality:
|
See Also: The Talon Manual
XPLATFORM-1858 - Support programmatic creation of Store indexes in AepEngine |
This release introduces beta APIs for using indexes and querying from Talon applications. The Javadoc for AepEngine class provides more information. QUERYING |
XPLATFORM-1865 - Provide the ability to configure cluster leader election priority for deterministic startup role |
This feature allows user to configure the preferred cluster primary when starting a cluster by configuring an election priority for the store as follows. When 2 members connect and either instance is equally eligible to assume the primary role this knob gives priority to the member with the lowest configured priority ODS |
XPLATFORM-1879 - Provide AepEngine getEngineTimeMicros() |
This release provides a new AepEngine method, getEngineTimeMicros(), which returns the wall time in microseconds since the epoch in an HA consistent fashion. This method is akin to the existing getEngineTime() method. See AepEngine.getEngineTimeMicros() AEP |
XPLATFORM-1880 - Update Talon archetypes with new 3.8 config features. |
This release updates the Talon archetypes to leverage the new DDL config features for templating and profiles. MAVEN ARCHETYPES |
XPLATFORM-1891 - Implement Store Data Size statistic. |
This release enhance the ODS store to track the total size of data that it holds and emit it along with store statistics in heartbeats. The store data size statistic captures the sum of serialized data size of the objects that it holds. This is a useful metric for determining the size of the data held in the store exclusive of java object overhead. See Also: |
XPLATFORM-1900 - Enhance Talon Server Main to include an option to stop a running XVM |
This release allows shutting down a Talon XVM using the Talon XVM Entrypoint class (com.neeve.server.Main) by specifying the option '-a shutdown'. For example, if an XVM was started with If can be subsequently shutdown gracefully using: Compatibility Notes: Note the -a / --action option replaces the former deprecated option -a which used to allow specifying an app descriptor to launch. This release formally removes support for specifying an app descriptor. |
Improvement
<15,7868,MyComputer> 20171101-14:25:48:192 (sev)...Corrupted packet dump written to C:\Users\Admin\AppData\Local\Temp\PktCorruption6937598095008127104.dump <15,7868,MyComputer> 20171101-14:25:48:192 (wrn)...Failure during read/deserialize/dispatch [com.neeve.pkt.EPktCorruptException: deserialization error: corrupt data stream [invalid header magic number: 56493]]. Failing endpoint... <15,7868,MyComputer> 20171101-14:25:48:192 (wrn)...com.neeve.pkt.EPktCorruptException: deserialization error: corrupt data stream [invalid header magic number: 56493] at com.neeve.pkt.PktHeader.preDeserialize(PktHeader.java:352) at com.neeve.pkt.PktFactory.createPacket(PktFactory.java:1126) at com.neeve.link.network.LnkNwPeerEndpointInputBuffer.readDeserializeAndDispatch(LnkNwPeerEndpointInputBuffer.java:267)
Change
- Solace Binding: A '>' will not be replaced if it represents the whole topic level and a '*' will not be replaced if it is the last character in the topic level.
- Loopback Binding: A filter level of "..." will not be replaced nor will a '*' found anywhere in the topic level.
- ActiveMQ JMS Binding:: A filter level of ">" or "*" will not be replaced if they represent the whole topic level.
Otherwise any characters that are not alpha-numeric will be replaced.
The environment property nv.sma.cleanchannelfilter was introduced in 3.7 to allow illegal characters to be replaced with an '_' when applying channel filters in the same fashion that such characters are replaced during channel key resolution. The default value of this property in 3.7 was defaulted to the value used for nv.sma.cleanmessagekey with the rationale that applications would most likely want to clean filters if they are cleaning keys, but it is not necessarily true that all application would want to clean filters since it has more control over how channel filter values are set vs. those values resolved from a message.
Bug
java.lang.InternalError: Failure encountered while shutting down ODS event link container reader thread java.lang.NullPointerException...
XPLATFORM-1912 - Deadlock in XVM when admin client stops trace watch |
The prior release had a bug in which it could experience a deadlock if an admin client (such as a Robin controller or Lumino agent) stops a trace watch while the XVM is sending trace to the client. This release fixes this issue. |
XPLATFORM-1913 - The -all flag in StatsDumpTool does not take effect |
This release fixes an issue in which the -all flag for StatsDumpTool is not being applied. Prior to this fix the StatsDumpTool would display stats for administrative applications regardless of whether or not this flag was specified. STATS AND ALERTS TOOLS |
XPLATFORM-1914 - When process and cpu load stats are unavailable in system stats they are reported in heartbeats as -1 |
This release changes heartbeats not to include system cpu load and process cpu load on heartbeats when they are not available. Prior to this release they would be set to -1 (when running in JDK 6 where these stats are not available) STATS AND ALERTS |
XPLATFORM-1916 - Pooled String Factories can ignore the 'threaded' flag causing it to always be set to true |
Prior to this release the threaded parameter of PooledStringType.newFactory(name, length, pooled, preallocateCount, threaded, isNative) is ignored and instead the Factory is always treated as thread. This release fixes this issue. This issue did not affect pooled string factories created via PooledStringType.newFactory(final String name, final Map<String, Object> props). For applications that create pooled string factories using the method described above and passed a value of false for threaded, the underlying pool will no longer be threadsafe. This could affect applications that were using the pool (acquire/dispose) from multiple threads. |