Release Highlights
- Support for Log Querying: See Querying Transaction Logs
- Command Line Log Tool Enhancments: See Transaction Log Tool Command Usage
- Alternate Encoding Support
- AepEngine Statistics Enhancements.
Release Notes - Core X - Version 1.3.218
Improvement
- [XPLATFORM-186] - Allow store name to be specified in store URL
- [XPLATFORM-206] - Fetch command handler containers after injecting engine descriptor
- [XPLATFORM-207] - Bubble up CCSMP error sub code in exceptions thrown by solxf
- [XPLATFORM-220] - Protobuf message and builder are present in replicated/recovered entities State entries that are added to result in both a protobuf builder and message object being cached in the backup object which results in additional memory overhead. This change avoid creating the builder object for recovered and replicated entities. And additionally supports the new global system property –Dnv.optimizeMemoryUsage=true that allows one to convert the protobuf message into a protobuf builder instead. The builder is more memory efficient, but the conversion can slow down replication and recovery reducing throughput and increasing latency.
After applying this change you must regenerate ADM generated entities as they were changes to the code generator. - [XPLATFORM-221] - Avoid reserialization of inbound messages for Event Sourcing Introduced performance optimization to use the received serialized byte [] or ByteBuffer received via a MessageBusBinding when replicating inbound messages, thus avoiding reserialization costs.
New Feature
- [XPLATFORM-75] - X Support for alternate encoding types An IRogRawMessage interface was introduced to allow processing of arbitrarily encoded opaque message payloads which can occur when receiving data from external messaging participants. An IRogRawMessage can be created from a built in message factory with id MessageViewFactory.VFID_ROG_RAW:
ByteBuffer rawData = ByteBuffer.allocate(200); MessageViewFactory factory = MessageViewFactoryRegistry.getInstance() .getMessageViewFactory(MessageViewFactory.VFID_ROG_RAW); IRogRawMessage message = (IRogRawMessage ) factory.wrap(MessageView.ENCODING_TYPE_BYTEBUFFER, rawData);
The payload of such a message is transported as is and is treated as an opaque blob from a platform standpoint. - [XPLATFORM-187] - Allow Talon app command handlers to be in non-main app class
- [XPLATFORM-201] - Implement connection and session pooling for outbound traffic in JMS binding
- [XPLATFORM-205] - Implement support to zero out recovery log on initial creation
- [XPLATFORM-216] - Implement Transaction Leg Stats
Story
- [XPLATFORM-83] - Create a user-friendly query client The xlogtool command line tool now supports the ability to open multiple logs simultaneously and run queries against one or more of the opened logs. To support both query and log browsing in the tool the tool effectively operates in two modes that dictate the effect of issued commands. You can use the switch command to switch between open logs and query mode.
- [XPLATFORM-136] - Add ContentEncodingType to packet headers COMPATIBILITY: The addition of content encoding type to packet headers affects compatibility; after applying this change it will not be possible to communicate with older version peers which won't understand the new format.
- [XPLATFORM-192] - Event Sourcing Log Divergence detection tool The xlogtool (RogLogTool) now additionally supports entry by entry comparison of non state replication logs via the compare command which can be used to check for log divergence. Output diff is now presented in a tabular format optionally in csv. The diff output can also be dumped to a file in html, csv, or text tabular format. Run the xlogtool and issue 'help compare' for usage.
- [XPLATFORM-217] - Add uniform timestamp field on log entries to allow interleaving results from multiple logs Store journalling was updated to persist the timestamp of logged messages and store entries which required an increase in the wire version serialization version for persisters and ICR senders/receivers. After applying this change older versions won't be able to parse rdat logs and older ICR receivers must be upgraded in tandem with senders.