40. Release LBM 3.6 - December 2009

40.1. LBM 3.6

40.1.1. New Features

  • Implemented arrival order reassembly when message fragments are received out of order.

  • Added support for wildcard receivers to the LBM Gateway. See the LBM Gateway documentation for more information.

  • Added the source configuration option, retransmit_retention_age_threshold, to allow age-based message reclamation from a source's late join retention buffer.

  • Modified the configuration option, transport_lbtrm_destination_port, to also determine when LBM should create a unique LBT-RM transport session. Previously, only the LBT-RM Multicast Address as defined by transport_lbtrm_multicast_address (source), transport_lbtrm_multicast_address_high (context) and/or transport_lbtrm_multicast_address_low (context) was used to determine unique transport sessions.

  • Increased the maximum value for transport_datagram_max_size to 65535 bytes. This enables large messages to be fragmented into larger fragments reducing the number of system calls per message.

  • Added a LBM Gateway log message that indicates if a user requested a Gateway shutdown ([timestamp] Shutdown event detected. Attempting to shutdown.).

  • Added version and package information to the Java LBM jar file. Also added an initialization-time warning if the Java LBM jar file and lbmj native library versions are not compatible.

  • Added the configuration option, resolver_datagram_max_size to control the maximum datagram size that can be generated for topic resolution advertisements and queries.

  • Enabled the callback_events statistics (See LBM 3.6ea1 New Features) to be understood by a LBMMON monitor receiver. Also enabled these statistics in all LBMMON example applications, the Ultra Messaging® MIB and the InterMapper probe files.

  • Modified the LBM Topic Structure, returned from lbm_rcv_topic_lookup() or lbm_src_topic_allocate(), so that it uses less memory.

  • Replaced certain locks on Solaris Sparc with atomic instructions to increase performance.

  • Added the ability to change a wildcard receiver's attributes using lbm_wildcard_rcv_attr_setopt(). The 29West Configuration Option, resolver_query_max_interval can now be set during operation.

  • Increased the maximum number of LBM message fragments that can be sent in a single socket send call from 16 to 1024 for Solaris and AIX. This should provide a significant throughput increase for small message sizes when batching is enabled.

  • Added the source configuration option, transport_tcp_coalesce_threshold that configures the maximum number of LBM message fragments sent in a single socket socket send call without coalescing.

  • Added the environment variable, LBM_CONTEXT_DELAY_WARNING_THRESHOLD, which specifies in milliseconds a context thread delay threshold. If a context thread is delayed for a time greater than the threshold, LBM logs a warning message.

  • Corrected a race condition that could occur if a source was sending while another source was joining or leaving the same transport session.

40.1.2. Bug Fixes

  • Fixed a problem that occurred when using LBM_MSG_COMPLETE_BATCH or LBM_MSG_END_BATCH flag with lbm_src_sendv(). This combination resulted in an error return (-1) with the error string "Explicit Batch not started".

  • Corrected a problem with high resolution timers used to perform microsecond measurements which could cause some Event Queue statistics, such as the age_max statistic to report huge values. This correction results in a zero being returned instead of a negative value in the event that an ending timestamp is earlier than a beginning timestamp.

  • Corrected a problem with using TCP_NODELAY that caused a request response to fail. LBM now sets TCP_NODELAY before the TCP connection call.

  • Corrected a problem with Late Join that caused a delay if a source no longer had a requested message available in its Late Join retention buffer. The delay no longer occurs.

  • Corrected a problem with LBM Spectrum wildcard receivers that caused them to crash if they were created with a NULL topic attributes object and unrecognized_channel_behavior or null_channel_behavior were set to discard in a 29West Configuration File. This was specified as a LBM 3.6ea2 Known Issues.

  • Corrected a problem with wildcard receivers in Java that prevented them from being garbage collected. Global references for the internal onReceiverDelete callback are now released, allowing garbage collection of the Java wildcard receivers.

  • Corrected a problem with the LBMSDMArray* classes and the LBMSDMFieldIterator class in both Java and .NET.

  • Fixed an incorrect pointer reference in the internal Java function that creates a receiver. This was required because topic attributes have been changed to pointers in LBM 3.6.

  • Fixed a memory leak that could occur when creating a receiver using the Java API without setting per-source callbacks.

  • Corrected a second memory leak that could occur when creating a receiver using the Java API without specifying receiver attributes.

  • Modified the configuration options transport_lbtrm_coalesce_threshold and transport_lbtru_coalesce_threshold so their maximum values correspond to platform-specific maximums.

  • Adjusted handling of LBT-RM NAK backoff timers to improve performance in heavy loss scenarios.

40.1.3. 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. 29West is investigating this issue.

  • Shutting down a source-side LBM Gateway with Control-C can cause the Gateway to become dead locked. 29West is investigating this issue.

  • If a source LBM Gateway was shutdown and then the receiving Gateway was shutdown as quickly as possible while still carrying traffic, a fatal assert occurs. (MUL_FATAL_ASSERT(Table!=NULL);) 29West is investigating this issue.

  • With LBM 3.6 we have seen increased memory utilization in varying degrees across all platforms. This increase can be mitigated by the use of SmartHeap. 29West is working to decrease this memory utilization.

  • When turning on Automatic Monitoring, be sure that your application does not have any existing lbmmon monitoring capability active. Using both Automatic Monitoring and lbmmon functions results in confusion with internal monitoring fields and pointers. This issue will be addressed in a future release.

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