Release Notes

UM Version 6.9

The most significant update to UM version 6.9 is the introduction of certificate-based security (authentication and encryption).

Warning
  Due to a serious bug in UM 6.9 and 6.9.1, users of LBT-RM and LBT-RU transports are strongly advised to upgrade to 6.9.2 as soon as possible. The bug causes a crash (fatal assert) after approximately 4 billion datagrams are sent on a transport session.

Attention
  There are some special upgrade instructions for UM versions 6.8 and beyond that will affect a small percentage of users upgrading from pre-6.8 versions of UM. See Special Upgrade Instructions for 6.8. For general upgrade instructions, see Upgrade Procedure. You are also advised to inspect the full list of Deprecations.

# Enhancements for 6.9 <-

## Streaming Enhancements for 6.9 <-

The following new features and enhancements apply to UMS, UMP, and UMQ products.

- TCP-based communication can now enable compression and/or encryption. Other protocols (udp, multicast, etc.) are not supported for compression or encryption at this time. See Encrypted TCP.

- The LBT-RM transport type now supports a "zero-copy" API for sending messages. See Zero-Copy Send API.

- The LBT-RM transport type now supports high-resolution timestamps for packet transmission and reception for customers using Solarflare network interfaces and the Onload driver. See High-resolution Timestamps.

- Performance has been improved for sending messages on all transport types by reducing use of dynamic memory. This reduces the send time and also reduces the variance of send times ("jitter").

- Added two new APIs to Java: com::latencybusters::lbm::LBMMessage::getSerializedResponse and com::latencybusters::lbm::LBMContext::respond, as well as a new class: com::latencybusters::lbm::LBMSerializedResponse. These provide a way to receive a UM request, serialize the response object, and then send the response, possibly via a different context.

## Persistence Enhancements for 6.9 <-

The following new features and enhancements apply to UMP and UMQ products.

- An API has been added to start and stop a store from inside an application process. See Callable Store.

- The store has been enhanced to log thread IDs for each of its internal threads. The log messages are of the form '`Store-8079-x`'.

- The Receiver-paced Persistence feature now supports blocking and non-blocking receivers. See RPP: Receiver-Paced Persistence.

## Queuing Enhancements for 6.9 <-

The following new features and enhancements apply to the UMQ product.

- None.

## Dynamic Router Enhancements for 6.9 <-

The following new features and enhancements apply to the Dynamic Routing Option (DRO).

- Peer links may now be compressed and/or encrypted.

# Fixed Problems and Limitations for 6.9 <-

## Streaming Fixed Problems and Limitations for 6.9 <-

The following bug fixes apply to UMS, UMP, and UMQ products.

Change Request | Description
--- | ---
9759 | The UM Log Messages chapter of the "Operations Guide" did not correctly order messages numerically. For example, "Core-1234-10" would come before "Core-1234-9". The order has been corrected.
9484, 9566 | UM generally reacts to an exhaustion of dynamic memory (heap) with a warning, and attempts to continue execution in a crippled manner. UM has now been changed to react to exhaustion of dynamic memory by triggering a fatal assertion.
9582 | When the C API lbm_register_fd() is used to register a socket, and an event queue is used to deliver socket events, there is a race condition that can cause delivery of a spurious read event. An application that responds by doing a blocking read can experience an unbounded block. A non-blocking read can return no data. UM now effectively prevents this spurious read event.
9625 | When the resolver_unicast_daemon (context) option is read multiple times with the same '`IP:PORT`' combination, the context adds multiple references to that lbmrd, leading to wasted resources, potentially exhausting ports in the unicast resolver UDP port range. UM now detects duplicate IP:PORT and maintains a single reference to that lbmrd.
9672 | The multiple_receive_maximum_datagrams (context) configuration option enables the use of recvmmsg() to improve the efficiency of reading UDP data. However, multiple datagrams were not actually read. No improper behavior results, but the potential efficiency improvement is not delivered. UM now properly enables reception of multiple datagrams.
9591 | Under some circumstances, when using the epoll form of FD management, the operating system can return an error to UM that UM does not know how to handle. UM has been triggering a fatal assertion in these cases. Further testing has suggested that some of these unexpected statuses can be benign. So UM has now been changed to use warning asserts when epoll returns an unexpected bad status.
9654 | Fixed a potential crash with Windows Completions Ports due to memory corruption during a TCP disconnect.

## Persistence Fixed Problems and Limitations for 6.9 <-

The following bug fixes apply to UMP and UMQ products.

Change Request | Description
--- | ---
9115 | The store now prints BOS and EOS events to its log.
9276 | If an RPP store configured for reduced FD storage fails and restarts immediately after a receiver registers, that receiver will sometimes lose messages. Fixed by ensuring that the restarted reduced FD store starts at the correct sequence number.
9626 | When the ume_store (source) and/or ume_store_name (source) configuration option is read multiple times referring to the same store, the context adds multiple references to that store, leading to wasted resources. UM now detects duplicate stores and maintains a single reference to that store.

## Queuing Fixed Problems and Limitations for 6.9 <-

The following bug fixes apply to the UMQ product.

Change Request | Description
--- | ---
9494 | UMM did not include the option umq_queue_activity_timeout (context). It has been added.
9555 | When the C API lbm_rcv_topic_attr_setopt() is used to set a value for umq_ulb_source_activity_timeout (receiver), the value was not set correctly. Note that using text-based configuration files worked correctly for that option. The C API function is now corrected.
9640 | When the broker configuration option is read multiple times referring to the same broker, the context adds multiple references to that broker, leading to wasted resources. UM now detects duplicate brokers and maintains a single reference to that broker.

## Dynamic Router Fixed Problems and Limitations for 6.9 <-

The following bug fixes apply to the Dynamic Routing Option (DRO).

Change Request | Description
--- | ---
8880 | DRO daemons using dual-tcp peer links with non-"select" FD management types might issue many '`Core-5688-3808...`' log messages. The Router now hard-codes peer links to use select for Unix and wsaeventselect for Windows. This avoids the errors.
9694, 9688 | A race condition can cause a portal to become deadlocked and not pass traffic. The portal locking has been corrected.

# Special Upgrade Instructions for 6.9 <-

There are no upgrade instructions specific to 6.9. However, if you are upgrading from a version prior to 6.8, then you must examine the Special Upgrade Instructions for 6.8.

Also see Deprecations.