Release Notes

UM Version 6.0

The most significant update to UM version 6.0 is the introduction of the Dynamic Routing Option (DRO). The DRO component fully replaces the "Gateway" component, which is discontinued as of UM 6.0. See the Dynamic Routing Guide for full information.

Warning
  UM version 6.0 does not interoperate reliably with any previous version of UM. It was not until UM version 6.7 and beyond that interoperability was introduced between the 6.x version line and the 5.x version line.

# Enhancements for 6.0 <-

## Streaming Enhancements for 6.0 <-

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

- The receiver configuration options retransmit_request_generation_interval (receiver) and otr_request_duration (receiver) have been deprecated. Late join and OTR now track a total duration for each message that begins when a receiver sends the first retransmission request for the message. See retransmit_request_message_timeout (receiver).

- Linux platforms now automatically produce a backtrace listing to the log file upon encountering a fatal assertion.

- Added the following configuration options to help control receiver start-up traffic:

  - late_join_info_request_interval (receiver)
  - late_join_info_request_maximum (receiver)
  - transport_topic_sequence_number_info_request_interval (receiver)
  - transport_topic_sequence_number_info_request_maximum (receiver)

- Network Address Translation with the Unicast Resolver Daemon (lbmrd) using LBT-RU with Session IDs is now enabled. Previously this combination only worked with Session IDs disabled.

- The context setting network_compatibility_mode (context) has been disabled. Specifying it does not cause an error, but it will be ignored.

- Added TCP Session IDs to prevent the use of outdated data in the Topic Resolution Cache. You enable session ids for TCP with the configuration option transport_tcp_use_session_id (source).

- Removed a fatal assert that was produced if a message was delivered from a TSNI request.

- The Off-Transport Recovery (OTR) feature has been updated to include a new option otr_message_caching_threshold (receiver) and to use option retransmit_message_caching_proximity (receiver), both of which provide ways to control receiver buffer growth and otherwise premature unrecoverable loss declarations. Also, option otr_request_duration (receiver) is deprecated and replaced with the new option otr_request_message_timeout (receiver).

- The Late Join option retransmit_request_generation_interval is deprecated and replaced with new option retransmit_request_message_timeout (receiver). The new option defines an RX give-up interval on a per-message basis.

## Persistence Enhancements for 6.0 <-

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

- Proactive Retransmissions - This feature address two types of loss:

  - Loss of message data between the source and a store.
  - Loss of stability acknowledgments (ACK) between the store and the source.

  See Proactive Retransmissions in Chapter 8 of the UM Guide for Persistence. This feature also resolves the Known Issue: "UMP stores sometimes fail to send message stability acknowledgements to sources for messages sent while the store was being reported unresponsive by the source."

- The persistence registration process has been improved for greater reliability, efficiency and to better inform receivers of store registration changes. Persistence now sends store registration information over the transport and not via Topic Resolution advertisements. Several new configuration options have been added to tune registration latency/bandwidth usage.

- Added the following configuration options to help control receiver start-up traffic.

  - ume_sri_request_interval (receiver)
  - ume_sri_request_maximum (receiver)

- The ume_store (source) configuration option now accepts an optional DomainID parameter.

- Made context name resolution more efficient. Several new UM configuration options have been added to tune context name resolution. Context name resolution now has the potential to quiesce over time. New log messages have been added to facilitate duplicate context name detection. For more information, see:

  - Store (context) Name Resolution
  - Identifying Persistent Stores

- The store option retransmission-request-forwarding is now interpreted differently. If enabled (value = 1), the store forwards retransmission requests to sources (if and only if it does not have the data). If disabled (value = 0), the store never forwards requests to sources.

- Enhanced the proxy source election process in the following ways:

  - Proxy source elections can now occur among stores located in different topic resolution domains when using the DRO.
  - The election now occurs as part of the registration process instead of over the topic resolution channel, so it is more bandwidth efficient.
  - The election process no longer restarts in the event of a tie, so it will always complete in a deterministic amount of time.

  This update also resolves the Known Issue: "Persistence proxy source elections can only occur among stores in the same topic resolution domain connected directly via peer links."

- The persistent store no longer logs Beginning of Session (BOS) and End of Session (EOS) events.

