Menu Search

Qpid 0.24 Release Notes

Qpid is a cross-platform AMQP messaging system. It provides message brokers written in C++ and Java, and clients for C++, Java, Perl, Python, Ruby, and .NET. More about Qpid.

The full list of changes in the Qpid 0.24 release incorporates both the issues worked on during the 0.23 development stream and any final touches made during the 0.24 release process. A list of these JIRA issues can be found below.

For more information about this release, including download links and documentation, see the release overview.

Note: This is the last release that will support building the C++ source via autotools. The Qpid C++ codebase now uses cmake.

Note: The deprecated qpid::client API will be removed in the next release. Users should instead use the Qpid Messaging API.

Note: The QMF version 1 APIs will be removed in the next release. Users should instead use the QMF APIs that speak version 2 of the QMF protocol.

New features and improvements

  • QPID-3203 - Add ability to require an empty queue before autodeleting
  • QPID-3247 - DeleteQueue limit policy
  • QPID-3262 - Remove support for archaic Boost version 103200
  • QPID-3689 - Enable TCP_NODELAY by default
  • QPID-4366 - C++ Broker: change ACL from a loadable module to a built-in module
  • QPID-4591 - mechanism to detect when messages are overwritten in ring-type queues
  • QPID-4650 - C++ Broker could use a rebind strategy to steer messages from one queue to other queue(s)
  • QPID-4651 - C++ Broker logging could use an easy way to disable log messages
  • QPID-4659 - [Java Broker] Refactor broker to separate protocol independent from protocol specific classes
  • QPID-4728 - Allow option to configure credit on Federation sessions.
  • QPID-4748 - Consistent handling of durations in broker configuration, allowing sub-second intervals.
  • QPID-4758 - Extend the qpidd --wait option to work at shutdown
  • QPID-4771 - Add --broker and --sasl-mechanism command line options to qpid-tool
  • QPID-4775 - ACL delete action should not ignore object's properties other than name
  • QPID-4783 - Improve Connection statistics in Java Broker QmfManagementAgent
  • QPID-4802 - [Java Broker] In management mode set state to ERRORED for failing to activate authentication providers, group providers and acl providers in order to allow editing of attributes preventing normal startup
  • QPID-4807 - Allow listening using individual transports/protocols to be controlled via an option
  • QPID-4811 - Allow the QMF console python library to setup session timeout
  • QPID-4822 - Allow Variant::parse() to return values that won't fit in int64_t but will fit in uint64_t as VAR_UINT64
  • QPID-4825 - Problem with versioning of shared libraries and installation using cmake
  • QPID-4827 - Java Performance Tests visualisation should allow more chart properties to contain system property placeholders
  • QPID-4831 - [Java Broker] Allow SSL and non-SSL connections on the same port
  • QPID-4832 - [Java Broker] Implement the default exchange as a facade on top of the queue registry
  • QPID-4833 - [Java Broker] Display transport (TCP/SSL) and (accepting) port for each connection in web management console
  • QPID-4866 - HA support for failover exchange
  • QPID-4873 - Optimizations in Java client to reduce queue memory footprint
  • QPID-4886 - Pass non-const reference to Message in QueueObserver functions.
  • QPID-4887 - AMQP 1.0 retrieve username and password from url
  • QPID-4892 - Examples are no longer included in the gemfile.
  • QPID-4897 - [Java Broker] Allow selectors on bindings for exchanges other than topic exchanges
  • QPID-4898 - [Java Broker] Allow setting arbitrary arguments in queue defintion within XML config file
  • QPID-4899 - [Java Broker] Allow setting queue binding arguments in XML config file
  • QPID-4900 - [Java Broker] Broker should return its version to the client as informational property in connection initiation
  • QPID-4905 - C++ Broker/common code needs tidying up of obsolete/unused code
  • QPID-4908 - [Java Broker] Expose queue attributes MessageGroupKey and MessageGroupSharedGroups via queue MBean
  • QPID-4912 - [Java Broker] Allow setting queue binding arguments in exchange MBean
  • QPID-4919 - [AMQP 1.0] provide means of configuring subscription queues for 'topics'
  • QPID-4926 - C++ CMake build system needs to include all of the tests from the autotools build
  • QPID-4930 - Enable better packaging of the Swigged Python binding sources
  • QPID-4931 - Broker should only listen to a single network address if "--port 0" is specified
  • QPID-4935 - [AMQP 1.0] sender expects messages to always be accepted
  • QPID-4937 - [Java Broker] Separate virtual host implementations into different types
  • QPID-4943 - [Java Broker] Introduce a feature for 0-8/0-9/0-9-1protocols to close a connection on receiving a mandatory unroutable message in a transacted session
  • QPID-4951 - [Java Broker] Add cause code and message into operational logs for session close initiated by the Broker
  • QPID-4972 - Dead link on web page
  • QPID-4973 - [Java Broker] Refactor DurableConfigurationStore interface to be in terms of ConfiguredObject rather than implementation classes
  • QPID-4979 - [Java Broker] Refactor VirtualHost to hide ExchangeRegistry, ExchangeFactory
  • QPID-4980 - [Java Broker] In HTTP Management make (standard) virtual host store attributes depended upon store type
  • QPID-4983 - [Java Broker] Move store implementations to broker plugins
  • QPID-4987 - A new website
  • QPID-4993 - Reroute messages expunged from ring queue to alternate-exchange of queue if specified
  • QPID-4998 - [Java Broker] Add ability to set durability, sync policy on creation of HA Virtual Host through Web Management
  • QPID-5005 - Java Broker Plugin API has changed to need overridden getType() method in instances of PluginFactory
  • QPID-5008 - Add Session.java class to 0.24 branch and merge QPID-5005 fix from trunk to 0.24
  • QPID-5009 - [Java Broker] Update broker store to revision 7
  • QPID-5082 - Modify Qpid JCA adapter to use single connection for each inbound listener

