27. Release LBM 4.2 / UME 3.2 / UMQ 2.1 - March 2011

27.1. LBM 4.2

27.1.1. New Features

  • Added new receiver scope configuration option, transport_demux_tablesz that sets the size of the table used for mapping topic indices to delivery controllers.

  • Added new configuration option, network_compatibility_mode to restrict the types of message headers that can be sent onto the network, for the purpose of improved backward compatibility.

  • Added new configuration option, retransmit_initial_sequence_number_request that allows topic advertisements (TIR) to trigger a late join if receivers detect a gap in messages instead of waiting for either a subsequent message or a TSNI.

  • Added lbm_send_request_ex() call to the LBM C API (with corresponding LBMSource.send() methods in the Java and .NET APIs) to allow sending requests with lbm_src_send_ex_info_t or LBMSourceSendExInfo objects and per-send client objects.

  • Added a new environment variable, LBM_DEBUG_MAXSIZE, that allows the LBM DEBUG log to roll over when the DEBUG log exceeds the maximum size specified by this variable (in bytes). The log rolls over slightly before reaching the limit, because adding the current log message to the log would exceed the maximum set with the environment variable.

27.1.2. Updated Features

  • Added the Hot Failover Concentrator (HFX) feature that allows Hot Failover streams on multiple contexts to be treated as a single hot failover stream. See Hot Failover Across Multiple Contexts.

  • TSNIs (transport topic sequence number information) have been enabled by default on TCP transports. See also transport_topic_sequence_number_info_interval.

  • Modified internal timer handling to be more judicious when waking up the context thread to schedule a timer.

  • Added command line delay option in seconds (-d, --delay=NUM) for C, Java and .NET sample applications that send messages.

  • Implemented batching in communication between UM Gateway peer portals to improve throughput.

  • The UM Gateway now allows empty (zero-length) topics and wildcard topic patterns.

  • Context topic advertisements may now be disabled by setting, resolver_context_advertisement_interval to 0 (zero). Note: Disabling context advertisements is not recommended unless specifically advised to do so.

  • Zero Object Delivery (ZOD) is now enabled by default for both Java and .NET. Applications wishing to take advantage of ZOD should call Dispose() on messages before the end of the message callback.

    Addendum: To clarify, please note that ZOD is now an always-on feature whenever you call Dispose(). If you do not call Dispose(), you must call Promote() to promote the message to an object. Conversely, if you do not call Promote(), you must call Dispose().

  • Added the new configuration option mim_delivery_control_loss_check_interval to periodically check Multicast Immediate Messaging (MIM) delivery controllers for loss. Option defaults to 0 and follows the same basic semantics as delivery_control_loss_check_interval.

  • Application linking with the SmartHeap memory manager is no longer permitted under any provision of an LBM license alone. Existing Informatica applications that use the SmartHeap allocator, such as the UME store daemon (umestored) and the UMCache daemon (umcached) will continue to use the SmartHeap allocator.