- When a store restarts, the store now renames and stores state and cache files that are thought to be corrupted instead of deleting them. These files will be renamed from '`<regid>-<state/cache>`' to `<regid>-<state/cache>.<pid>.<month_day_year>`. Persistent stores the files in the same cache/state directories as specified in the store's configuration file.

- A rare error case that occurred when handling a keepalive at the persistent store now logs a warning instead of fatal assert.

- Changed the Persistent Store (umestored) to ignore UM Spectrum configuration options which results in the delivery of all messages to the store without any filtering. See Spectrum.

## Queuing Enhancements for 6.0 <-

Note
  The brokered queuing and UM JMS functionalities were replaced in version 6.8, so most of these notes do not apply to more-recent versions of UM. However, ULB functionalty is retained.

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

- Added support in Ultra Messaging JMS for store names in the JMSConfig.xml so that UM JMS can be configured to work with the DRO for UMS/UMP functionality.

- Wildcard topics can now be created programmatically in Ultra Messaging JMS. Use '`<FactoryAttributes>`' in either a UM Configuration File or the JMSConfig.xml file support this new feature.

  - wildcards_enabled
  - wildcard_type
  - wildcard_enterprise_mode - Provides compatibility with other JMS vendors. If the topic name contains "*" or ">", UM JMS creates a PCRE wildcard topic pattern. For example, the topic '`PRICE.STOCK.*.IBM`' creates a wildcard receiver with a topic pattern of '`^PRICE\.STOCK\.[^/]+\.IBM$`'.
  - wildcard_um_values - If the topic name contains any of the characters:
    `[ \ ^ $ . | ? + ( ) { } *`
    UM JMS creates a PCRE wildcard topic pattern.
  - The option '`wildcard_enterprise_wildcard_delimiter`' supports any character as a delimiter except:
    `[ \ ^ $ . | ? + ( ) { } *`

- Changed the "wait for source registration" Ultra Messaging JMS functionality to apply to send calls rather than source creation. The two relevant config options (`wait_for_source_registration` and `SOURCE_REGISTRATION_TIMEOUT`) are no longer considered during source creation but instead cause a producer to (optionally) have a send call block until source registration occurs. This change removes the need for the producer to explicitly handle the "not registered" exception that would otherwise be thrown and need to be handled by the application. The existing Ultra Messaging JMS configuration option '`SOURCE_CREATION_DELAY`' has not been changed.

- The UM JMS source code examples have been moved out of the '`<platform>/jmsclient/bin`' directory and up to the '`<platform>/example`' directory.

- Changed the store names in the JMS config.xml file from uJMSStore1, uJMSStore2 and uJMSStore3 to JMSStore1, JMSStore2 and JMSStore3. Also renamed the Queue from uJMSQueue to JMSQueue.

## Dynamic Router Enhancements for 6.0 <-

UM 6.0 is the first version which offers the Dynamic Routing Option (DRO). See the Dynamic Routing Guide for full information.

# Fixed Problems and Limitations for 6.0 <-

## Streaming Fixed Problems and Limitations for 6.0 <-

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

- Corrected a problem with UM rate controls that resulted in rate limits being applied unequally among more than one transport session. Limits are now applied equally to all active transport sessions.

- Changed the implementation of the default value for mim_sqn_window_increment (context) to match the documented value of 8192, which is the recommended default.

- Corrected a problem with plain text (non-XML) UM configuration files greater than 1024 bytes that when loaded via a URL (http or FTP) would result in line malformed errors. This fix resolves the Known Issue: "Retrieving plain text (not XML) configurations files via an http or FTP request is limited to configuration files of 1K in size..."

- Fixed a problem on Microsoft Windows where an interface could be incorrectly chosen internally as the default interface even though its operational status was not "up".

- Corrected an invalid single-byte memory write that could occur if passing in a named interface setting into any of the *_interface configuration options.

- Corrected calls to socket '`recv/recvfrom`' that were not correctly handling EWOULDBLOCK/EAGAIN errors. This has been resolved.

- The following Known Issue was resolved in UM 5.3.1 but mistakenly omitted from the list of Bug Fixes: "The .NET API does not support message selectors with Unicode symbols and causes receiver creation to fail."

- Fixed a problem that could cause a crash while binding TCP ports.

- Fixed a '`[msg==NULL]`' fatal assert that could occur if an application received a response to a Late Join Information request that contained a message, and not Late Join Information.

