Added LBM Spectrum that allows a
source to send topic messages with channel information. A receiver can subscribe (lbm_rcv_subscribe_channel()
lbm_wrcv_subscribe_channel()
) to a channel and receive only topic
messages sent to that channel. Each channel can use a different receiver callback, if
desired. Benefits include less topic resolution traffic since LBM advertises only topics,
not channels and in order delivery across channels since all messages are part of the
same topic stream.
Added support for Adaptive Batching, which attempts to send messages immediately during periods of low volume and automatically batch messages during periods of higher volume. You enable Adaptive Batching by setting implicit_batching_type to adaptive.
New Monitoring Statistics: Added monitoring statistics to lbm_event_queue_stats_t structure to reflect a new event type used internally by LBM. The new statistics report on the number of callback events (callback_events), total callback events (callback_events_tot) and callback event service times (callback_events_svc_min, callback_events_svc_mean and callback_events_svc_max). These statistics are available to the C API, the Java API and the .NET API. The new statistics have also been added to the Ultra Messaging® MIB and the InterMapper probe files. In addition, all example applications support the callback statistics.
Added the Topic Index to the source string ( lbm_transport_source_info_t). LBM
includes the topic index in source strings supplied through message delivery and new
source notification. A receiving application can now identify the source of any message
it receives by parsing the source string. New API functions, lbm_transport_source_parse()
and lbm_transport_source_format()
, allow you to parse and create
source strings. Inclusion of the Topic Index in the source string is the default. You can
disable this by setting source_includes_topic_index to 0 (zero).
Removed the warning assertion, fdm->select_invalid_entries==0, that could appear during busy periods when using the select file descriptor type.
Corrected a problem that occurred if a NULL topic object was passed to lbm_hf_src_create
. This resulted in a Segfault. lbm_hf_src_create
now correctly returns -1.
Changed the default Host ID for Microsoft® Windows® from 0x00000000 to 0x7fffffff to improve host name resolution between an LBM source running on Microsoft Windows and sending over LBT-IPC to a receiver running on a Linux/Unix machine. The previous default Host ID could produce the following receiver error: LOG Level 5: LBT-IPC: failed to open shared memory (2).
Corrected a problem with Java and .NET lbmmon example applications that resulted in the incorrect display of the source application's process and object IDs.
Corrected a problem with Java and .NET lbmmsrc example applications that caused the following exception when printing IPC statistics: Unhandled Exception: com.latencybusters.lbm.LBMEInvalException: value at num must be large enough to handle all transport sessions. This exception was caused by an incorrect calculation of the number of transport sessions. Future versions of LBM will remove the requirement for Java and .NET applications to specify a number of statistical sets when creating various LBM statistics.
LBM now ignores any spaces at the end of numeric attributes in LBM configuration files.
Fixed an issue with the wire format for LBM messages where the explicit batching flags were not being correctly converted to network byte order. This resulted in the LBM_MSG_FLAG_START_BATCH and LBM_MSG_FLAG_END_BATCH flags not being set correctly if sending from a big-endian machine to a little-endian machine, or vice versa. LBM now correctly formats the field in question.
Due to the change in the wire format, mixing LBM 3.5 with earlier versions results in incorrectly set batching flags in most cases. This does not impact the behavior of explicit batching on the source side, only the message flags on the receiver side. These flags provide information to the receiving application, and are not used in message delivery, so applications that do not currently use them can mix LBM versions without impact.
Changed the way multiple LBT-IPC processes verify availability of the LBT-IPC transport during Topic Resolution. If two processes check the transport at nearly the same time, the second process will experience a 1 second delay. Multiple processes now verify serially.
Fixed a problem with calling lbm_src_flush() from multiple threads or using lbm_src_send() in combination with lbm_src_flush() from multiple threads. This problem produced the following assertion. WARNING: failed assertion [num>0] at line 1382 in ../../../../src/lib/lbm/lbmsock.c. With this correction, using lbm_src_send() in combination with lbm_src_flush() from multiple threads does not cause a problem.
Corrected a problem with setting *_interface options from within the LBM Configuration File specified by the environment variable LBM_DEFAULT_CONFIG_FILE. Setting *_interface options in this manner no longer results in an error.
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.
Java UME receiver applications must now call LBMMessage.dispose() when the application is completely finished with the message. Previously, UME sent implicit ACKs immediately on return from the user's callback. If a Java UME receiver application uses implicit ACKs (the default), UME will not send any implicit ACKs unless the application calls LBMMessage.dispose().
Added Queuing capabilities to UME that allows sources to submit messages asynchronously to a queue and permits receivers to retrieve messages from a queue in an entirely different asynchronous manner. UME Queuing also supports Once and Only Once (OAOO) delivery and Application Sets that allow you to load balance processing or support multiple processing purposes for single topics. See Ultra Messaging® for the Enterprise for more information.
Added support for Proxy Sources which allows a UME source to request one of the UME stores act as a proxy in case the source terminates. In this event, advertisements can continue, existing receivers can continue recovery from a store, and new receivers can register with the stores and receive any messages they have missed. You enable Proxy Sources with the source configuration option, ume_proxy_source.
Queue resiliency is not in place with this release. Multiple Queues with the same name are not supported with this release. In addition, Queues that fail and restart will not work with continually functioning sources and receivers.
Sources must use either UME stores or a UME queue, but not both at the same time. This will be addressed in a future release.
When using a UME Queue, receivers should not rely upon the message sequence number supplied in the lbm_msg_t (or LBMMessage) object as the sequence numbering may change in future releases. Applications should utilize the Message-ID instead.
EOS semantics related to Queuing are somewhat complicated depending on the dissemination model being used. New events may be introduced in future releases to handle additional "EOS-like" concerns associated with the use of a UME Queue.
Copyright (c) 2004 - 2014 Informatica Corporation. All rights reserved.