27.1.3. Bug Fixes

  • Added an isClosed() function to LBMSource.cs and LBMSource.java to check if a source object has a valid C reference.

  • Fixed a Fatal Assert caused by a race condition that could occur when deleting an LBT-RDMA receiver at the same moment a source disconnect event was being processed.

  • Corrected a problem with LBT-RU and LBT-RDMA that caused receivers to bind to the wrong source address. These transports now check the IN_ADDRANY value before overwriting the source IP address.

  • Corrected a problem when running a context in sequential mode that prevented the transport threads from creating the event processing thread. Transport threads now force embedded mode.

  • Fixed a problem that prevented non-blocking sends from returning EWOULDBLOCK when either the rate limiter was met or the inflight messages met the flight size.

  • Corrected a UM Gateway issue that caused the fatal assertion, FATAL: failed assertion [wt->topic!=NULL] at line 4444 in ../../../../src/gateway/tnwgendpoint.c.

  • Fixed a problem on Solaris i386 that caused TCP sends to always be blocking sends.

  • Corrected misspellings on the UM Gateway peer portal Web Monitor page.

  • Corrected several UM Gateway Web Monitor statistics that were being updated incorrectly, resulting in values which were too large. The statistics involved are:

    On the main page:

    • Unknown transport fragment bytes received

    Endpoint sending:

    • Transport topic bytes dropped due to no source

    • Duplicate transport topic bytes dropped

    Endpoint receiving:

    • Transport topic bytes received from an unknown source

    • Transport topic request bytes received with no forwarding info

    • Immediate topic bytes received for an an unknown topic

    • Immediate topic bytes received

    • Transport topic bytes received

    • Immediate topicless bytes received

    • Unicast data bytes received

  • Fixed a seg fault that could occur when canceling a recurring timer from within the callback of that recurring timer.

  • Added the ability to forward (flood) Multicast Immediate Messaging (MIM) traffic from a UM Gateway portal. You enable this feature by configuring the portal with the <flood-mim/> element in the UM Gateway configuration file.

  • Fixed a problem in the UM Gateway that prevented topic Multicast Immediate Messaging (MIM) messages for which no receiver exists at the endpoint portal from updating the endpoint's MIM statistics. The endpoint now accurately reports the number of topic MIM messages that have been dropped due to no receiver for the topic.

  • Corrected a problem with the Multi-Transport Threads feature that consisted of the control block managing the thread pool per context never being freed. It is now freed upon context deletion.

  • Corrected two small memory leaks in the UM Gateway.

  • Corrected a problem with Multicast Immediate Messaging (MIM) that resulted in the callback specified by immediate_message_receiver_function not to be called if a wildcard receiver existed in the context.

  • Removed the statistics, Transport topic loss/loss burst events received and Immediate loss events received from the UM Gateway Web Monitor for Endpoint Portals. Since the UM Gateway uses arrival order delivery, no loss events are ever delivered, so these statistics would always be zero.

  • An issue was corrected in the UM Gateway which could lead to the non-fatal assert, WARNING: failed assertion [result!=0] at line 416 in../../../../src/lib/lbm/lbmrxsctlr.c. This could also lead to another fatal assert, FATAL: failed assertion [info->sqn==ctlr->trail_sqn] at line 249 in../../../../src/lib/lbm/lbmrxsctlr.c

  • Fixed a problem that could cause some of multiple threads calling lbm_send_response() to hang indefinitely.

  • Corrected numerous problems with the stability and reliability of the UM Gateway.

  • Fixed a problem that could sometimes cause lbm_context_topic_resolution_request() to incorrectly return failure when it had actually succeeded.

27.1.4. Known Issues

  • When using Event Queues with the Java API on Mac OS X kernel 9.4, core dumps have occurred. Mac OS X kernel versions prior to 9.4 have not produced this behavior. Informatica is investigating this issue.

  • When using LBT-IPC, a seg fault can occur when sending messages larger than 65,535 bytes when ordered_delivery has been set to 0 (zero). The seg fault occurs when fragments are lost. Setting transport_lbtipc_behavior to receiver_paced avoids the seg fault by eliminating loss. Informatica is investigating this issue.

  • When using the LBT-RDMA transport with Java applications, a segfault can occur if you kill a receiver with Ctrl-C. As a workaround, use the JVM option, -Xrs. Informatica is investigating this problem.

  • If you use the current version of VMS (3.2.8), LBM 4.1 issues the following warning: LOG Level 5: LBT-RDMA: VMS Logger Message (Error): vmss_create_store: 196[E] vms_listen: rdma_bind_addr failed (r=-1). This warning indicates that rdma_bind failed for ethernet interfaces, which is expected behavior. Currently, VMS attempts rdma_bind on all interfaces. When released, VMS version 3.2.9 will only run rdma_bind on infiniband-capable interfaces.

  • When using Automatic Monitoring with ud_acceleration and the epoll file descriptor option, LBM may leave a monitoring thread running after context deletion. This situation produces the following error: VMA ERROR : epoll_wait_call:36:epoll_wait_call() epfd 48 not found. Informatica is investigating this problem.

  • A requesting application using a UM Gateway may not receive the expected number of responses. The problem occurs if the responses exceed the maximum datagram size, are fragmented and the gateway must forward simultaneous fragmented responses. In this case the fragments may become intermingled and result in a response not being delivered as expected. The requesting application receives a warning similar to: WARNING: failed assertion [offset==0] at line 1627 in ../../../../src/lib/lbm/lbmqr.c. Informatica is investigating this problem.

  • At the present time, 32-bit applications cannot interact with 64-bt applications using the LBT-IPC transport. As a result, a 64-bit UM Gateway cannot interact with a 32-bit application using LBT-IPC. It can only interact with a 64-bit application. Likewise, a 32-bit UM Gateway can only interact with a 32-bit application.

  • The UM Gateway does not currently support queuing at this time, only streaming and persistence. This will be resolved in a future release.

  • The UM Gateway is not supported as a standalone Windows service at this time. This will be resolved in a future release.

  • When using the UM Gateway in a four gateway "full-mesh" configuration (i.e., all gateways connected) the following instabilities have been observed.

    • Requesting applications can receive multiple or unending responses.

    • Restarting a single gateway has resulted in the crash of other gateways.

    • Running the same set of tests simultaneously in 2 opposite directions over a set of gateways causes fatal asserts in the UM Gateways. Although this is not a typical user configuration, more complex gateway configurations could simulate this effect. The UM Gateway is designed to successfully forward the same set of topic messages sent both ways across a set of gateways.

    These behaviors have not been seen in other, more typical gateway configurations. Informatica is investigating this problem.

  • Under certain extreme conditions manufactured by configuring atypically low timeout settings, the UM Gateway has been observed to terminate with various fatal assertions. We believe this to be the result of a race condition exploited by the unusually low timer settings. This issue has not been seen with less aggressive or default timer settings. Informatica continues to investigate this problem.