- Corrected an issue with an event queue that could contain events, but never be dispatched. This issue could occur only on the AIX and NonStop platforms.

- Corrected a problem with receivers that produced Unrecoverable Loss if UM delivered a TSNI to the receiver during Late Join recovery.

## Persistence Fixed Problems and Limitations for 6.0 <-

The following bug fixes apply to UMP and UMQ products.

- Fixed a problem that logs a keep alive sent from a store during UMP source de-registration as an error. This event no longer logs an error in the store log file.

- Fixed a condition that could cause sources with high `retransmit_request_size_threshold/limit` settings to experience high CPU usage when a store daemon (umestored) was restarted.

- Fixed a problem that could cause a crash if a source tried to de-register from a store with which it had never registered or whose context name had not been resolved.

- Fixed the incorrect retention of the receiver-specified ume_activity_timeout (source) and ume_state_lifetime (receiver) values across store restarts. The receiver-activity-timeout configured in the stores' XML configuration file was used instead and the receiver-state-lifetime was ignored. Stores now correctly save receivers' configured activity timeout and state lifetime and use the saved values upon store restart.

- Resolved the Known Issue: "The UMP store daemon, umestored, stops persisting messages to disk if the store has a loss condition which is not resolved prior to an EOS event..."

- Corrected a problem that caused segfaults during long running store recoveries by delaying the store's check of sources if the store has not yet finished initializing.

- Fixed an issue that occurred if the store index was uninitialized when a de-registration success event was delivered.

- Fixed a bug that could prevent a receiver from successfully deregistering from a store.

- Corrected a problem that prevented receivers from declaring completed deregistration although the receiver successfully deregistered from all the stores with which it was registered. Now a receiver declares completed deregistration as soon as it receives deregistration success from all the stores with which it was registered.

- Corrected a number of problems with UMP Proxy Source Elections that resulted in numerous failed assertion warnings and the continuous creation and duplication of proxy sources.

- Corrected a problem with source re-registration to a store that caused the store to incorrectly log warning messages such as, "Core-5688-1881: handle events returned error 4" and "CoreApi-5480-28: could not insert rcvdc_loss_rec ASL map."

- Corrected a problem with the persistent store operating in RPP mode that caused a fatal assert if the store restarted with a prematurely ending cache file.

- Corrected a problem that caused a store to perpetually send TSNI requests to a source at the configured retransmit_request_interval (receiver), even after live data was seen on the transport.

- Fixed a problem with sending large messages using message properties that could cause a crash due to message reclaim source events.

- Corrected a problem with the umestored daemon that resulted in the premature deletion of source state information if umestored was restarted. If the source had an active receiver before umestored was shut down, the configured source-state-lifetime was not restored, so the default lifetime of 0 seconds and default source-activity-timeout of 30 seconds was enforced.

## Queuing Fixed Problems and Limitations for 6.0 <-

Note
  The brokered queuing and UM JMS functionalities were replaced in version 6.8, so most of these notes do not apply to more-recent versions of UM. However, ULB functionalty is retained.

The following bug fixes apply to the UMQ product.

- Corrected a problem with UM JMS that caused a JMSExcpetion when using lower case variants of the '`ConnectionFactory`' attributes `receiver_creation_delay`, '`source_creation_delay`', and `source_registration_timeout` in a config.xml file. You can now enter these ConnectionFactory attributes in lower case.

- Resolved a problem in UM JMS that caused an exception and a loss of messages from a queue when restarting a receiver. Messages unacknowledged by a receiver that shuts down are now put back onto the queue. These messages are available for resending to the receiver when it restarts.

- Fixed a problem with the UMQ daemon (umestored) that could lead to a crash if you kept queue browsing support enabled (default) and multiple queue instances are rapidly killed and restarted in sequence. The crash would only potentially occur if log messages appeared in the umestored log file indicating that a message "was already present in SINC msg list".

- Fixed a rare bug that could lead to a crash in the UMQ daemon (umestored) when configured to use a disk and many sending threads, which is not the default.

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

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

- None.

# Special Upgrade Instructions for 6.0 <-

Upgrading from UM version 5.x to 6.x is typically done with the help of UM Support.

See Special Upgrade Instructions for 6.0.