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-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-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
This change does not affect the behavior of an entity array's generated setter methods
An entity array's getXXX() generated accessor continues to not be a zero garbage accessor. However, with this change, the amount of garbage generated by this method will increase. The increased garbage is released to the garbage collector immediately after the invocation of the getXXX() method as soon as the caller releases its reference to the returned entities. Compatibility Notes:
Code generated by versions prior to 3.7 will continue to work with the 3.7 runtime. However, in such a configuration, the getXXXIterator() will not be zero garbage. Messages need to be regenerated using 3.7 code generator for the getXXXIterator() to be zero garbage
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.
SOLACE BINDING
XPLATFORM-1772 - Solace binding should not display warning messages about known binding properties
Common (non solace specific) bus binding properties such as 'auto_add_catchall_channel' are currently flagged by the solace binding by logging a warning indicating that the properties are unknown solace properties that will be ignored and not passed to the underlying solace layer.
Because these properties are valid properties for configuring the generic portion of the binding logging warnings is not necessary.
SOLACE BINDING
XPLATFORM-1773 - Solace binding should not display warning messages about known discovery properties
When solace is used as a discovery provider discovery properties such as 'maxEntityAge' are currently flagged by the solace binding by logging a warning indicating that the properties are unknown solace properties that will be ignored and not passed to the underlying solace layer.
Because these properties are valid properties when solace is is used as a discovery provider logging warnings is not necessary.
DISCOVERY
SOLACE BINDING
Change
XPLATFORM-1648 - Add nvx-adm-maven-plugin to replace nvx-core-maven-plugin
This release deprecates the nvx-core-maven-plugin and provides a new plugin nvx-adm-maven-plugin to replace it. nvx-core-maven-plugin continues to be supported, but is likely to be dropped in a future release, so users should update their poms to use nvx-adm-maven-plugin instead.
ADM
Compatibility Notes:
It is recommend that usage of nvx-core-maven-plugin in maven poms be replaced with nvx-adm-maven-plugin
XPLATFORM-1758 - Change to record preProcessingTs and outTs to microsecond precision in transaction logs.
This release changes the resolution of the preProcessingTs and outTs timestamps stored in transaction logs to use a microsecond resolution timestamp obtained from UtlTime#nowSinceEpoch(). The existing timestamps accessors getPreProcessingTs() and getOutTs() continue to return a millisecond resolution timestamp for backwards compatibility; this change adds additional accessors getPreprocessingTsMicros() and getOutTsMicros() to return the number of microseconds since the epoch.
Thus one can query the timestamps in either resolution with the TransactionLogTool as follows:
As these timestamps are stored in transactions logs, this change required a bump in their serialization version. Consequently, transaction logs created with this version can not be read by earlier versions of the platform.
STATS AND ALERTS
TALON
Bug
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.