27.1.5. LBM 4.0 Changes

The following changes were implemented in LBM Release 4.0 but omitted from the LBM 4.0 Updated Features section. They have also been added to that section.

  • Added ability to set a LBM Configuration Option interface by name. When setting by name the configuration option's value must be wrapped in quotes.

27.2. UME 3.2

27.2.1. New Features

  • Added new source scope configuration option, use_extended_reclaim_notifications that allows your application to receive the new, expanded message reclaim notification or the standard notification. The new notification or source event, LBM_SRC_EVENT_UME_MESSAGE_RECLAIMED_EX, contains a new field, LBM_SRC_EVENT_UME_MESSAGE_RECLAIMED_EX_FLAG_FORCED that UME sets if the reclamation is a forced reclaim.

  • Added new configuration option, ume_session_id that specifies a Session ID for a source, receiver or a context. A Session ID is a 64-bit value that uniquely identifies any set of sources with unique topics and receivers with unique topics. A single Session ID allows UME stores to correctly identify all the sources and receivers for a particular application. See also Managing RegIDs with Session IDs.

27.2.2. Bug Fixes

  • Fixed a problem that could cause a fatal assert in a UME store in a quorum/consensus configuration that uses a low source-activity-timeout setting when a source is rapidly added and then deleted.

  • Fixed an issue with memory stores that could cause messages received by a store via late join to be discarded when the source starts.

  • Fixed a problem that allowed UME stores with allow-proxy-source set to 0 (Disable) to participate in proxy source elections.

  • Fixed a problem that causes UME receivers to report unrecoverable loss during recovery for messages that were unavailable at some stores, but still available at others.

  • Corrected an issue where UME PREG error responses were not being forwarded through the gateway.

27.2.3. Known Issues

  • Receivers using event queues and Spectrum with UME can experience a SIGSEGV while shutting down if events still exist on the event queue when it is deleted. 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. Once the dispatch thread exits, it is safe to proceed with context deletion. 29West is working on a solution to this problem.

27.3. UMQ 2.1

27.3.1. New Features

  • Implemented Indexed Queuing which allows sources to send messages with an index (an unsigned 64-bit integer or a string up to 216 characters in length). The Queue assigns all messages sent with a particular index to an individual receiver in each Application Set. You can set policies for index assignment in the Queue's umestored XML configuration file. See Indexed Queuing.

  • Implemented a Dead Letter Queue feature to isolate unconsumed messages which prevents these messages from causing application or queuing system problems. See Dead Letter Queue.

  • Added the ability to set a message's total lifetime for both UMQ and ULB sources. See Message Lifetimes.

  • Added lbm_msg_umq_reassign() in the C API to allow a UMQ or ULB receiver to either reassign or discard a message. Corresponding methods have been added in the Java API and the .NET API.

  • Added two new receiver configuration options, umq_ulb_source_check_interval and umq_ulb_source_activity_timeout to allow a ULB receiver to proactively attempt re-registration with a ULB source if the receiver has not seen any activity (including keepalives) from that source in a specified amount of time, but the source's transport session is still alive and valid.

27.3.2. Bug Fixes

  • Fixed a problem that caused a Queue using Serial Queue Dissemination (SQD) to incorrectly flag certain messages sent to receivers as IMMEDIATE.

  • Fixed a problem that could cause message data corruption when a Queue received large, fragmented responses or late join messages with application header data.

  • Fixed a problem that could prevent a receiver from requesting the retransmission of assigned messages from the Queue.

  • Fixed a potential bus error on Solaris SPARC platforms that could occur upon the restart of a Queue's umestored daemon.

Copyright (c) 2004 - 2014 Informatica Corporation. All rights reserved.