Release Notes
|
Ultra Messaging (Version 6.12.1)
© Copyright Informatica LLC 2004-2019.
This document describes the important changes made to the Ultra Messaging product family with each release. The document is cumulative across the major version number, and also across the core Ultra Messaging products: Streaming Edition (UMS), Persistence Edition (UMP), Queuing Edition (UMQ), and the Dynamic Routing Option (DRO).
This software and documentation are provided only under a separate license agreement containing restrictions on use and disclosure. No part of this document may be reproduced or transmitted in any form, by any means (electronic, photocopying, recording or otherwise) without prior consent of Informatica LLC.
A current list of Informatica trademarks is available on the web at https://www.informatica.com/trademarks.html.
Portions of this software and/or documentation are subject to copyright held by third parties. Required third party notices are included with the product.
This software is protected by patents as detailed at https://www.informatica.com/legal/patents.html.
The information in this documentation is subject to change without notice. If you find any problems in this documentation, please report them to us in writing at Informatica LLC 2100 Seaport Blvd. Redwood City, CA 94063.
Informatica products are warranted according to the terms and conditions of the agreements under which they are provided.
INFORMATICA LLC PROVIDES THE INFORMATION IN THIS DOCUMENT "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING WITHOUT ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ANY WARRANTY OR CONDITION OF NON-INFRINGEMENT.
See UM Glossary for Ultra Messaging terminology, abbreviations, and acronyms.
The most-significant updates to UM version 6.12.1 are the introduction of .NET on Linux and a "busy wait" option for context threads.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
UM now supports the Microsoft .NET framework on 64-bit Linux. See Using UM .NET on Linux.
The Network Socket Busy Waiting feature can be used to prevent a context or XSP thread from sleeping while waiting for network events, such as received packets. This can reduce latency and especially latency outliers (jitter).
The following new features and enhancements apply to UMP and UMQ products.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
10702, 10713, 10741 | FIXED: UM has a load-time dependency on a specific version of OpenSSL. If the expected version is not present, the application can be unable to load and run, or it can write warning messages to the log file (Core-9565-109 and Core-9728-14), even if encryption services are not configured for use. For more information, see OpenSSL Dependency. |
10792, 10793 | FIXED: When an application is built with the UM 6.12 static library, diagnostic error information might not be properly communicated from a failed API call. A bad status will be returned, but the error code and message will be empty. To our knowledge, there will be no adverse behavior, but the loss of error information makes problem diagnosis very difficult. This problem is fixed in UM version 6.12.1 and beyond. |
none | FIXED: The UM documentation main page does not render correctly in some environments, possibly due to the use of deprecated HTML frames. The UM documentation main page is now simplified. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
9940, 10131, 10651, 10734 | FIXED: If a persistent publisher sends a message containing one or more Message Properties, and the Proactive Retransmission feature is used to record the message on the Store, a receiver which recovers the message from the Store will crash with a fatal assert: |
10676, 10735 | FIXED: Loss of packets into Store Daemon blocks stability ACKs. This increases the likelihood of a source blocking on flight size. |
10765, 10788 | FIXED: Store log always contains "[WARNING]: Core-5688-28: context config variable receive_thread_pool_size is deprecated. Has no effect." |
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
The following open limitations apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
10772 | Starting with UM version 6.10, the UM library built for MacOS (Darwin) no longer supports fd_management_type (context) of "kqueue". |
10498 | Security Vulnerability: the Persistent Store web monitor function can be used to read arbitrary files on the host running the Store daemon. Note that the persistent store web monitor is not a secure system and is not intended to be exposed to unauthorized users. In particular, the web monitor cannot be configured for certificate-based Encrypted TCP. Users are expected to prevent unauthorized access to the web monitor through normal firewalling methods. Users who are unable to limit access to a level consistent with their overall security needs should disable the store web monitor. See Webmon Security for more information.
|
10609 | The UM Router (DRO) daemon statistics message type tnwg_portal_peer_dstat_record_t has 3 improper fields: remote_interest_topics, remote_interest_pcre_patterns, and remote_interest_regex_patterns. They are improper because those counts do not apply to a peer portal. The tnwg_portal_peer_dstat_record_t messages can have garbage in those fields. Workaround: a monitoring application should ignore those 3 fields. |
10136 | When an XML file is used to configure UM, an invalid configuration option or value logs appropriate error messages, but does not return failure status to the application. As a workaround, the application logger callback can check for logged messages that start with "Core-5626-" and trigger their own error handler. Note that setting up the logger callback has a clientd (see lbm_log()), so a shared structure can be established for the logger callback to communicate any matches it finds to the application thread calling lbm_config(). |
9964 | The use of Doxygen to generate the .NET documentation has resulted in the omission of the "LBMCS.chm" windows help package. |
9718 | The encryption feature does not implement elliptic curve encryption. Cipher suites with "ECDH", "ECDHE", and "ECDSA" cannot be used. Use "DHE" and "RSA" instead. |
4126 | When using LBT-IPC transports, 64-bit applications cannot interoperate with 32-bit applications. This includes router endpoint portals. |
6553, 6441 | You cannot use Unicode PCRE characters in wildcard receiver patterns on any system that communicates with a HP-UX or AIX system. |
6828, 6830, 6831 | There are severe restrictions on the use of NAT with UM. Normally, a UM Router should be used with peer links to transit a NAT. However, there are very restrictive scenarios where Unicast Topic Resolution with |
7762 | When using Event Queues with the Java API on Mac OS X kernel 9.4, core dumps have occurred. Mac OS X kernel versions before 9.4 have not produced this behavior. |
7992, 7984, 7990 | The LBT-SMX transport does not support Topic Sequence Number Information (TSNI) messages. Thus, if LBT-SMX traffic routes through one or more UM Routers, and the original LBT-SMX source does not send messages regularly, remote receivers do not detect and notify the application of topic- level tail loss. Also, UM might not deliver midstream topic-level loss notifications in a timely manner. Remote receivers may also experience repeated transport disconnects and reconnects, and may miss Beginning Of Session (BOS) messages for the remote transport that carries data from the originating SMX source. Remote receivers may also experience head loss, similar to what would occur if the remote UM Router had started after the originating SMX source starts sending. When configuring SMX sources to send through a UM Router, ensure receiving applications do not rely upon these missing TSNI-related behaviors. |
8042 | It is possible for a thread deadlock to occur in the Java HotSpot Virtual Machine when initializing direct byte buffers. To avoid this bug, upgrade to Java 1.6.0_18 or later. For more information see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6791815. |
8266 | With Ultra Messaging on the AIX platform, you might encounter library linking problems due to an older version of ' |
8727, 8603 | You cannot use lbm_rcv_retrieve_transport_stats() to retrieve transport statistics from receivers with SMX sources. Instead, to retrieve these statistics use Automatic Monitoring. |
8735, 8323 | In AIX systems, you cannot send messages with a zero-length payload. |
8744 | If the lbmrd configuration file does not specify the version attribute within the ' |
8794, 8475 | Configuring sources with LBT-RU, source-side filtering, and adaptive batching might cause a crash. Note that adaptive batching is deprecated and will be removed from a future release. |
8820, 7368 | Setting transport_tcp_activity_method (receiver) to ' Also, any other configuration that causes a receiver create to fail triggers the fatal assert: ' |
9030, 8799 | You cannot set transport options in-line for lbmmon using a UM XML configuration file. Instead, use a Plain Text configuration file to set these options. |
The following open limitations fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
10171 | A set of default operational configuration options do not satisfy Persistence recommendations. Hung registrations can result. Persistence users are advised to follow the recommendations in Preventing Store Registration Hangs. |
2982 | Receivers using event queues and Spectrum with UMP can experience a SIGSEGV while shutting down if events still exist on the event queue when the application deletes the event queue. As a workaround, use LBM_EVQ_BLOCK when dispatching event queues. During application shutdown, call lbm_evq_unblock() after deleting receivers associated with the event queue, but before deleting any context objects. When the dispatch thread exits, you can continue with context deletion. |
4543 | When running a store on a Solaris machine, you may experience registration failures after a few minutes. The store repeatedly reports the error: |
4667 | Multi-transport Threads (MTT) do not support Persistence. Note that as of UM 6.11 MTT is removed, replaced by the new XSP feature, which provides improved multi-threading for receivers, and is compatible with Persistence. See Transport Services Provider (XSP). |
5841 | A UMP store daemon, umestored, may shut down unexpectedly if you enable proxy sources and UM is not able to create a transport session for a needed proxy source. For example, if the store is configured to use TCP transports for proxy sources (the default), and transport_tcp_port_high (context) minus transport_tcp_port_low (context) is 8, then when the 9th proxy source is created, UM will be unable to assign a port for that transport session. This is because UM will attempt to create up to transport_tcp_maximum_ports (context) transport sessions, which defaults to 10. transport_tcp_port_high (context) minus transport_tcp_port_low (context) must be at least transport_tcp_maximum_ports (context), and may need to be even larger if other applications and/or daemons on the same machines are configured to use ports from the same range. Informatica recommends configuring large port ranges appropriate to the transport type. |
6843 | An overly aggressive configuration on the source can cause the source to declare the store unresponsive while the source processes stability acknowledgements or confirmed delivery notifications or both. Using "strong RegIDs" prevents the source from sending messages until the store's source-activity-timeout expires on the store. After the activity timeout expires, the source can reregister. |
7014, 6840 | Java applications that create multiple receivers for the same topic in the same context may shut down unexpectedly when calling Dispose() if the topic is in a persistent data stream. Informatica recommends that you either avoid concurrent calls to Dispose() or use a single receiver for each topic and use application code to deliver messages to different callbacks. |
7937, 7771 | With liveness detection enabled for a UMP source and receiver; the receiver sends liveness keepalives to the source regardless of whether or not the receiver successfully registered with the Store. |
8728, 8151 | You cannot use receiver liveness detection for sources running on a SPARC-based system. |
8755 | For message consumption acknowledgements, you must not enable both acknowledgement batching and explicit acknowledgements simultaneously. However, if you do enable both, Ultra Messaging does not inhibit this configuration, and you see unexpected behavior. |
8870, 8768 | When using UMP with Windows, if you terminate a umestored process that was started from a command line window, it might corrupt data that is being written when the process is terminated. This does not apply to umestoreds, which runs as a service. To avoid this problem, ensure that sources are quiescent when stopping the Windows umestored process. |
The following open limitations fixes apply to the UMQ product.
Change Request | Description |
---|---|
9211 | Option umq_queue_activity_timeout (context) has no effect. |
9473, 9444 | The default paging or "cursor" settings for ActiveMQ might cause poor performance when multiple JMS durable subscribers are added to the same destination. This might cause logs messages similar to the following display: You can improve performance by changing the cursor used by durable subscribers to a vm cursor. However, you then lose the ability in the broker to page messages from memory to disk as memory usage increases. To change to vm cursors for subscribers, update the activemq.xml config file as shown in the following example: |
9474, 9446 | If a broker restarts and is later elected as active, previously assigned messages might be reassigned to consumers without being marked as redelivered. |
The following open limitations apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
9718 | The encryption feature does not implement elliptic curve encryption. Cipher suites with "ECDH", "ECDHE", and "ECDSA" cannot be used. Use "DHE" and "RSA" instead. |
8736, 8082 | When shutting down and restarting a UM Router, the UM Router sometimes does not complete its shutdown fully, requiring that it be forcible killed. |
Restriction | You cannot configure two endpoint portals on a UM Router to have the same adjacent domain id. |
Restriction | You cannot configure two peer portals on a UM Router to connect to the same adjacent UM Router. |
Restriction | The UM Router ignores UM Spectrum configuration options, which results in UM Routers forwarding all channel data without applying any filtering. See Spectrum. |
Most upgrades from one version to the next are straightforward and uneventful. This is because Informatica strives to introduce new features without affecting existing functionality.
However, users are strongly encouraged to read and understand the release notes for each intermediate version between their existing system and their intended upgrade target.
In particular, there are four areas that deserve special consideration:
While Informatica attempts to set configuration option defaults to values that represent good trade offs, there are times when new information or customer feedback demonstrates that a different value delivers more value for the average customer. In many cases, customers will benefit from these new values. However, it is also possible that for specific use cases, a previous default value is better.
Informatica recommends that users evaluate each changed default individually and determine if the new value is appropriate for their use cases. In those cases where the previous default is better, the user must explicitly set the option to that value.
Contact Informatica Support for more information and deeper understanding of UM's configuration options.
To make UM more maintainable, functionality is sometimes removed from UM. Informatica understands that this can be disruptive to users, so we try to restrict such deprecations to features that, to our knowledge, are not needed by our users.
Informatica recommends careful reading of each version's release notes to learn which features are being deprecated. If you discover that a feature is deprecated which is important to your use case, please contact Informatica Support.
In a future version of UM, there will be a reduction in supported platform for UM daemons.
The UM daemons are:
Starting with a future version of UM, the daemons will only be supported on the following platforms:
Daemon | Linux 64 | Windows 64 | Windows 32 |
---|---|---|---|
Unicast Resolver Daemon (lbmrd) | YES | YES | no |
Persistent Store (stored) | YES | YES | no |
DRO - UM Router (tnwgd) | YES | YES | YES |
SRS - Stateful Resolution Service | YES | YES | no |
UMM Ultra Messaging Manager (ummd) | YES | YES | no |
ActiveMQ broker | YES | YES | no |
Note that there is no change in support for applications. UM daemons running on the reduced set of platforms will be able to service applications running on the full range of supported platforms.
In UM version 6.8, the brokered queuing functionality and JMS API was re-implemented with an enhanced ActiveMQ-based JMS/AMQP broker. In many cases, the UM queuing API can still be used with few if any changes.
See Queuing Upgrade Considerations for more information about upgrading brokered queuing applications.
With the introduction of the UM Router, several changes needed to be made to the "wire format" of UM command and control messages. This resulted in 6.0-based applications not being interoperable with pre-6.0 applications. For many customers, this did not pose a significant problem since they were able to upgrade all of their systems in a single step. I.e. there was no need for pre-6.0 applications to exchange messages with 6.0 applications.
However, for many customers, this kind of "flash" upgrade is simply not practical. Therefore, starting with UM version 6.7, an upgrade path was developed which allows different applications to be upgraded at different times, while still allowing those mixed-version applications to exchange messages.
To upgrade Ultra Messaging from version 5.3.x to version 6.7 and beyond, perform the following procedure:
If the current installation is earlier than 5.3, upgrade all applications and components except UMDS servers to version 5.3.6 or later.
Pre-6.0 versions of UM are not ABI compatible with 6.0 and beyond. C language application programs must be re-compiled.
If using UMP stores, ensure that all source settings for option ume_store_behavior (source) are set to 'qc
' or 'quorum-consensus
', and not 'rr
' or 'round-robin
'.
Upgrade all lbmrd resolver daemons to this release. No configuration changes are required.
Upgrade source and receiver applications. You can upgrade these one by one, in any order. As you upgrade each application, set the following configuration options:
These settings must remain during the period when the network contains both applications based on 5.3.x and this release.
If you use Late Join or OTR, review the settings for Late Join or OTR per-message timeout options. Note that option otr_request_duration (receiver) was deprecated in 6.0, and the following options are added:
For 5.3.x applications on the same TRD as this release, you might see the following log messages:
The most-significant update to UM version 6.12 is the introduction of a TCP-based Stateful Topic Resolution Service (SRS) which optimizes the Topic Resolution Process.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
TCP-Based Topic Resolution. 6.12 introduces a new component, the SRS (Stateful Resolution Service). This is the first phase of a plan to significantly improve UM's topic resolution characteristics. The SRS service can be run on 64-bit Windows and 64-bit Linux. (An SRS running on either one of those platforms can service clients across the full range of supported platforms.)
For more information, see Topic Resolution Description.
Streaming Receiver Optimization. Message receive latency has been improved with the following features:
Smart Source Message Sizing Flexibility. The Smart Sources feature now supports greater flexibility in application message sizes, including:
For more information, see Smart Source Message Buffers.
Also, a problem in Smart Source was fixed (see fixed limitation 10602) which users of Smart Source need to be aware of. Some users will need to change their configuration as a result. See Smart Source Header Size Change for details.
Windows Service Enhancements. Support for running the 3 main pre-6.12 UM Daemons as Windows Services has been improved. This includes the UM Message Router (DRO), the persistent Store, and the unicast topic resolution daemon (lbmrd). The new service, SRS, is introduced with the same support for Windows Service. (Note that the Ultra Messaging Manager daemon ummd
is not available as a windows service at this time.) For more information, see UM Daemons as Windows Services.
XSP Enhancements. The Transport Services Provider (XSP) feature has been enhanced to support the following new capabilities:
Leading Loss Events Suppressed. UM no longer delivers unrecoverable loss events to receiver callbacks prior to the first message delivery. See 5199.
AIX. Informatica no longer ships the AIX platform with every new version of UM. Instead, AIX is now considered an "on demand" platform. Note that AIX is still a supported platform for UM. Customers of the AIX platform may specifically request that an AIX build be generated for the most-recent general UM version.
The following new features and enhancements apply to UMP and UMQ products.
XSP. Persistent receivers can now be assigned to a Transport Services Provider (XSP).
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
10602 | FIXED: Smart Sources reserved a differing amount of space for worst-case headers than traditional sources. For users of kernel bypass network drivers like Onload, this can lead to having to set the transport_lbtrm_datagram_max_size (context) option to different values for apps using Smart Sources vs. apps that do not. For apps that use both, this creates a sub-optimal solution for one or the other. UM now uses the same reserve size for Smart Sources as it always has for traditional sources.
|
10542 | FIXED: When an XSP user's transport_mapping_function callback is invoked, the second parameter is:
|
5199, 9415 | ENHANCEMENT: There are a variety of circumstances where a newly-created streaming receiver will be delivered unrecoverable loss events before the first message is received. This is normally not useful to the application since it does not represent a gap in the received message stream, but rather just difficulty in getting successfully joined to the stream. UM now will suppress unrecoverable loss events prior to the first message delivery. Informatica believes that this new behavior is the correct behavior for UM, and that there should be no cause for concern by users. This behavior change does not apply to Persisted data streams where delivery of all messages is important. See Leading Loss for more information. |
3398 | FIXED: Windows-based UM closes TCP connections abruptly, causing TCP "RST" packets on the network, and "connection reset" warnings in UM log files. Windows-based UM now closes TCP connections gracefully. |
10518 | FIXED: When installing UM on a Windows machine using the UM package installer, the system PATH can be corrupted or cleared if the updated length is greater than 1023 bytes. This is related to a limitation in the Windows installer that UM uses; it fails on long PATH content. UM had a bug in which UM did not detect the failure and instead wrote the bad PATH. UM has been updated to detect the failure, issue an error, and not update the PATH. |
10380, 10381 | FIXED: lbm_rcv_delete_ex and lbm_wildcard_rcv_delete_ex can crash when unsubscribing from spectrum channels. |
10469, 10486, 10466 | FIXED: When sending a message using a Smart Source send API, UM can crash with a failed assertion of the form: |
10492 | FIXED: When the lbmrd is configured for incorrect interface specification, either in its XML configuration file, or on the command line, the lbmrd did not detect any error and appears to be running. However, it does not function. Also, the lbmrd does accept interface specifications other than a simple IP address. The lbmrd interface can now be specified as a simple IP addresses, a CIDR network specification (e.g. 10.1.2.0/24), a quoted device name (e.g. "eth0"), or a DNS host name. The lbmrd will report an error if an invalid interface specification is configured. |
10288 | FIXED: Sending Unicast Immediate (UIM) Requests on Sparc machines can result in high CPU burn with no messages being sent. |
10602 | FIXED: The |
10519 | FIXED: The Unix-based UMS and UMP products were built such that liblbm.so had a dependency on libqpid-proton.so.2, which was not included in the package. This did not cause improper behavior because the UMS and UMP products never attempt to call any of the missing entry points. However, having the dependency is unnecessary. The UMS and UMP dependencies to libqpid-proton.so.2 have been removed. |
10490, 10491 | FIXED: The log message: The IP and port of the sender is now included in the log message. |
10456 | FIXED: The configuration options zero_transports_function (xsp) and operational_mode (xsp) cannot be specified in a "flat" UM configuration file. The error: |
10398 | FIXED: On many Linux systems, the The solution was to add "-lm" to the builds of the examples. |
10383 | FIXED: Due to an improper installation of Solarflare's UM has been changed to properly decode and print the proper error. In addition, if the socket reports that the |
9972 | FIXED: If an application attempts to unsubscribe from a Spectrum channel that it had not previously been subscribed to, the application crashes with an illegal memory access. |
9798 | FIXED: If a receiver of a TCP or IPC transport gets messages out of order due to the data coming through a DRO and the originating source is UDP-based, the receiving application declares immediate unrecoverable loss, even though the missing messages arrive shortly thereafter. The TCP transport receiver can now be configured to wait for a period of time before declaring unrecoverable loss. This is controlled by two new configuration options: transport_tcp_dro_loss_recovery_timeout (receiver) and transport_lbtipc_dro_loss_recovery_timeout (receiver). See UM Router Reliable Loss for more information. |
10435 | FIXED: UM does not properly time out the total Late Join recovery process. This can lead to premature termination of Late Join recovery. UM now correctly calculates the total Late Join recovery timeout as late_join_info_request_interval (receiver) multiplied by late_join_info_request_maximum (receiver). |
10640 | FIXED: A timing window exists that could cause Late Join to not complete. This can occur if the max number of late join requests has been completed before the total Late Join recovery process times out. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
5890, 9054 | ENHANCEMENT: There are certain circumstances where a receiver has to unnecessarily wait for the ume_activity_timeout (receiver) to expire before it can register with a Store. An enhancement was made to persistent receivers that allows for immediate re-registration in the following circumstances:
|
10446, 10450 | FIXED: When applications and/or Stores are restarted in certain orders, the receiver can log the warning, |
10379 | FIXED: When a persistent source deregisters from the Store by API call (lbm_src_ume_deregister()), the Store will occasionally crash. |
10617 | FIXED: The Store code sometimes reads an uninitialized memory location. No improper behavior has been seen when this happens, but there is a very small chance that a receiver's outstanding messages will not be properly acknowledged, leading to potential unnecessary message recovery if the receiver restarts. This has never been observed in the field. |
10564 | FIXED: When a Smart Source is configured for persistence, incorrect internal handling can lead to incorrect Forced Reclaims. |
10462, 10432, 10482 | FIXED: After a set of multiple store restarts without clearing the state and cache files, there can be an extended period of topic deafness where persistent receivers will not see messages sent by the source. |
10454 | FIXED: When an RPP store is writing to disk due to a non-blocking receiver exiting, and the disk fills and needs to wrap, the store can stop accepting new messages. |
10447, 10451, 10458 | FIXED: If a source sends messages and then immediately deregisters, there is a chance that the Store will crash with an illegal memory access. |
10343 | FIXED: When a Smart Source is publishing a persisted message stream, and there is a large amount of network packet loss, the publisher can crash with the log: |
10341 | FIXED: Minor misspelling in Store log message: |
The following bug fixes apply to the UMQ product.
Change Request | Description |
---|---|
9974 | FIXED: There was a scenario where a late arriving ACK from a ULB receiver could cause the ULB source to crash with an illegal memory access inside |
10548 | FIXED: Starting in UM 6.11, a non-fatal assertion is generated when shutting down a brokered queue receiver: |
8899 | FIXED: A ULB source will get stuck in an infinite loop if umq_ulb_application_set_message_reassignment_timeout (source) is set to zero and one of the receivers exits. |
3632, 8596, 8525 | FIXED: If you attempt to disable ULB message reassignment by setting option umq_ulb_application_set_message_reassignment_timeout (source) to ' As a workaround, to inhibit message reassignment use option umq_ulb_application_set_message_max_reassignments (source) set to 1, and leave umq_ulb_application_set_message_reassignment_timeout (source) at its default value. This has now been fixed. The workaround is no longer needed. |
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
10443 | FIXED: When a DRO portal is queuing outgoing messages (perhaps due to a low rate limiter or a low-bandwidth link), and a topic has more than delivery_control_maximum_burst_loss (receiver) (default 1024) messages queued to be sent, there is a possibility that receivers will deliver a burst loss event to the application and not deliver the queued messages, even though they are eventually sent. This is because the originating source sent a TSNI, and the DRO allowed it to bypass the data queue and be sent before the queued data messages. Thus the receiver sees a gap greater than the burst loss configuration and does not wait for the missing data to be sent. The DRO now queues TSNIs behind data messages. |
10499 | FIXED: The DRO configuration element <route-info> has the attribute The DRO now properly defaults |
3548 | FIXED: The UM Router cannot run as a standalone Windows service. Now fixed. See UM Daemons as Windows Services. |
There was one fixed limitation that will require some users to make changes while upgrading to UM version 6.12.
A problem in Smart Source was fixed (fixed limitation 10602) which users of Smart Source need to be aware of.
When a kernel bypass network driver is used, users often change their datagram max size larger than a network MTU to ensure that UM data packets are efficiently filled. See Datagrams and Kernel Bypass Network Drivers for details.
However, because of limitation 10602, users had to set the datagram max size to different values depending on whether their application used Smart Sources or traditional sources. This was particularly a problem for applications that make use of both Smart Sources and traditional sources; no value was optimal for both.
The fix for limitation 10602 was to have Smart Sources reserve the same amount of space for headers as traditional sources.
As described in Datagrams and Kernel Bypass Network Drivers, you will need to experimentally determine the optimal value for datagram max size for your use case.
The most-significant update to UM version 6.11.1 is a set of performance improvements to the Persistent Store daemon. Some performance improvements were also applied to the data receive path for applications.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
The following new features and enhancements apply to UMP and UMQ products.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
10385, 10280 | Enhancement: Reduced number of gettimeofday() calls in context loop. This lowers receive-side latency and CPU load. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
10332, 10409 | FIXED: When the Persistent Store is configured to publish Daemon Statistics, there is a small chance that it will fail to initialize properly. It might log the error: |
10400, 10401 | FIXED: Bug in Persistent Store leads to performance degradation over time. (This bug has existed in the Store for many years.) |
10404, 10411 | FIXED: When using RPP with repository-type "disk", it is possible for a blocking receiver to get unrecoverable loss. This loss can be accompanied by the following warning in the Persistent Store log file: |
10406, 10407 | FIXED: A bug fix added to 6.10.1 accidentally introduced a significant performance reduction in the UMP Persistent Store. This regression is repaired in 6.11.1. |
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
Starting with UM version 6.12, the UM daemons will no longer be available on certain platforms.
UM daemons will continue to be available on the following platforms:
The planned deprecated daemon platforms are:
User applications deployed on these platforms will fully interoperate with daemons running on the reduced set of platforms.
Please contact support if any of these planned deprecations interfere with your existing or planned deployments.
The most-significant updates to UM version 6.11 are the introduction of XSP for multi-threading receivers, and Daemon Statistics for the Store and the UM Router.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
Transport Services Provider (XSP). XSP is a new method of assigning receiver transport sessions to independent threads. XSP gives the application control over how received transport sessions are assigned to threads. It replaces the earlier Multi-Transport Threads (MTT) feature, which is no longer supported. For more information, see Transport Services Provider (XSP).
Enhanced Smart Source feature. The Smart Sources feature now supports more functionality. Some of this support is limited, so please check the corresponding sections for further information.
For this UM version, the Smart Source API is not supported in .net.
The following new features and enhancements apply to UMP and UMQ products.
Smart Sources now support Persistence. See Smart Sources and Persistence. (See also Streaming Enhancements for 6.11 for more enhancements to Smart Sources.)
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
Dynamic Router Daemon Statistics. A new method of monitoring the UM Dynamic Router daemon. The same information which is currently available on the daemons' web monitors can now be published on a normal UM topic. See Daemon Statistics.
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
10260 | FIXED: When using Smart Source, a source processing NAKs can fatal assert: "(bvec->flags & ~LBTRM_BVEC_SMART_SOURCE_FLAG) == 0". |
10178 | FIXED: An unnecessary sprintf() initializing a string buffer is being called from lbm_context_process_events(). The sprintf() was moved to context creation. |
10135 | FIXED: When using the JAVA interface, if the source has ume_message_stability_notification (source) set to LBM_SRC_TOPIC_ATTR_UME_STABLE_EVENT_PER_MESSAGE, you could get an ArrayIndexOutOfBoundsException on the source event callback. |
10087 | FIXED: Applications and daemons are at risk of a bus error on architectures that require alignment (SPARC, Power). These happen very rarely, and are associated with UIM messages in a UM Routed (DRO) environment. (Note: UIMs are involved with many features, such as Late Join, Persistence, and ULB.) |
10085 | FIXED: Interoperation between little-endian and big-endian architectures was broken in UM version 6.10. This problem also interferes with interoperation between 6.10 and any other version of UM, on big-endian architectures. This affects systems that use any combination of UM Routers (DRO), Persistence, or Hot Failover. Users with big-endian architectures are advised to avoid UM version 6.10. |
10079 | FIXED: Java and .NET programs that use the topic resolution callback by overriding the context object's onResolverEvent() method can generate a segmentation fault, resulting in a JVM dump. |
10071, 10072 | FIXED: SDM: cloning an attribute object does not copy over the state of the "name_tree" attribute. |
10048 | FIXED: If a Java application improperly calls respond() for a message after it had been disposed, a crash results. It is requested that respond() instead throw an exception, to make it easier for application bugs to be diagnosed. |
9973 | FIXED: If lbm_send_request() is called on a heavily-loaded system, and a response is returned very quickly, the |
9963, 10172 | FIXED: In UM version 6.7 a change was made which had the unintended consequence of unnecessarily increasing network traffic related to "final advertisements" (see resolver_send_final_advertisements (source)). |
9913 | Source Send call from within context callbacks is inconsistently documented. The C, Java, and .NET API documents have been updated to be consistent and correct related to context thread callbacks. See lbm_src_send(), lbm_src_send_ex(), lbm_src_sendv(), lbm_src_sendv_ex(), lbm_send_request(), lbm_send_request_ex(), lbm_hf_src_send(), lbm_hf_src_send_ex(), lbm_hf_src_send_rcv_reset(), lbm_hf_src_sendv(), lbm_hf_src_sendv_ex(), lbm_send_response(). |
9829 | FIXED: If a Java application improperly attempts to close a context object before all child objects (sources, receivers) are closed, a crash can result. Now, if an application attempts to close a context that still contains active sources or receivers, a warning is logged and the context is not closed. However, no exception is thrown from the context close; it returns normally. The user must use the error log to identify the application bug. |
9816 | FIXED: The documentation did not inform the user that it is necessary to have a consistent value for transport_lbtrm_datagram_max_size (context). A note has been added to resolver_datagram_max_size (context), transport_lbtsmx_datagram_max_size (source), transport_lbtrm_datagram_max_size (context), transport_lbtru_datagram_max_size (context), transport_tcp_datagram_max_size (context), transport_lbtipc_datagram_max_size (context), transport_lbtrdma_datagram_max_size (context). |
9606 | FIXED: Java properties don't support redundant keys. This creates a problem for the resolver_unicast_daemon (context) configuration option which needs to be specified multiple times for redundant The solution was to modify resolver_unicast_daemon (context) to allow multiple servers to be specified in a single specification, separated by commas or semicolons. For example: |
5555 | FIXED: Message Properties are incompatible with the Spectrum feature. Both cannot be used for the same message. Now a message can be sent both with message properties and to a Spectrum channel. |
7763 | This bug cannot be reproduced in any recent version of UM. The bug is assumed to be FIXED: You cannot send messages larger than 65,535 bytes over the LBT-IPC transport when you set option ordered_delivery (receiver) to 0 (zero) unless you also set transport_lbtipc_behavior (source) to 'receiver_paced '. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
10231 | FIXED: The Persistent Store Web Monitor displays truncated values for "Retransmission Request Received Rate" and "Retransmission Request Service Rate". The decimal portion is now correctly displayed. |
6088, 8660, 8955, 4899 | FIXED: Persistent Store log files grow without bounds. Rolling log files are now implemented in the Store and in the UM Router. See Store Rolling Logs and UM Router Rolling Logs for details. |
10201 | FIXED: In a scenario where messages are getting lost and proactive retransmissions are being used between the source and the store, it is possible to get into a state where the source would be infinitely stuck on flight size. |
10196 | FIXED: When a store is not keeping up with incoming messages to the point where it has to intentionally drop incoming messages, there is a possible scenario where the source can get stuck, blocked on flight size. |
10183, 6324 | FIXED: When the store is overwhelmed with incoming messages and has to intentionally drop some messages, it is possible for the state associated with the store to get corrupted and, depending on the next sequence of events, one or more of the following messages can be logged:
followed by either an abort or a segmentation fault. Checks have been added so that the store's state won't be corrupted. |
10176 | The description of message Store-5688-5574 has been corrected. |
10063, 10064 | FIXED: Version 6.10 of the Persistent Store had a condition that could cause rare segmentation faults. When it happens, it is usually associated with the store falling behind the source. |
10036 | FIXED: When using an RPP non-blocking receiver, the source blocks once the store's disk repository fills up. Now, when the store's repository fills up, messages will be deleted if only non-blocking acks are outstanding. |
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
10194 | FIXED: When Peer Links attempt to establish connections, there is a window during which a socket could get closed just before attempting to complete the connection. This can result in a fatal assert "handle==conn_mgr->sock->sock", or could simply result in the peer link not making any more connection attempts, leaving the link permanently disconnected. |
10188 | FIXED: An issue with routing Multicast Immediate Messages (MIM) through a DRO running SPARC 32-bit systems which caused a bus error. |
10163 | FIXED: There are several instances of random message corruption which can cause the UM Router to crash. Defensive checks have been added to protect the DRO against malformed messages. |
10051 | FIXED: Large UIM messages can become corrupted while transiting a DRO network. It happens when message fragments are either dropped (due to link overload) or become out of order. |
10050 | FIXED: In UM 6.10, the UM Router (DRO) crashes when it is paired with the UMS or UMP version of the UM library. |
The most-significant update to UM version 6.10.1 is a set of bug fixes.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
The following new features and enhancements apply to UMP and UMQ products.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
10051, 10130 | FIXED: Large UIM messages, such as UM responses, can become corrupted when transferred between Topic Resolution Domains by a UM Router (DRO). |
10085, 10086 | FIXED: For UM version 6.10 (only) running on "big-endian" machines (e.g. SPARC), 64-bit values in UM packet headers were not properly swapped, with the result that for certain features, big-endian machines cannot interoperate with little-endian machines. The problem is most visible with the ULB feature, and the UM Router (DRO). |
10050, 10054 | FIXED: For UMM version 6.10 (only), the UM Router (DRO) is not able to run o the UMS or UMP products' "lbm" libraries. |
10106 | FIXED: Documentation related to several configuration options, including transport_tcp_sender_socket_buffer (source), response_session_sender_socket_buffer (context), and umecfgrepositorysizethreshold. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
10050, 10054 | FIXED: For UMM version 6.10 (only), the UM Router (DRO) is not able to run on the UMS or UMP products' "lbm" libraries. |
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
10050, 10054 | FIXED: For UMM version 6.10 (only), the UM Router (DRO) is not able to run on the UMS or UMP products' "lbm" libraries. |
The most-significant updates to UM version 6.10 are related to improving performance (latency, jitter, and throughput).
The following new features and enhancements apply to UMS, UMP, and UMQ products.
IPC performance improvement. Changed the receiver-side dequeuing algorithm to avoid semaphore operations when possible. Also see configuration option transport_lbtipc_pend_behavior_linger_loop_count (context).
NCF reduction. Changed the LBT-RM reliability algorithm to reduce the number of NCF control messages sent during periods of heavy loss. The change reduces the impact of loss on healthy receivers, but might slightly increase the load on the source.
Host names in configuration files. For configuration options that take an IP address, it is now permissible to supply a host name. UM will resolve the name to an IP address when the configuration file is read.
Non-contending Statistics retrieval. Statistics gathering API functions 'lbm_*_retrieve*stats()
' no longer contend with the message receive path (context thread). Retrieving statistics no longer introduces latency outliers in normal message flow. Note that a given sample of statistics no longer necessarily represents a single snapshot in time. For example, it is possible that between two samples, the field 'bytes_rcved
' could change but 'lbm_msgs_rcved
' does not. NOTE: brokered queuing contexts are not included in this enhancement.
Smart Sources. A new, somewhat restrictive API for sending messages which eliminates looping, locking, and dynamic memory allocation/freeing, resulting in a significant reduction in send time and elimination of variance in execution time (jitter). Available for C and Java. See Smart Sources.
Send path performance improvement. For UDP-based protocols (LBT-RM and LBT-RU), an algorithmic optimization was made to eliminate two memory allocations and frees per send call. This is for established sources (i.e. this optimization is not related to Smart Sources). Reduction of memory allocations and deallocations reduces send time, but more importantly reduces latency outliers (jitter).
Send message direct to a source. Unicast Immediate Messages (UIM) have always allowed the use of IP address and UIM port (also known as "request port") of the destination application. As of version 6.10, a "source string" can also be used as the destination. This allows a receiving application to send a message directly to a newly subscribed source application. See the Concepts Guide section Sending to Sources.
Default interface configuration option. This new configuration option simplifies the previously error-prone process of configuring interfaces for different features. If all or most features should use the same interface, it is no longer necessary to configure each interface option. Instead, specify the default_interface (context) once and then optionally specify any exceptions. (See below for affected configuration options.)
Increased send-side socket buffer for TR. The send-side socket buffers for Topic Resolution has been increased to 1MB. This will reduce the possibility of send-side loss due to EWOULDBLOCK on socket sends.
HTML documentation. Version 6.10 contains the first phase of a conversion of UM documentation to a different tool chain which produces manuals in 3 forms: multi-page HTML, single-page HTML, and PDF. Manuals converted in 6.10: "Concepts Guide", "Configuration Guide", "Operations Guide", and "Guide to Queuing". Additional manuals will be converted in a future release. In addition, Doxygen is now being used to produce .NET and Java API documentation.
Context delay warning. A UM context keeps track of how long each loop of its context thread takes. As of UM 6.10, it now logs a warning (Core-5688-1882
for embedded mode, Core-5688-1891
for sequential mode) if a loop exceeds 1500 milliseconds (1.5 s). This behavior can be modified by setting the environment variable LBM_CONTEXT_DELAY_WARNING
to the number of milliseconds desired, or to zero to disable the warning. Note that if you see this warning, it represents a significant source of latency and should be investigated to determine the root cause.
Jar file names changed. The following shipped Java jar file's names have changed to remove the JDK version number. In the table below, '<vers>
' is the UM version number.
Old jar name | New jar name |
---|---|
UMS_<vers>_jdk1.5.0_12.jar | UMS_<vers>.jar |
UMSPDM_<vers>_jdk1.5.0_12.jar | UMSPDM_<vers>.jar |
UMSSDM_<vers>_jdk1.5.0_12.jar | UMSSDM_<vers>.jar |
UMMAPI_1.5.0_12.jar | UMMAPI.jar |
UMMD_1.6.0_02.jar | UMMD.jar |
UMMGUI_1.6.0_02.jar | UMMGUI.jar |
The UMSSDM jar file is no longer included in the UMS jar file. Starting with UM 6.10, Java programs that use SDM need to explicitly include UMSSDM_<vers>.jar in the classpath.
Windows .NET API is now included with base Windows package. It is no longer necessary to download and install .NET separately. The dynamic libraries and example executables are now contained under 'bin\dotnet
'.
Windows package built with Visual Studio 2012. The UM packages for Windows are now being built with Visual Studio 2012 (VS 2012). The package is no longer shipped with the Windows Runtime library msvcr80.dll. Now UM ships with msvcr110.dll. User applications should be built with VS 2012 or beyond.
Improved defaults. The following configuration options have new default values. For systems already in production, please review the options and determine if the improved defaults are appropriate for your application. If not, then you must ensure that the desired values are explicitly configured.
The following new features and enhancements apply to UMP and UMQ products.
Improved UM configuration defaults. The following configuration options have new default values. For systems already in production, please review the options and determine if the improved defaults are appropriate for your application. If not, then you must ensure that the desired values are explicitly configured.
Option | Old default | New default |
---|---|---|
ume_use_ack_batching (receiver) | 0 (no) | 1 (yes) Batching of receiver consumption acknowledgements greatly increases system throughput, although it also increases the likelihood of duplicate messages during a recovery operation. |
ume_confirmed_delivery_notification (source) | 1 (yes) | 0 (no) Increases system throughput. |
ume_message_stability_timeout (source) | 20,000 (20 sec) | 5,000 (5 sec) Should be less than NAK generation interval (for UDP-based protocols). |
Improved Store configuration defaults.
Option | Old default | New default |
---|---|---|
repository-size-threshold | 25,165,824 (24MB) | 1,024 (1K) |
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
10024 | FIXED: The API function lbm_transport_source_parse() incorrectly parsed source strings under a wide variety of circumstances. |
9824 | FIXED: When a .NET program made use of ResolverEventCallback, it could result in a crash with the message, ' |
9710, 9788 | FIXED: The API functions lbm_rcv_topic_attr_dump(), lbm_src_topic_attr_dump(), and lbm_context_topic_attr_dump() generated log messages of the form: This has been corrected since UM version 6.9.1. |
9950 | FIXED: Corrected certain log messages generated due to Windows socket errors. Previously, the reason for the error was not printed correctly (always said error code was zero). Now it correctly prints the error code returned by Windows. |
9877 | FIXED: If an LBT-RU source's context thread experiences a significant multi-second delay, due perhaps to scheduling delay on a severely overloaded server, and a receiver is configured to receive multiple datagrams via the multiple_receive_maximum_datagrams (context) option, there is a possibility that the receiver will crash with a fatal assert: |
9939 | FIXED: Corrected memory alignment crash when using LZ4 compression on 32-bit SPARC machines. |
9981, 9977, 9955 | FIXED: UM version 6.9.* have a problem which prevents the optional UM products UMDS, UMCache, and SNMP from working (mul_inet_ntoa). |
9722, 9826 | FIXED: When the UMDS server component was executed on UMS or UMP library versions prior to 6.9, the server would log: In UM 6.10 the log is suppressed. |
9957 | FIXED: When using Myricom's Datagram Bypass Library (DBL), a fatal assert (' |
9779 | Enhancement: Added configuration option transport_lbtru_nak_initial_backoff_interval (receiver). Setting this greater than zero reduces NAK traffic when UDP datagrams are delivered out of order. However, it also introduces repair latency when a datagram is lost. |
4839, 9249, 9950 | Enhancement: Updated a number of error log messages to include the proper Windows return code. |
9878 | Enhancement: In the Java API, if a receiver object is closed more than once, we silently ignore any closes after the first. (Previously an error condition was encountered.) |
9677 | Enhancement: UM Windows package now built with Visual Studio 2012. The Windows runtime library msvcr110.dll is now included with UM. |
9951 | Enhancement: print a log message when UM attempts to send a topic resolution message and the send to the socket fails. Most failures are serious and require attention to determine root cause. |
9983 | Enhancement: include .NET libraries with the base Windows package for all products (UMS, UMP, UMQ). Downloading a separate .NET package is no longer necessary. The DLLs and example program binaries are now under ' |
9926 | Enhancement: Topic Resolution send-side socket buffers are now set to 1MB. This should prevent "EWOULDBLOCK" errors and the associated loss of TR packets. |
9967, 8556, 7793, 2548 | Enhancement: reduce the number of NCF control messages sent during periods of heavy loss. The change reduces the impact on healthy receivers, but might slightly increase the load on the source. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
9953 | FIXED: Due to an incorrect print specification, 32-bit applications can occasionally crash with illegal memory access when debug logging is enabled and a persistent session ID is being printed. The print specification has been corrected. |
9583 | FIXED: When a source requests registration with a store, if is possible for the store's response control message (PREG_RESP) to be lost. The source will re-try the registration, which the store will reject with the log, "RegID xxx is in use by a different source". This has been corrected (a store allows a registered source to re-register). |
9920, 9929 | FIXED: Under unknown circumstances, a store can exit with inconsistent data in the state and/or cache files. When the store is restarted, this inconsistent data can result in a store crash during initialization. Defensive checks have been added. |
9861 | FIXED: The UMM tool tip for the source configuration option ume_proactive_keepalive_interval (context) was incorrect. Also, if zero was supplied, CPU utilization jumped to 100%. It is fixed such that zero disables proactive keepalives. |
9902, 9925 | FIXED: The Store's log file sometimes shows session IDs as negative numbers. These have been corrected to use unsigned. |
9458, 9796 | FIXED: A minor race condition in the Store which results in one or more warning logs: |
9938, 9943 | Enhancement: If a 5.x persistent source is configured for named stores and is also configured not to query for the store name (via the environment variable ' |
9993 | Enhancement: Proactive Keepalive feature modified to reduce disk activity due to page faults during periods of low message traffic. |
9689 | Enhancement: Added Store configuration element <xml-config> to allow the use of XML-based UM configuration files. With this addition, Informatica discourages the use of the environment variable 'LBM_XML_CONFIG_FILENAME '. |
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
9710, 9788 | The DRO generated log messages of the form, |
9810 | A variety of timing-related issues with single-TCP peer links have been resolved. |
9800 | If a UM router has a proxy source with queued messages and the proxy source is deleted, the messages get stuck in the queue, which subsequently has less room for future messages. In the worst case, the queue can be stuck in a full state, preventing message forwarding. Proxy sources are deleted as a result of the originating source being deleted, or as a result of all receivers in a remote TRD being deleted, eliminating interest in the topic in that TRD. |
9799 | If a UM router has a proxy source with queued messages, there is a small timing window during message flow that can cause messages to get stuck in the queue, which subsequently has less room for future messages. In the worst case, the queue can be stuck in a full state, preventing message forwarding. (Similar to 9800, but does not require deletion of proxy source.) |
9916 | If a debug log is being generated, a garbage value is printed in some of the logged messages, making it more difficult for Informatica Support to diagnose problems. |
Adaptive Batching - still operational, but planned to be removed in a future release.
Explicit Batching - still operational, but planned to be removed in a future release.
Hypertopics - still operational, but planned to be removed in a future release.
TCP-LB - still operational, but planned to be removed in a future release.
Java APIs deprecated:
Configuration options deprecated:
<tcp>
' and '<companion>
' will generate errors. Upgrading customers should use <single-tcp> instead.
The most-significant update to UM version 6.9.1 is the repair of a serious bug in LBT-RM and LBT-RU transports.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
The following new features and enhancements apply to UMP and UMQ products.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
9927 | Fixed a problem with UDP transports LBT-RM and LBT-RU where sending a very large number of datagrams (more than 4 billion) results in a failed assertion [oblk!=NULL]. |
9824 | Fixed problem in .NET API where using a resolver event callback and/or a source cost callback can cause crashes after garbage collection. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
9902 | Fixed problem where session IDs were printed to the Store log file in an inconsistent way, sometimes signed, sometimes unsigned. Session IDs are now always printed unsigned. |
9920 | Fixed problem in Store where use of Receiver-Paced Persistence can lead to a Store segmentation fault during startup. |
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
The most-significant update to UM version 6.9.1 is expansion of the supported platforms:
Linux-X86 (32 and 64 bit), Windows (32 and 64 bit), Solaris-X86 (32 and 64 bit), Solaris-Sparc (32 and 64 bits), Linux-Itanium (64-bit), Linux-Power8 (64-bit, little endian), HP NonStop-X64 (64-bit).
The following new features and enhancements apply to UMS, UMP, and UMQ products.
Addition of Linux-Power8 (64-bit, little endian), HP NonStop-X64 (64-bit) platforms.
The following new features and enhancements apply to UMP and UMQ products.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
9729 | Fixed a problem where a UDP packet with bad checksum was silently ignored. UDP packets with checksum errors will now generate a warning log message. |
9654 | Fixed a potential crash with Windows Completions Ports due to memory corruption during a TCP disconnect. This bug was fixed in UM version 6.9, but was not included in the 6.9 release notes due to an oversight. |
6102 | Fixed a problem where TSNIs were not sent when Source Side Filtering was enabled. TSNIs are now sent. |
9722 | Enhanced the UMS library to not report certain warnings related to persistence and queuing. These warnings were most apparent with using the UMDS product, which ensures that persistence and queuing behaviors are disabled, but when used with the UMS library, generated warnings. These warnings are not needed and have been removed. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
9707 | Fixed a problem with Receiver Paced Persistence where setting the source configuration option ume_write_delay (source) to zero did not override the store's repository-disk-write-delay value. The source can now override the store with ume_write_delay (source) set to zero. |
9805 | Fixed a problem where certain store log messages associated with registration sometimes caused a segmentation fault on 32-bit Linux. |
9481 | Fixed a problem where the UMM user interface did not initialize options to the correct default values for the options ume_retransmit_request_outstanding_maximum (receiver), ume_registration_interval (source), ume_sri_inter_sri_interval (source), and ume_sri_max_number_of_sri_per_update (source). Those options are now initialized to the correct default values. |
9462 | Enhanced a warning log message related to a store receiving a keepalive message that is not of type "STORE". The message now reports the IP and Port of the sender. |
9704 | Enhanced a store log message related to source registration errors. The message now reports the IP and Port of the source. |
9743 | Enhanced the keepalive protocol between the store and a persistent receiver to significantly reduce the keepalive traffic, especially for the case where a persistent receiver exits. This involved the introduction of a new configuration option, ume_proactive_keepalive_interval (context). |
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
9817 | Fixed a topic deafness problem where a temporary surge of messages flowing out of an endpoint portal will put one or more topic queues into a blocked state which does not unblock when the surge is over. Temporarily blocked topic queues are now correctly unblocked. |
9755 | Fixed a problem where a DRO endpoint could get stuck in an infinite loop sending topic resolution traffic. The problem is associated with the creation and deletion of topics and wildcard receivers which match them. This has been fixed. |
The most-significant update to UM version 6.9 is the introduction of certificate-based security (authentication and encryption).
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 highresolutiontimestamps.
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").
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 following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
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 ' 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. |
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. |
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. |
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
8880 | UM Router daemons using dual-tcp peer links with non-"select" FD management types might issue many ' 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. |
The most-significant update to UM version 6.8 is the replacement of the UM brokered queuing and JMS functionality (umestored) with an enhanced Apache ActiveMQ-based JMS/AMQP broker. The existing UMQ queuing API has been adapted to make use of ActiveMQ via the open standard AMQP protocol.
Note that when upgrading a brokered queuing application from a pre-6.8 version, the application source code may need to be changed and re-built.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
The Multiple Datagram Reception feature can greatly increase receiver performance during message bursts by reading multiple UDP datagrams with one recvmmsg()
system call.
For applications prone to bursts of many messages arriving at a receiver in a very short time, performance can degrade while the receiver reads each message individually. To accelerate message reception during these bursts, enable Multiple Datagram Reception.
This feature applies to all UDP-based sockets, such as topic resolution, MIM, and for transports LBT-RM and LBT-RU. You can use this feature with Linux kernel 2.6.33 or later, and glibc 2.12 or later.
To enable Multiple Datagram Reception, set the configuration option multiple_receive_maximum_datagrams (context) to the maximum number of datagrams per socket to receive in one pass.
The following configuration options default values are changed:
Option | Old Default | New Default | Notes |
---|---|---|---|
mim_incoming_address (context) | 224.10.10.21 | 0.0.0.0 | Disable MIM reception by default to avoid the possibility of default-configured applications sending data that is heard by all contexts. |
retransmit_request_outstanding_maximum (receiver) | 200 messages | 10 messages | Use a more efficient setting for streaming or persistent late join. |
response_tcp_deletion_timeout (context) | 2000 ms | 20,000 ms | Use a longer timeout to avoid wasted CPU time caused by unnecessary TCP socket tear down and recreation, along with associated log messages. |
resolver_domain_id_active_propagation_timeout (context) | -1 | 0 | This new value where contexts learn of domain IDs from active UM Routers only is now the default. |
fd_management_type (context) | wsaeventselect (Windows) | wincompport (Windows) |
The following new features and enhancements apply to UMP and UMQ products.
UM 6.8 introduces the following new API call:
This call updates the internal acking state up to the sequence number provided for throttled recovery, without acking anything.
The Persistent Store no longer requires a UM License file to operate. Persistent client application still require a license key with peristence enabled.
The following configuration options default values are changed:
Option | Old Default | New Default | Notes |
---|---|---|---|
use_otr (receiver) | 0 | 2 (enables only persistent receivers) | |
ume_registration_interval (source) | 500 ms | 3000 ms | Reduce overly-aggressive registration activity, which causes excess CPU use. Sources still register very quickly if all stores are available, and only wait for the ' |
ume_registration_interval (receiver) | 500 ms | 3000 ms | Reduce overly-aggressive registration activity, which causes excess CPU use. Receivers still register very quickly if all stores are available, and only wait for the ' |
ume_consensus_sequence_number_behavior (source) | majority | highest | For applications that do not reconcile and republish in-flight messages upon store re- registration in the same order they were originally sent, this revised default reduces the chances that a source republishes a previously sent sequence number with a different payload. |
ume_sri_inter_sri_interval (source) | 100 ms | 500 ms | This option, combined with option umesrimaxnumberofsriperupdatesource, determines how long a persistent source advertises stores to receivers after receiving an SRI request. These increased values reduce the likelihood of poor network performance and infrastructure components causing improper UMP registration behavior. |
ume_sri_max_number_of_sri_per_update (source) | 10 | 20 | |
ume_store_activity_timeout (source) | 3000 ms | 10,000 ms | This increased value allows for reduced heartbeat traffic, and decreases false declarations of inactive stores. You must set this option and the Persistent Store ' |
ume_store_behavior (source) | rr | qc | Round-Robin behavior is discontinued. |
The following Persistent Store configuration options default values are changed:
Option | Old Default | New Default | Notes |
---|---|---|---|
receiver-new-registration-rollback | 0 | 2147483647 | The previous default value of 0 resulted in new receivers not requesting any initial state. The new value causes receivers to request all of the data cached in the Persistent Stores that they might be interested in before they become active. You may still need to change these values either with configuration or programmatically. |
keepalive-interval | 500 ms | 3000 ms | This increased value reduces heartbeat traffic, and decreases false declarations of inactive stores. You must set this option and the ume_store_activity_timeout (source) option together. For information about how these values affect a phased upgrade from earlier versions, see Upgrading From Version Pre-6.0. |
proxy-election-interval | 5,000 ms | 60,000 ms | This increased value gives a UMP store more time to create the potentially large number of proxy sources that may result from a large-scale failure event. This reduces the chances of an overload situation in UMP store processes. |
source-check-interval | 100 ms | 750 | This increased value reduces CPU use in the UMP store. The previous default was too aggressive and did not significantly improve performance. |
The following new features and enhancements apply to the UMQ product.
Robust commodity-based JMS/AMQP broker features:
UMQ 6.8 introduces a new architecture for Ultra Messaging Queuing. The umestored daemon no longer implements queuing. To support queuing semantics for UMQ clients and both publish/subscribe and queuing semantics for JMS clients, the UMQ client API now supports the Advanced Messaging Queuing Protocol 1.0 wire protocol. Also, the UMQ package now includes Informatica-supported versions of the open-source Apache ActiveMQ broker and ActiveMQ JMS client API.
The Ultra Messaging JMS API and its associated file-based and JNDI configuration methods are now discontinued.
UMQ 6.8 also includes an Ultra Messaging Persistence Adapter for ActiveMQ, which implements a robust, commodity-based replication protocol between brokers using UM Persistence (with instances of umestored to persist the replication stream). The UM persistence adapter also implements a quorum-based heartbeat and leader-election protocol to coordinate broker availability.
The Ultra Load Balancing (ULB) feature is unaffected by the changes in this release and continues to operate as before.
New configuration option: broker (context).
New Broker transport statistics added:
You cannot set option umq_queue_participation (receiver) to a value of 2.
You cannot use the lbm_rcv_umq_deregister() function with brokered contexts.
For more information on upgrading queuing applications, see Queuing Upgrade Considerations.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
2219 | A Windows application crashes if you set configuration option fd_management_type (context) to ' |
6290 | In Java, if you reuse the same com::latencybusters::lbm::LBMMessageProperties object for every message sent, to adjust those properties dynamically between sends, you are forced to call com::latencybusters::lbm::LBMSourceSendExInfo::setMessageProperties. As a solution, the com::latencybusters::lbm::LBMSourceSendExInfo object now maintains a reference to an com::latencybusters::lbm::LBMMessageProperties object, if it is set, such that the current value of the com::latencybusters::lbm::LBMMessageProperties is used at the time of the send, rather than the value of the properties at the time which com::latencybusters::lbm::LBMSourceSendExInfo::setMessageProperties() was called. Also, for Java and .NET, the com::latencybusters::lbm::LBMSourceSendExInfo::setApplicationHeaderChain(), .setChannelInfo(), .setIndexInfo(), .setMessageProperties(), and .setTotalLifetimeInfo() APIs now update the flags of the com::latencybusters::lbm::LBMSourceSendExInfo as appropriate. |
8825 | An Ultra Messaging Java application might crash when using the com::latencybusters::lbm::UMERegistrationIdExCallbackInfo or UMERecoverySequenceNumberCallbackInfo callback methods. |
8926 | A hotfix or EBF version of the UM Router installer on Windows fails to install unless the version of Ultra Messaging on the system had exactly the same version number. As a solution, the UM Router installer on Windows now permit installation if the major and minor versions (x.y) are the same. |
9015 | Message Properties has a memory leak when adding more than 16 message properties. |
9024 | Ultra Messaging range configuration options pairs do not validate values to ensure that the low range value is less or equal to the high range value. |
9025 | The lbmpong.c sample application might cause the following fatal assert: |
9028 | If the function lbm_deserialize_response() has a NULL pointer for the second variable, the function returns an LBM_EINVAL. As a solution, the lbm_deserialize_response() function now fatally asserts if NULL is passed for the ' |
9029 | Ultra Messaging Datagram Bypass Layer (DBL) still uses Myricom DBL version 1. As a solution, Ultra Messaging now uses Myricom DBL version 3. |
9033 | A Windows receiver using FD management type wincompport might crash with the following log message: |
9034 | The lbmrd process no longer requires a license to run, but the help menu still references the ' |
9035 | An HFX receiver with option receiver_callback_service_time_enabled (context) option set to 1 might crash or operate without getting any data. |
9036 | When referenced from an IDE, the Ultra Messaging .NET API libraries do not specify Informatica as creator. |
9086 | Multi homed windows machines where the IP addresses of at least two NICs have the same number of digits might return the wrong IP address for an adapter name. |
9090 | For the LBT-RM transport, the ' |
9092 | In a Java sending application, if you set the message properties flag while sending but do not set the actual message properties object, the application might crash. |
9077 | When you set option resolver_multicast_incoming_address (context) to 0.0.0.0, the Ultra Messaging application exits during topic resolution. |
9143 | An Ultra Messaging application using fd management type |
9146 | When delivering a no source notification to a UM wildcard receiver application, it may experience a segmentation fault. |
9147 | Ultra Messaging unicast applications might process topic resolution data from lbrmd resolver daemons that they are not configured to use. |
9152 | An Ultra Messaging application using fd management type select might fatally assert with the following message: |
9155 | The lbm_event_dispatch() function might invoke a user callback before the associated event queue has been shut down. As a solution, the lbm_event_dispatch() function now checks the event queue shutdown status before calling a user callback, but still always processes UNBLOCK events. |
9155 | When sending serialized Ultra Messaging responses via the UM router, the Ultra Messaging request application might not receive them. |
9160 | For AIX systems, a setsockopt call for ' |
9169 | An application might freeze when a new thread tries to dispatch events after the event queue is shut down. |
9176 | In certain configurations, contexts do not learn Domain IDs as expected. To avoid this, all contexts in the same Topic Resolution Domain (TRD) must use the same value for the option resolver_domain_id_active_propagation_timeout (context). |
9191 | In Java, when you send message properties set in an com::latencybusters::lbm::LBMSourceSendExInfo object, garbage collection might corrupt the message. As a solution, com::latencybusters::lbm::LBMSourceSendExInfo objects now maintain a reference to com::latencybusters::lbm::LBMMessageProperties objects, if set. |
9205 | In Java, Ultra Messaging ignores the com::latencybusters::lbm::LBMApplicationHeaderChain object that is passed into the com::latencybusters::lbm::LBMSourceSendExInfo constructor. |
9298 | If an Ultra Messaging application's context thread processing is delayed significantly, the LBT-RM or LBT-RU receiver activity might time out before the application adds a receiver socket file descriptor to the Ultra Messaging file descriptor set. This causes a memory corruption. |
9370 | In a Windows application using transport TCP, the application might fatally assert with the following message: |
9372 | When you enable ' |
9436 | Message selectors that consist of only white space cause a message selector parsing error. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
4727 | If you restart all UMP stores simultaneously, UMP stores cannot recreate proxy sources. As a solution, the UMP Store now maintains information about proxy sources as part of the per-source state, and can elect proxy sources upon restart of the store daemon if necessary. Once restarted, a store waits for the configured source-activity-timeout before it attempts to create a proxy source. |
8814 | Some UMP store log messages are missing newlines. |
9023 | A receiver might disable the option to use Late Join without disabling UMP store participation, which is an invalid configuration. As a solution, if a receiver subscribes to a persistent source with ume_use_store (receiver) enabled but use_late_join (receiver) disabled, the use_late_join (receiver) option is automatically enabled for that source only. and you see the following log message: To opt out of Late Join when subscribing to persistent sources, you must also disable the ume_use_store (receiver) option. This will not cause a receiver with use_late_join (receiver) disabled to participate in Late Join from a non-persistent source. |
9037 | If a store with receiver paced persistence enabled experiences transport-level loss, then a UMP source might fail to decrement the flight size count and block indefinitely without sending. |
9091 | If you run the Java umesrc sample application without specifying a store, the application should exit, but does not. As a solution, the Java umesrc now displays an error message and exits if you do not specify a store. |
9094 | The .NET umesrc sample application crashes when using the |
9095 | The .NET umesrc sample application crashes when using the |
9214 | With low flight size settings, in-flight messages might experience minor processing delays. |
9302 | A store service starting up on Windows might lose data or become unstable if it attempts to read locked cache or state files. As a solution, the store now exits at startup if any cache or state files are found to be locked by another process. |
9323 | Ultra Messaging might incorrectly drop a message that follows a fragmented message. |
9443 | A receiver might get late join messages even if use_late_join (receiver) is disabled. This was caused by the original solution to bug 9027, which forcibly enabled use_late_join (receiver) for a receiver that joined a persistent stream from at least one source. This caused the receiver to also Late Join from non-persistent sources on the same topic discovered after the persistent source. As a solution, Late Join participation is now forcibly enabled only with respect to persistent sources; a receiver does not Late Join from non-persistent sources on the same topic if the use_late_join (receiver) option is disabled. See description for bug 9027 for more details. |
The following bug fixes apply to the UMQ product.
Change Request | Description |
---|---|
8621 | Configurations with multiple slave queue instances can cause data loss, crashes or an inability to restart without removal of cache and state files (resulting in data loss). Informatica recommends deploying only configurations with a single queue instance without slaves. To facilitate failover, configure the ' |
8798 | You cannot send messages with a zero-length payload. |
9148 | When a Java source uses ULB and sends messages with com::latencybusters::lbm::LBMSourceSendExInfo without a per-send client object, a memory leak occurs. As a solution, the call to the lbm_src_send_count_expected_terminals() function occurs only when there is a per-send client present. |
9305 | The sample Java application umqrcv.java might produce garbled output. |
9318 | The .NET sample application umqrcv.cs no longer deregisters upon exit by default. Use the - D command line option. |
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
8851 | Setting option <max-datagram> to a value other than the default of 65535 can cause the UM Router to hang. As a solution, the UM Router now discards wrong-sized messages and continues. |
8979 | Incorrect UM Router endpoint Domain IDs propagate continuously, without a mechanism for resetting other than restarting all contexts in the TRD. |
9026 | When a UM Router peer link closes the connection, the other peer issues the following log message: |
9144, 9153 | On UNIX platforms, UM Router daemons using single-tcp peer links might incorrectly declare peer links as inactive, and attempt to tear down and re-establish the peer connection. As a solution, for UNIX platforms the UM Router now forces the peer portal option fd_management_type (context) to ' |
9178 | In certain configurations using varying values of configuration option resolver_domain_id_active_propagation_timeout (context), Ultra Messaging might assign incorrect domain ID values. |
9299 | When using UM Router peer portals, a peer disconnect might result in a deadlock, which causes the UM Router to stop functioning and requires a restart. |
For Persistent Stores, the '<topic>
' option type value 'regexp
' is deprecated.
The following configuration options are deprecated and no longer function.
The following C API functions are deprecated and no longer function:
The following Java and .NET API functions are deprecated and no longer function:
<regex-pattern>
' configuration option element is deprecated.
The most-significant update to UM version 6.7.3 is the repair of a critical bug that primarily affects the UM Router (DRO) when using peer links.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
The following new features and enhancements apply to UMP and UMQ products.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
9508 | On Windows, an application might crash when a TCP receiver disconnects from a TCP source. |
9515 | Multi-homed windows machines where the IP addresses of at least two NICs have the same number of digits might return the wrong IP address for an adapter name. |
9516 | When using UM Router peer portals, a peer disconnect might result in a deadlock, which causes the UM Router to stop functioning and requires a restart. |
The following bug fixes apply to UMP and UMQ products.
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
Ultra Messaging version 6.7.2 consists only of the UMS product for the Stratus OpenVOS platform.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
The most-significant update to UM version 6.7 is the inclusion of the HP NonStop platform for the UMP product. Note that daemons are not supported on NonStop, only client applications.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
You can now set how a context learns the ID of its own Topic Resolution Domain (TRD) with option resolver_domain_id_active_propagation_timeout (context). This provides more flexibility in situations where you might need to change the Topic Resolution Domain (TRD) ID values for contexts.
Core-5688-1882
' and 'Core-5688-1891
' now display delay times in seconds and milliseconds, instead of seconds only.
The following new features and enhancements apply to UMP and UMQ products.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
3944 | The ' |
6186 | If the function lbm_deserialize_response() has a NULL pointer for the second variable, the function returns an LBM_EINVAL. As a solution, the lbm_deserialize_response() function now fatally asserts if NULL is passed for the ' |
7526 | If an Ultra Messaging application's context thread processing is delayed significantly, the LBT-RM or LBT-RU receiver activity might time out before the application adds a receiver socket file descriptor to the Ultra Messaging file descriptor set. This causes a memory corruption. |
7945 | When delivering a no source notification to a UM wildcard receiver application, it may experience a segmentation fault. |
8428 | The lbm_event_dispatch() function might invoke a user callback before the associated event queue has been shut down. As a solution, the lbm_event_dispatch() function now checks the event queue shutdown status before calling a user callback, but still always processes UNBLOCK events. |
8517 | An Ultra Messaging application using fd management type select might fatally assert with the following message: |
8750 | An HFX receiver with option receiver_callback_service_time_enabled (context) option set to 1 might crash or operate without getting any data. |
8788 | Ultra Messaging Datagram Bypass Layer (DBL) still uses Myricom DBL version 1. As a solution, Ultra Messaging now uses Myricom DBL version 3. |
8812 | Ultra Messaging range configuration options pairs do not validate values to ensure that the low range value is less or equal to the high range value. |
8856 | The lbmrd process no longer requires a license to run, but the help menu still references the ' |
8874 | When referenced from an IDE, the Ultra Messaging .NET API libraries do not specify Informatica as creator. |
8879 | An Ultra Messaging application using fd management type |
8898 | A Windows receiver using FD management type wincompport might crash with the following log message: |
8919 | For the LBT-RM transport, the lbm_rcv_transport_stats_lbtrm_t::nak_stm_min and lbm_rcv_transport_stats_lbtrm_t::nak_tx_min statistics might contain incorrect values, such as MAX_INT+1 or 0x100000000, due to being incorrectly initialized. As a solution, these statistics are now correctly initialized to 0. |
9013 | Ultra Messaging unicast applications might process topic resolution data from lbrmd resolver daemons that they are not configured to use. |
9040 | When sending serialized Ultra Messaging responses via the UM router, the Ultra Messaging request application might not receive them. |
9077 | When you set option resolver_multicast_incoming_address (context) to 0.0.0.0, the Ultra Messaging application exits during topic resolution. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
8933 | An Ultra Messaging Java application might crash when using the com::latencybusters::lbm::UMERegistrationIdExCallbackInfo or com::latencybusters::lbm::UMERecoverySequenceNumberCallbackInfo callback methods. |
5141 | If you run the Java umesrc sample application without specifying a store, the application should exit, but does not. As a solution, the Java umesrc now displays an error message and exits if you do not specify a store. |
6959 | When a UMP receiver subscribes to a UMP source with option ume_use_store (receiver) enabled, the application can not disable the option use_late_join (receiver). |
8140 | When option source_includes_topic_index (context) is enabled, the source string delivered to the UME recovery sequence number callback does not include the topic index. |
8963 | If a store with receiver paced persistence enabled experiences transport-level loss, then a UMP source might fail to decrement the flight size count and block indefinitely without sending. |
8995 | The .NET umesrc sample application crashes when using the |
9010 | The .NET umesrc sample application sometimes crashes when the store name length equals 0. |
The following bug fixes apply to the UMQ product.
Change Request | Description |
---|---|
8950 | When a Java source uses ULB and sends messages with com::latencybusters::lbm::LBMSourceSendExInfo without a per-send client object, a memory leak occurs. As a solution, the call to the lbm_src_send_count_expected_terminals() function occurs only when there is a per-send client present. |
8966 | When a queue daemon terminates and restarts with a reset state, the source might resubmit a message that the queue daemon has already stabilized. |
8967 | When the queue daemon receives messages via UMQ pro-active retransmission, some of these messages might not have the LBM_MSG_FLAG_UMQ_RESUBMITTED flag. |
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
8859, 8871, 9002 | On UNIX platforms, UM Router daemons using single-tcp peer links might incorrectly declare peer links as inactive, and attempt to tear down and re-establish the peer connection. As a solution, for UNIX platforms the UM Router now forces the peer portal option fd_management_type (context) to ' |
8873 | When a UM Router peer link closes the connection, the other peer issues the following log message: |
8979 | Incorrect UM Router endpoint Domain IDs propagate continuously, without a mechanism for resetting other than restarting all contexts in the TRD. |
The most-significant update to UM version 6.7 is interoperability with pre-6.0 versions of UM. Applications and persistent stores at version 6.7 are able to exchange messages and control information with 5.x applications, especially 5.3.6.
However, note that 6.7 applications are not able to interoperate with daemon components of 5.x, including the persistent store and the 5.x gateway. Also, 5.x applications are not able to interoperate with version 6.7 UM Router (DRO).
The following new features and enhancements apply to UMS, UMP, and UMQ products.
Receive-Side Batching - reduces latency and increases throughput in UM applications by bundling multiple messages to deliver. This bypasses the need to perform a boundary crossing for each delivered message.
You enable Receiver-Side Batching with configuration option delivery_control_message_batching (context). With C and .NET applications, you must be using an event queue for this feature (this is not a requirement for Java applications).
The unicast resolver daemon, lbmrd, no longer requires an Ultra Messaging license to run.
The unicast resolver daemon, lbmrd, now has command-line options to set buffer size in bytes for the receive socket buffer (-r
flag) and the send socket buffer (-s
flag).
In addition to Receive-Side Batching, other improvements have further reduced the latency and increased the throughput of the Java API.
When an error occurs on a socket while sending an ACK in LBT-RU, UM now generates an EOS immediately.
You can now set a source activity timeout for LBT-TCP sessions, with new configuration option transport_tcp_activity_timeout (source).
XInclude
' mechanism to merge multiple configuration files.
The following new features and enhancements apply to UMP and UMQ products.
Throttled Delivery - you can limit the number of message fragments that a persistent receiver delivers to a receiver application beyond the current highest consumed message fragment. This limits the amount of memory a receiver uses when that receiver consumes messages at rate much slower than the recovery rate from a UMP store or slower than the UMP source stream. To use UMP Throttled Delivery, set the new option ume_application_outstanding_maximum (receiver).
Enhanced Quorum/Consensus Store Registration and Message Stability
all-active
', the source requires, minimally, a quorum of stores to successfully stabilize a message within the group.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
XInclude
' mechanism to merge multiple configuration files.
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
2551 | With adaptive batching enabled, applications sometimes issue a warning assertion, |
5242 | Web monitor support link text displays, "29West Ultra Messaging Support". This is now changed to display, "Informatica Ultra Messaging Support". |
5626 | Ultra Messaging client XML configuration validation sometimes fails needlessly. As a solution, XML configuration parsing now tolerates invalid values such that you can use a single XML config file or UMM configuration template across multiple platforms, even if it contains option values that are not valid for all platforms. |
7261 | If automatic monitoring is misconfigured, instead of silently failing the creation and proceeding with a context or event queue setup, Ultra Messaging now logs the following messages: |
7917 | Destroying a source that matches a wildcard pattern, while dispatching an event queue with events from that source, creates a race condition. |
7939 | LBT-RU does not indicate in the packet when a datagram is a retransmission. As a solution, Ultra Messaging now marks retransmitted LBT-RU datagrams with a retransmit flag. This flag is visible only with packet dissection tools such as Wireshark. |
7944 | Using the function lbm_context_attr_dup() might cause a |
8024 | For Late Join, OTR, or Request/Response, Ultra Messaging does not perform NAT translation correctly. |
8065 | When using UM Routers (DRO), Ultra Messaging applications can cache old data that later can cause errors when creating and deleting wildcard receivers. The Ultra Messaging application context now cleans out this old data when it receives UM Router proxy source delete messages. |
8108 | Ultra Messaging accepts configuration option resolver_unicast_daemon (context) when it specifies more than one address. As a solution, incorrectly setting this option now issues message |
8114 | The lbmrd resolver sometimes issues message |
8153 | When a receiver receives increasingly large messages, a memory leak might occur. |
8150 | Ultra Messaging may now declare fragments requested for retransmission by a receiver from a store as unrecoverable prior to the retransmission request timeout, if all stores have declared that fragment unrecoverable. |
8160 | On a 64-bit UNIX platform using a UM XML configuration file, certain context names, event queue names, topic names, and wildcard patterns are not picked up, even though the configuration file specifies them. |
8198 | Mellanox Ultra Messaging applications with option ud_acceleration (context) set to 1 were forcing the VMA_SELECT_POLL environment variable to 0, resulting in poor latency performance. Applications can now set VMA_SELECT_POLL to the desired value, or can allow the Mellanox default value. |
8277 | LBT-SMX transport statistics include unsupported request/response statistics. As a solution the field lbm_reqs_rcved is renamed to ' |
8283 | LBMMON statistics receivers now report correct values for SMX transport statistics. |
8295 | The lbmrd unicast resolver daemon propagates certain non-LBMR messages to clients. As a solution, lbmrd now ignores these messages. |
8444 | When using LBT-RU and Source Side Filtering, a |
8557 | When you configure LBT-RU context and receiver port ranges to overlap, Ultra Messaging allows this and logs many copies of |
8591 | Sometimes for invalid receiver configuration combinations, Ultra Messaging repeats warning log messages for every transport joined. As a solution, invalid receiver configuration combinations now issue this warning once at receiver creation time. |
8608 | A Java or .NET hot failover receiver that experiences loss might assert with fatal assertion:[d_entry->topic_entry != NULL]. |
8610 | Message properties do not clear in Java and C# before loading the properties of the next message to be delivered. |
8633 | The function lbm_context_process_events() returns -1 for non-critical errors without further description. As a solution, Ultra Messaging no longer returns -1 from lbm_context_process_events() for non-critical errors. |
8662 | In the Java API, the array of stores returned by com::latencybusters::lbm::LBMSourceAttributes::getStores() contains an incorrect number of entries when using named stores. In addition to the solution for this, the com::latencybusters::lbm::UMEStoreEntry class now contains a new field to provide store name information. |
8682 | The lbm_serialize_response() function does not include the Domain ID in the serialized message. When a serialized response message traverses a UM Router (DRO) to a different topic resolution domain, the message cannot reach the requester, and the lbm_deserialize_response() function logs the following warning: |
8726 | If you set ume_retention_unique_confirmations (source) to 0 and ume_confirmed_delivery_notification (source) to 3, the first delivery confirmation sets the UNIQUE_ACKS flag. As a solution, this flag now sets only if you set option ume_retention_unique_confirmations (source) to a value greater than 0 and the number of confirmations received are enough to exceed the threshold. |
8732 | With option hf_duplicate_delivery (receiver) and ordered delivery enabled, hot failover receivers might deliver duplicate messages before the original messages. With this solution, messages flagged as duplicate are always be delivered after messages not flagged as duplicate. |
8733 | Hot failover receivers might leak memory when processing HF reset commands or when deleted. |
8743 | An Ultra Messaging application or daemon fatally asserts with message: |
8797 | Java method com::latencybusters::lbm::LBM::setDebugMask() sets incorrect mask values on 32-bit platforms. |
8868 | In the Java and .NET APIs, some objects accessible from an LBMMessage object are sometimes newly created for each LBMMessage delivered, in violation of the Zero Object Delivery (ZOD) functionality. The affected objects include com::latencybusters::lbm::LBMMessageChannelInfo for messages received on a spectrum channel, com::latencybusters::lbm::UMQIndexInfo for queueing messages with an index, and com::latencybusters::lbm::UMQMessageId for all queueing or ULB messages received. As a solution, com::latencybusters::lbm::LBMMessage objects now re-use these object types for each new message delivery, rather than creating new objects.
|
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
1013 | When a umestored configuration file sets the ' |
3894 | When both registration IDs and session IDs are present, Ultra Messaging issues a log message stating that registration IDs are being ignored, but then fails to ignore them. |
5273 | Upon startup, a store could delay persistence of messages for up to the configured retransmit_request_generation_interval value, while attempting to recover messages from the source that the source has already reclaimed. As a solution, the source reports the non-availability of the requested messages back to the store, and the store can begin persistence without extra delay. |
5498 | The umestored daemon warns that option resolver_active_threshold (context) is deprecated. This warning is now removed. Setting this option continues to have no effect. |
6112 | The umercv sample application prints session IDs in decimal format. As a resolution, all sample applications now print Session IDs in hexadecimal, and continue to print registration IDs in decimal. |
7282, 8223 | A store might fail in certain incorrect registration scenarios. As a solution, if applications present invalid session ID and registration ID combinations, they now receive a registration error. |
8171 | An RPP-configured source can get an assert with the following log message: |
8185 | RPP stores can now send a stability ack for a message that was lost but later recovered via retransmission. |
8245 | Configuring UMP stores using non-increasing group index order, such as configuring storeA in group 2 before storeB in group 1, causes erroneous registration changes and indeterminate receiver behavior. |
8677 | With the Java API, on a Persistence deregistration event, the Ultra Messaging library delivers a com::latencybusters::lbm::UMEDeregistrationCompleteInfo with invalid contents. As a solution, since there is no information associated with this event, the com::latencybusters::lbm::LBMMessage::deregistrationCompleteInfo() method now always returns null. |
8704 | Ultra Messaging handles stability acknowledgements on the same thread as retransmissions, affecting the consistency of latency. As a solution, stability acknowledgements now use a different thread. |
8710 | With option ume_confirmed_delivery_notification (source) set to 3, after ume_retention_unique_confirmations (source) is reached, the whole message confirmed flag is not set for delivery confirmations for all receivers. |
8711 | In the .NET (C#) API, there are no methods to access objects com::latencybusters::lbm::UMESourceEventDeregistrationSuccessInfo and com::latencybusters::lbm::UMESourceEventDeregistrationCompleteInfo. As a solution, the C# library now includes accessor methods. |
8747 | Sometimes an application receives and acts upon retransmit response information intended for a different application. This solution makes retransmit requests more unique to the application issuing the request to prevent potential cross-contamination of retransmit response information during application restarts. |
8766 | UMP stores might accept messages from a UMP source that has not completed the registration process, resulting in the following fatal assertion: |
8804 | If there is a disk error modifying the state file on receiver registration, the umestored daemon writes to an invalid location, possibly causing a corrupted state file or umestored segmentation fault. As a solution, umestored no longer writes to an invalid location but instead issues a log-message warning. |
8808 | Store daemons sometimes issue a Store-5688-5258 message. As a solution, the umestored configuration code now disallows using multiple async write callbacks. This prevents situations where multiple writes could be executed out of order, causing data corruption. |
The following bug fixes apply to the UMQ product.
Change Request | Description |
---|---|
8315 | In the .NET API, Ultra Messaging reuses com::latencybusters::lbm::LBMMessageChannelInfo, com::latencybusters::lbm::UMQMessageId, and com::latencybusters::lbm::UMQIndexInfo objects between different com::latencybusters::lbm::LBMMessage objects for delivery, reducing garbage collection overhead. |
8325 | ULB reassigns messages even if option umq_ulb_application_set_message_max_reassignments (source) is set to 1. |
8536 | When restarting the UMQ daemon while handling zero-length-messages, the daemon sometimes fails with the following fatal assertion: |
8601 | An Ultra Messaging application crashes when ULB or UMQ receivers send a Consumption Report for a message after their source transport had been torn down. |
The following bug fixes apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
7276 | When using an aggressive keepalive configuration on a UM Router (DRO) peer link, the UM Router might fatally terminate. |
8256 | When configuring a UM Router (DRO) Peer Connection on a Microsoft Windows machine, the single-tcp configuration option can result in no message traffic across the link. As a solution, Ultra Messaging now handles all documented error conditions, instead of only ' |
8303 | A UM Router (DRO) might crash when peer connections between two UM Routers quickly disconnect and reconnect. |
8446 | For Windows and 32-bit UNIX platforms, the web monitor displays non-zero values for the statistic "<i>Transport
topic fragments/bytes dropped due to blocking</i>", but Ultra Messaging does not log the message |
8459 | Single TCP connections repeatedly disconnect and reconnect under certain conditions. |
8461 | UM Router (DRO) peer connections, both dual and single TCP, might encounter an error and not be restarted. One side effect for the solution to this is that the UM Router now logs every connection attempt failure, resulting in more log messages if the other peer is not up. |
8752 | Error message: |
8763 | The UM Router (DRO) sometimes asserts with the messages: WARNING: failed assertion [Portal->peer.adjacent_node_id==0] at line 2679 in ../../../../src/gateway/tnwgpeer.c and: FATAL: failed assertion [void_o_entry!=NULL] at line 4205 in ../../../../src/gateway/ tnwgpeer.c |
The Round-Robin Store failover configuration is deprecated.
repository-disk-max-write-async-cbs
' option is deprecated.
The most-significant update to UM version 6.5 is the introduction of the Ultra Messaging System Monitoring option.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
7911 | You can now configure Ultra Messaging to use Solarflare Onload to select transport sockets for acceleration. Onload is a kernel-bypass technology that accelerates message traffic and operates with Solarflare 10GbE Ethernet NICs. See Solarflare® Onload for more information. |
7974 | The lbmrd daemon now includes command line option '-f ' or '--lic-file ' to let you specify the Ultra Messaging license file. |
The following new features and enhancements apply to UMP and UMQ products.
Change Request | Description |
---|---|
7478 | The Persistent Store Web Monitor now displays the Session ID on the Store page, Source page, and Receiver page. |
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
Change Request | Description |
---|---|
7694 | You can now use the LBT-SMX transport to send ingress message traffic to a UM Router (DRO). The UM Router no longer ignores topic resolution traffic from a LBT-SMX source. You still cannot, however, use LBT-SMX to send egress traffic from a UM Router. |
In conjunction with the Ultra Messaging 6.5 release, Informatica has introduced the Ultra Messaging System Monitor Option (UMSM). Administrators can use UMSM to monitor components of an Ultra Messaging deployment. The UMSM dashboard displays the status of components, such as UM hosts, transports, topic resolution domains, and application instances, as well as UM statistics.
UMSM monitors the messaging traffic of Ultra Messaging versions 5.0 and later.
With the Ultra Messaging 6.5 release, Ultra Messaging Automatic Monitoring sends the following aggregated receiver statistics and subscription information to UMSM:
As the collection of aggregated statistics can increase the latency of message delivery, Ultra Messaging does not collect them by default. You can enable UMSM to collect the aggregated message loss statistics with the UM configuration options, monitor_interval (receiver) and monitor_interval (wildcard_receiver). You can access the aggregated receiver statistics with UMSM. The lbmmon API does not provide access to the aggregated receiver statistics.
The Ultra Messaging 6.5 release contains a third new UM configuration option, receiver_callback_service_time_enabled (context), which enables UMSM to maintain receiver callback service times. The lbmmon API does not provide access to the receiver callback service times.
The following bug fixes apply to UMS, UMP, and UMQ products.
The following bug fixes apply to UMP and UMQ products.
The following bug fixes apply to the UMQ product.
The following bug fixes apply to the Dynamic Routing Option (DRO).
The most-significant update to UM version 6.1 is the introduction of the LBT-SMX transport type. See New Transport LBT-SMX.
The following new features and enhancements apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
Added LBT-SMX | |
7529 | Added the polling of context events when using lbm_context_process_events() with operational_mode (context) set to |
7664 | Ultra Messaging no longer sends a Topic Management Record (TMR) when an application deletes a receiver in a standard way with, for example lbm_rcv_delete(), when Dynamic Routers do not exist in the Topic Resolution domain. TMRs specifically inform a Dynamic Router that a receiver for a particular topic has been shutdown. (Without the presence of Dynamic Routers, TMRs become unnecessary network traffic.) |
7551 | Added SIGTERM to the list of signals that initiate clean shutdown of all Ultra Messaging daemons. |
4785 | Added the ability in the Java and .NET APIs to restrict receiver objects to a single LBMReceiverCallback with a new API: com::latencybusters::lbm::LBMReceiverAttributes::enableSingleReceiverCallback(). You can reduce latencies and increase throughput by using a single callback which removes the need for any synchronization of multiple callbacks within UM during message delivery. |
7752 | The Java API now supports Java version 1.7. |
The LBT-SMX (shared memory acceleration) transport is an Interprocess Communication (IPC) transport you can use for the lowest latency message streaming. LBT-SMX is faster, though more-restrictive than the LBT-IPC transport. Like LBT-IPC, sources can publish topic messages to a shared memory area from which receivers can read topic messages. Unlike LBT-IPC, the native APIs for the LBT-SMX transport are not thread safe and do not support all UM features such as message batching or fragmentation.
You can use either the native LBT-SMX API calls, lbm_src_buff_acquire() and lbm_src_buffs_complete() to send over LBT-SMX or you can use lbm_src_send_*() API calls. The existing send APIs are thread safe with SMX, but they incur a synchronization overhead and thus are slower than the native LBT-SMX API calls.
LBT-SMX operates on the following Ultra Messaging 64-bit packages:
The example applications lbmlatping.* and lbmlatpong.* show how to use the native LBT-SMX API calls. All three APIs (C API, Java API, and .NET API) have identically named example applications. Other example applications can use the LBT-SMX transport with the use of a UM configuration file containing source transport lbtsmx. You cannot use LBT-SMX with example applications for features not supported by LBT-SMX, such as lbmreq.*, lbmresp.*, lbmrcvq.* or lbmwrcvq.*.
The LBT-SMX configuration options are similar to the LBT-IPC transport options. See Transport Transport LBT-SMX Operation Options.
You can use Automatic Monitoring, UM API retrieve/reset calls, and LBMMON APIs to access LBT-SMX source and receiver transport statistics. To increase performance, the LBT-SMX transport does not collect statistics by default. Set the UM configuration option transportlbtsmxmessagestatisticsenabledcontext to 1 to enable the collection of transport statistics.
The following new features and enhancements apply to UMP and UMQ products.
The following new features and enhancements apply to the UMQ product.
The following new features and enhancements apply to the Dynamic Routing Option (DRO).
The following bug fixes apply to UMS, UMP, and UMQ products.
Change Request | Description |
---|---|
7656 | Fixed a problem with lbm_set_umm_info() that caused it to always return 0 (success). The function now returns -1 on a parsing error of a returned UMM configuration file, UMM Daemon login error or a communications error with the UMM Daemon. |
The following bug fixes apply to UMP and UMQ products.
Change Request | Description |
---|---|
7606 | When a receiver tries to register with a store using a RegID in use by another receiver, the application error log message now includes the RegID: |
7604 7666 | When a source tries to register with a store using a RegID in use by another source, the application error log message now includes the RegID, store number and the store's IP address and port: |
7543 | Corrected a problem with UMP stores that resulted in stability acknowledgements sent from a persistent store to the source during a store proxy source election contained invalid topic and transport indexes. As a result, the source discarded the stability acknowledgements. |
7658 | The umestored Web Monitor has been changed to correctly display the Request Receive Rate, Service Rate and Drop Rate. Previously the rates only showed activity for the last second instead of a true activity per second rate. As a result the rates often displayed 0 (zero). A link has been added to the Persistent Store Page to reset the rate calculation. The rates can be reset on a per store basis. |
7262 | When a store receives a retransmission request from an unknown source, the error log message now includes the IP address and port number of the unknown source: Core-5688-696: received retransmit request for unknown source 192.168. 101.112:45512 |
The following bug fixes apply to the UMQ product.
Change Request | Description |
---|---|
7545 | Corrected an issue that prevented a UMQ receiver for a dead letter topic from registering with a queue if any queue instance did not have a record of the creation of the dead letter topic. |
The following bug fixes apply to the Dynamic Routing Option (DRO).
The most-significant update to UM version 6.0 is the introduction of the Dynamic Routing Option (DRO). The UM Router component fully replaces the "Gateway" component, which is discontinued as of UM 6.0. See the Dynamic Routing Guide for full information.
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 back trace listing to the log file upon encountering a fatal assertion.
Added the following configuration options to help control receiver start-up traffic:
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 otrrequestmessagetimeoutreceiver.
The following new features and enhancements apply to UMP and UMQ products.
Proactive Retransmissions - This feature address two types of loss:
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.
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:
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:
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.
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 UM Router (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.
PRICE.STOCK.*.IBM
' creates a wildcard receiver with a topic pattern of '^PRICE\.STOCK\.[^/]+\.IBM$
'. [ \ ^ $ . | ? + ( ) { } *
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.
UM 6.0 is the first version which offers the Dynamic Routing Option (DRO). See the Dynamic Routing Guide for full information.
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: "<i>The .NET API does not support message selectors with Unicode symbols and causes receiver creation to fail.</i>"
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.
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, "<i>Core-5688-1881: handle events returned error 4</i>" and "<i>CoreApi-5480-28: could not insert rcvdc_loss_rec ASL map.</i>"
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.
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".
The following bug fixes apply to the Dynamic Routing Option (DRO).
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).
Option otr_request_duration (receiver) is deprecated and replaced with the new option otrrequestmessagetimeoutreceiver.
The following important corrections and improvements made to the documentation after it was released.