Bugs fixed

  • QPID-2453 - Python messaging client unusable after receiving a malformed message
  • QPID-2514 - Objects from new version of QMF C++ agent libraries don't appear in qpid-tool
  • QPID-3189 - Queue policy error can occur due to previous errors with persistent store
  • QPID-3584 - qpid-config SPECIAL_ARGS list should include FLOW_RESUME_COUNT
  • QPID-3772 - Qpid broker on Windows allows multiple, simultaneous processes to listen to broker port
  • QPID-3828 - When sending large messages loss of connection is not detected even with heartbeats enabled
  • QPID-3838 - [JMS] Vendor specific properties should be prefixed with JMS_
  • QPID-4021 - Badly behaved clients can still clog up the broker
  • QPID-4140 - receiver.unsettled() throws exception
  • QPID-4339 - flow to disk replacement
  • QPID-4407 - default implementation of SASL does not check that mechanism is correct
  • QPID-4631 - C++ Broker interbroker links should be protected by ACL
  • QPID-4668 - [AMQP 1.0] delivery count not 0 on initial delivery
  • QPID-4687 - Add uninstall make target to cmake build
  • QPID-4689 - QMF console drops object updates from local broker agent.
  • QPID-4691 - [Java Broker] update web UI handling of SSL attributes and make the broker validate port attributes more closely to avoid illegal configurations which prevent start-up
  • QPID-4694 - [Java Broker] the JSON config file is not saved after startup until promted by additional change, which can result in unecessary generation of new IDs for objects on each startup
  • QPID-4695 - [Java Broker] Add configured object name and id validation to prevent the submission of invalid names and changing of IDs
  • QPID-4701 - Exception types lost in qpidmessaging when compiling with cmake and gcc 4.1.2 (e.g. RHEL5)
  • QPID-4702 - cmake build of ssl support does not work on certain platforms
  • QPID-4706 - [AMQP 1.0] selectors don't work when source is an exchange
  • QPID-4707 - [AMQP 1.0] provide means of setting more fields in a 1.0 formatted message
  • QPID-4712 - [AMQP 1.0] ACL support
  • QPID-4713 - [AMQP 1.0] reply-to is not handled in translation from 1.0 to 0-10
  • QPID-4716 - [AMQP 1.0] set durability of terminus based on durable property in link section of address
  • QPID-4718 - [AMQP 1.0] subscription queue for receiving link whose source is an exchange is not exclusive
  • QPID-4720 - C++ Broker Headers exchange match comparison self tests use stale comparison code
  • QPID-4727 - C++ Broker ACL rules provide no way to match default exchange
  • QPID-4734 - Release builds fail on GCC 4.4.7 / Boost 1.41
  • QPID-4735 - C++ Broker ACL file size/count limit check bug when no value declared by user
  • QPID-4736 - Legacy store "Recovery found" log entries at wrong severity
  • QPID-4737 - Fix cmake "make package"
  • QPID-4744 - qpid-tool does not allow separate keyfile for SSL connections
  • QPID-4750 - Python example "server" fails
  • QPID-4756 - Python QMF console: QMFv2 object statistic notifications not working.
  • QPID-4757 - Report failure to open qpidd.sasldb
  • QPID-4759 - qpidd --help should show sasl config path default
  • QPID-4764 - Locking may lead to deadlock for concurrent receiver
  • QPID-4765 - Incorrect parameter validation for legacystore wcache-page-size and jfile-size-pgs
  • QPID-4766 - [AMQP 1.0] provide a way of specifying an xquery for receivers from an xml exchange
  • QPID-4767 - [legacystore] QMF commands to create a persistent queue with an illegal number of journal files or journal file size should be rejected
  • QPID-4772 - Message sent by python producer can't be read with java consumer
  • QPID-4774 - reconnect_timeout ignored in qpid.messaging.Connection()
  • QPID-4780 - HA broker deadlock after loss of primary broker
  • QPID-4786 - Delayed response for concurrent fetches
  • QPID-4787 - HA brokers find self-address in brokers_url.
  • QPID-4792 - Windows UUID processing mingles GUID values
  • QPID-4794 - Resizing qpid legacystore journal does not update queue arguments provided by QMF
  • QPID-4796 - sporadic failure of test broker_0_10.stats.BrokerStatsTests.test_discards_no_route
  • QPID-4801 - No error reported on failure to open a configuration file
  • QPID-4805 - qpid-config default journal parameters override qpidd.conf
  • QPID-4806 - qpid-config traceback in case of ACL denial
  • QPID-4808 - qpid messaging cpp client api documentation update
  • QPID-4810 - If ssl/tcp multiplexing is enabled and ssl initialisation fails tcp doesn't start either
  • QPID-4819 - [AMQP 1.0] auto-deleted queues for outgoing links from an exchange are not in fact autodeleted
  • QPID-4820 - Variant decoding/conversion incorrect for at least bin8, int8, uint8 data types
  • QPID-4839 - HA Sporadic failure of ha_tests.test_join_ready_cluster
  • QPID-4842 - Ruby spout.rb does not correctly set message properties
  • QPID-4843 - Perl spout.pl example calling old setProperty method rather than set_property on qpid::messaging::Message
  • QPID-4846 - [AMQP 1.0] translation of empty message from 0-10 to 1.0 causes broker to assert
  • QPID-4849 - Faulty parsing logic in retrieving CN from an SSL certificate.
  • QPID-4854 - max-negotiate-time feature breaks AMQP 1.0 (and arguably doesn't achieve the desired objective anyway)
  • QPID-4857 - Perl TypeError on message release/reject
  • QPID-4859 - Flush is no longer issued on store when completing asynchornously enqueued messages
  • QPID-4864 - The JMS client shouldn't hold a lock when creating a messge
  • QPID-4872 - python client occasionally fails with "[Errno 1] _ssl.c:1217: error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry" error
  • QPID-4878 - [AMQP 1.0] SASL layer doesn't work for interlinks
  • QPID-4880 - [AMQP 1.0] allow temp queues to be qualified by brokers domain
  • QPID-4882 - Syntax (NameError) thrown by python client when using older versions of python (<2.6)
  • QPID-4883 - C++ Broker may crash if client provides SSL certificate without CommonName entry.
  • QPID-4884 - [AMQP 1.0] segfault when using x-declare within a node
  • QPID-4885 - C++ examples install to the wrong location
  • QPID-4888 - [AMQP 1.0] link naming is not handled correctly
  • QPID-4889 - Swig descriptors are installed twice
  • QPID-4890 - [AMQP 1.0] interllink tests hang on older versions of python
  • QPID-4893 - [AMQP 1.0] relay sends out buffered message before it is ready
  • QPID-4894 - [Java Broker] Removal of exchange bindings from web management console does not work
  • QPID-4896 - Java Examples Drain/Spout assume virtualhost named test
  • QPID-4903 - python client deletes subscription queue even if it was declared to not be exclusive
  • QPID-4909 - QMF doesn't build correctly on Windows
  • QPID-4917 - [AMQP 1.0] allow for shared topic subscriptions
  • QPID-4921 - --interface option causes core dump
  • QPID-4923 - Windows C++ broker ignores --ssl-port option and always uses --port for ssl
  • QPID-4925 - [Java Broker] Timeout connections which do not complete connection handshake
  • QPID-4929 - [Java AMQP 1.0 Client] Infinite recursion attempting to write DeliveryAnnotations
  • QPID-4933 - The qpid_messaging gem does not install on Ruby greater than 1.8.7
  • QPID-4946 - [Java Broker] closing the broker may result in same message being delivered to multiple competing consumers
  • QPID-4949 - C++ broker may crash on shutdown
  • QPID-4950 - Exchange statistics byteReceives, byteDrops, byteRoutes do not increment.
  • QPID-4953 - client example doesn't work with 0-10
  • QPID-4955 - CMake "make install" puts config files inthe wrong place
  • QPID-4957 - [AMQP 1.0] link bindings are not removed after the link is closed
  • QPID-4958 - Java Performance Tests - race condition client registration detection causes tests to hang
  • QPID-4965 - [AMQP 1.0] assert should check filters in use
  • QPID-4966 - [AMQP 1.0] timeout to fetch()/get() not honoured
  • QPID-4969 - C++ Broker headers exchange allows creation of bindings with duplicate keys
  • QPID-4970 - [Java Broker] Configure MessageStores based on VirtualHost object not XML Configuration
  • QPID-4971 - C++ Broker queue settings have uninitialized variables
  • QPID-4976 - [AMQP 1.0] support standard lifetime policies
  • QPID-4977 - [Java Broker] the virtualhost creation dialog doesnt display the store related fields on older browsers
  • QPID-4985 - [AMQP 1.0] sending message with priority=4 causes buffer overflow in client
  • QPID-4986 - [AMQP 1.0] correlation-id/message-id gets corrupted by broker
  • QPID-4994 - [Java Client] Remove redundant BindingURL options and stop special-casing queues on topic exchanges
  • QPID-4995 - [Java Client] The queue name should be generated on the client side if it is not specified in the binding URL.
  • QPID-4996 - [Java Broker] Restrict queue re-binding on 0.8/0-9.x path to the topic exchanges only
  • QPID-4999 - [Java Broker] Strip selector arguments from persistent bindings to non-topic exchanges created by buggy old clients
  • QPID-5014 - Make autotools build require special argument to work
  • QPID-5017 - WinSDK build leaves release executables stranded in \bin directory
  • QPID-5019 - Add flag to distinguish QMF v1 events
  • QPID-5024 - [Java] README.txt is misleading
  • QPID-5027 - Windows examples installed to wrong directory
  • QPID-5028 - Qmf2 examples install script error
  • QPID-5031 - WiX installer generator flags deprecated usage on RegistryKey directive
  • QPID-5032 - Windows install LICENSE and NOTICE files have moved
  • QPID-5034 - WinSDK README contains stale web site URL
  • QPID-5036 - [Java Broker] View Message dialog fails to display persistance and expiration info
  • QPID-5042 - Qpid 0.24 fails to build on ARM platforms.
  • QPID-5044 - Update release.sh to copy maven artifcats for new Java Broker plugins
  • QPID-5053 - [C++ broker] Exclusive autodelete queues created with AMQP 1.0 don't seem to be autodeleted
  • QPID-5054 - [C++ broker] Deleting topic which doesn't exist crashes the broker
  • QPID-5055 - paged queues count of loaded pages is not initialised
  • QPID-5060 - [C++ broker] Topic created as durable contains the durable=true in properties without having any effect on the subscription queues
  • QPID-5061 - [C++ broker] The qpidd broker crashes when two links are created with the same name
  • QPID-5062 - [C++ client] EXTERNAL authentication using SSL certificates doesn't work with AMQP 1.0
  • QPID-5074 - [Java Broker] update broker binary release tar process to handle plugins with dependencies
  • QPID-5078 - consumers not notified of messages if another consumer with selector/filter doesn't want it
  • QPID-5085 - released message is not redelivered after rollback on priority queue

Tasks

  • QPID-4914 - [Java Broker] Document how to bind queues to exchanges
  • QPID-4916 - [Java Broker] Document how to configure queue arguments in virtual host configuration file