Bug
- [XPLATFORM-145] - Rationalize array getter behavior in generated code
- [XPLATFORM-146] - clearXXX() in proto generated messages/objects does not clear cached variable for entity/arrays
- [XPLATFORM-164] - Solace JNI binding should not fail if metadata/timestamps not present in header
- [XPLATFORM-169] - Entity Array Fields of proto generated messages are lost if not read before replication
-
[XPLATFORM-178] - MessageBus memory leak during engine close while messaging is starting
A new MessagingState.Starting state has been added to the AEPEngine to allow message buses to be cleaned up if the engine is stopped while messaging is started. The engine's messaging state transitions from MessagingState.Init to MessagingState.Starting while messaging is started.
- [XPLATFORM-128] - Enhance Xbuf, Proto, Json code generation to enable serialize/deserialize to/from byte bufers
- [XPLATFORM-154] - NullPointerException in Stats.stopPeriodicOutput()Addressed an issue in which Stats.stopPeriodicOutput() can throw a NullPointerException due to a race condition in the thread shutdown.
Improvement
-
[XPLATFORM-63] - Large memory footprint by state
Generated state entities were optimized so as to discard the cached protobuf encoded message used for replicating the object, and some internal entity constant fields were changed to be static to avoid per instance overhead for a savings of 4 bytes per entity field.
Regeneration of protobuf models is required with this change -
[XPLATFORM-143] - Change packet body type from short to int
This change required changes to the wire format of messages and entities. As such this build will not be backwards compatible with prior builds/version of the platform; recovery from old rdats will not work and this version will not be able to exchange messages with prior versions.
- [XPLATFORM-148] - Change ADM to accept field id as a short field
- [XPLATFORM-163] - Add ability to enable Solace runtime logging for JNI binding
-
[XPLATFORM-179] - When a localIfAddr for the native store binding is set it should be used to create connections to peers
Specifying localIfAddr on the native store binding will now cause the interface to be used for connects to other members not just as the for the listening for connects.
- [XPLATFORM-184] - Add engine injection to server app load
New Feature
- [XPLATFORM-173] - Conditional Sync in AEP Engine
- [XPLATFORM-174] - Mark and enforce messages as read only post return from message handler and sendMessage()
- [XPLATFORM-176] - Prevent inbound or outbound messages from being sent outbound
-
[XPLATFORM-79] - LogTool and LogReader now allows reading entries without full deserialization
To avoid eager deserialization of messages or entities read using RogPersister.LogReader, you may now call setLazyDeserialization with a value of true. The payload will only be deserialized when requested.
Additionally, to avoid deserializing the payload for operations involving a node's metadata you may call LogReader.Entry.getMetadata which will deserialize metadata independently from the message or entity.
From the Log Reader command line tool you may call deserializeto control this behavior, behavior of the tool has been optimized to avoid deserializing the payload, instead relying on metadata where possible.
Story
- [XPLATFORM-119] - Message Quarantine in JNI Binding
-
[XPLATFORM-120] - Log State Divergence Tools in LogRogReader tool
A beta version of the log divergence tool is now available as part of the log tool. It allows a user to compare the currently opened log against another log.
compare
Compares state from the currently opened state replication log to that of another.
Usage:
compare [-h] [-v] [-m]
[<-h|--help> Displays this help message (default='false')]
[<-v|--verbose> Whether to dump comparison information for debugging purposes (default='false')]
[<-m|--metadata> Indicates that platform metadata should be considered as well (default='false')]
name: The name of log to compare relative to the current working directory (no .log suffix) -
[XPLATFORM-65] - Batch (Offline) Log Checkpointing for State Replication Logs
You may now call RogPersister.checkpoint to checkpoint a state replication recovery log file. Currently this will compact all stabilized state updates into a series of Put operations and appends the non stabilized entries to the end of the log. You may optionally back up the existing log and replace it with the checkpointed log or write the checkpointeded file as a new file.
- [XPLATFORM-119] - Message Quarantine in JNI Binding
- [XPLATFORM-26] - Graceful cluster shutdown for SR