0.18 Release Notes

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

Note: This release addresses CVE-2012-3467. See QPID-3849.

Note: Late in the 0.18 release process, we discovered a scenario where the negotiate-timeout feature (QPID-2518) of the Qpid C++ broker can be triggered by the Java client on some platforms. This issue is under investigation. If you are affected, the workaround is to increase the negotiate timeout value.

New Features

  • QPID-3913 - Add functionality to upgrade bdb store automatically on broker startup
  • QPID-3918 - Add management acl-query test methods to C++ broker ACL plugin
  • QPID-3933 - [Java] Add interim AMQP 1-0 implementation to Java Broker, JMS over 1-0 implementation
  • QPID-3936 - Add new framework for running distributed tests, eg for performance testing
  • QPID-3986 - [Java Broker] Add producer flow control based on total disk usage
  • QPID-4006 - Introduce HA support for Java Broker

Bugs Fixed

  • QPID-2518 - Qpid C++ broker can easily be blocked by client trying to connect over SSL port
  • QPID-2567 - [c++] Timer - possible thread lock ordering violation
  • QPID-3478 - Windows Visual Studio 2010 warning C4251 'needs to have dll interface' qpid::amqp_0_10::MapCodec::contentType
  • QPID-3510 - Holes in C++ client configuration
  • QPID-3671 - WinSDk package is incomplete
  • QPID-3749 - Remove unused properties/methods from QpidResourceAdapter, QpidActivationSpec, QpidRAManagedConnectionFactory
  • QPID-3757 - Difficult recovery on broker death
  • QPID-3767 - Federation link index becomes invalid on failover against a cluster.
  • QPID-3849 - Client connection breaks broker-to-broker cluster SASL authentication (CVE-2012-3467)
  • QPID-3879 - Session#close() on session can produce spurious "dispatcher is not started" messages at ERROR to client logs
  • QPID-3895 - A reference to AMQChannel object is not removed from SimpleAMQQueue#_blockedChannels map on closing connections with producer side flow control when flow is blocked
  • QPID-3903 - Session#close() should not wait forever if broker fails to respond to channel close (0-8..0-9-1 protocols)
  • QPID-3904 - Java client should set AMQConnection#_closed flag on receipt of 0-10 connection.close
  • QPID-3915 - Add missing newlines to the end of the following source modules: ManagementAgentImpl.cpp, Exchange.cpp, Queue.cpp, ManagementAgent.cpp
  • QPID-3924 - Remove colons from conditionals that cause problems in Ruby 1.9
  • QPID-3925 - Fix string encoding support for Ruby 1.9
  • QPID-3926 - Fixes how unsigned 16 bit ints are assigned in the UUID test.
  • QPID-3931 - x-qpid.cluster-update exchange existing but hidden
  • QPID-3932 - HA library links to non-existant broker::SignalHandler::shutdown()
  • QPID-3942 - XID printed as binary form in trace logs
  • QPID-3947 - long subject causes encode errors in a loop
  • QPID-3949 - [Java AMQP 1.0] Update JMS Filter implementations to use new proposed descriptors
  • QPID-3958 - queue replication fails for messages with empty content frames
  • QPID-3963 - A federated broker may not reconnect to a remote cluster on link failure.
  • QPID-3964 - Incorrect ACL checks for passive declares
  • QPID-3965 - Case sensitivity issue with java broker ACL
  • QPID-3969 - arguments for QMFv2 methods may have undefined values if not specified
  • QPID-3970 - If reroute specifies that alt exchange should be used, and no such exchange was defined, then messages are silently dropped
  • QPID-3971 - PropertiesFileInitialContextFactory cannot open file URL
  • QPID-3973 - QPID Java SSLUtil does not support non-JKS key store types
  • QPID-3974 - replication exchange msgDrop and byteDrop to increase when duplicate messages detected
  • QPID-3980 - Last value queue - entries replaced by conflation are never deleted, causing memory leak
  • QPID-3982 - C++ broker on Windows hangs on shutdown intermittently
  • QPID-3985 - BrokerMessagesTest fails depending on locale
  • QPID-3990 - Multiple XAResources isSameRM behavior
  • QPID-3993 - [Java AMQP 1.0] NPE on receiving continuation transfers which do not have the delvieryId set
  • QPID-4008 - tcpNoDelay connection setting causes fatal exception on Windows
  • QPID-4011 - TestIsLocalHost unit_test fails with if machine name resolves to loopback address
  • QPID-4012 - [Java Broker] PriorityQueue entries may attempt to access message metadata in the store after it is no longer available
  • QPID-4014 - System test ConflationQueueTest.testParallelProductionAndConsumption failed
  • QPID-4017 - AMQP 0-9: Failover causes flow control blocked flag to get stuck
  • QPID-4022 - C++ Broker connection limits by host ip and by user name can get confused
  • QPID-4023 - restore connection URL setter to enable using an AMQConnectionFactoy instance created with the default constructor
  • QPID-4030 - qpid-latency-test does not report if it cannot achieve desired sending rate
  • QPID-4031 - Deadlock when destroying a broker Link
  • QPID-4032 - Broker does not accept sub-groups in group declaration, contrary to wiki documentation
  • QPID-4034 - XASessionImpl should override resubscribe() for correct XA failover behavior
  • QPID-4036 - Failed client connections permanently exhaust broker's max connections limit
  • QPID-4040 - Destination federation broker needs to close connection if heartbeats are missed
  • QPID-4041 - Check for valid protocol occurs before actual protocol value is available.
  • QPID-4043 - The cluster code (c++ broker) uses deprecated CPG definitions
  • QPID-4047 - IoNetworkTransport doesn't use timeout on socket connect
  • QPID-4049 - Linux C++ broker crashes when Windows client connects SSL with expired certificate
  • QPID-4052 - HAClusterTwoNodeTest.testSecondaryDesignatedAsPrimaryAfterOrginalPrimaryStopped occasionally fails on Apache CI
  • QPID-4055 - [Java Broker] Update optional BDB store to use version 5.0.55 of BDB
  • QPID-4062 - Java system tests sometimes fail due to JMX port already initialised
  • QPID-4069 - DistributedClientTest.testClientFailsToCreateProducerUsingInvalidSession occasionally seen to fail on CI
  • QPID-4072 - HA use backup messages in failover.
  • QPID-4075 - Auto-Delete queues event Listener
  • QPID-4081 - If Exception is thrown on stopping of first broker from several brokers started by test case, the remaining brokers continue running and impact all following test cases
  • QPID-4082 - cluster de-sync after broker restart & queue replication
  • QPID-4085 - HA fails long running failover test
  • QPID-4090 - Can't connect from Java Client to Java Broker when Broker uses Base64MD5PasswordFilePrincipalDatabase principal database (0-10 protocol only)
  • QPID-4091 - [Java Broker] Incorrect handling of timeout values on DtxSetTimeout
  • QPID-4092 - org.apache.qpid.server.queue.AMQPriorityQueueTest.testPriorityOrdering failed on Qpid-Java-Java-Test-IBMJDK1.6 Apache Jenkins CI job
  • QPID-4094 - Qpid MC misformats JMX notification dates
  • QPID-4097 - WCF Interop compile error
  • QPID-4099 - FailoverBehaviourTest.testFlowControlFlagResetOnFailover fails occasionally on CI
  • QPID-4101 - Fixes building the Ruby language bindings for Ruby 1.9
  • QPID-4104 - Test org.apache.qpid.server.store.StoreOverfullTest.testCapacityExceededCausesBlockTwoConnections fails occasionally
  • QPID-4112 - Queue's alternate (non-mandatory) exchange does not survive broker restart
  • QPID-4117 - alternate-exchange specified in links x-declare is ignored
  • QPID-4121 - ConcurrentModificationException reported by HouseKeepingTask while closing session
  • QPID-4126 - HA primary times out expected backups.
  • QPID-4128 - HA should not use amq.failover for replication links
  • QPID-4130 - Remove use of intrusive_ptr::reset in ha/Primary.cpp, not supported by older boost versions.
  • QPID-4131 - Broker should close connection on transaction timeout rather than close session for better compatibility with Java clients
  • QPID-4136 - HA sporadic failures in ha_tests
  • QPID-4138 - HA sporadic failure in ha_tests
  • QPID-4142 - C++ broker connection counting username error when used in ha cluster and auth is EXTERNAL
  • QPID-4144 - HA broker deadlocks on broeker::QueueRegistry lock and ha::Primary lock
  • QPID-4145 - HA Minor fixes to recovery
  • QPID-4148 - HA Not setting initial queues for new RemoteBackups
  • QPID-4155 - qpid-stat fails while trying to display queue names that have non-ascii characters
  • QPID-4156 - HA close window for clients to connect before HA broker is initialized
  • QPID-4158 - HA transition to CATCHUP status too early.
  • QPID-4159 - HA missing messages in failover test.
  • QPID-4163 - Deadlock between LinkRegistry and TimerTask locks
  • QPID-4164 - management move/copy and max delivery attempt functionality fail to properly move/copy the message if it was loaded from the message store at startup
  • QPID-4165 - Fix unsused variable warnings when compiling with -DNDEBUG
  • QPID-4167 - Queue attributes are ignored on queue creation with web management console
  • QPID-4170 - JMX threads can spin in the Queue MBean if there is a failure when viewing message content
  • QPID-4171 - persistent messages from a non-transactional session can be enqueued out of order
  • QPID-4172 - [Java Broker] Virtualhost tasks should reset their thread name upon completion
  • QPID-4175 - HA code rationalize logging
  • QPID-4182 - Define a reasonable default for the 'minimumAlertRepeatGap'
  • QPID-4183 - [Java Broker] AMQP 1.0 implementation broken by management adaptation layer
  • QPID-4184 - queue alert notifications are not being logged by default
  • QPID-4191 - HA removing self address breaks if a VIP is used.

Improvements

  • QPID-2082 - Put all of the C++ code in the source tree into a namespace
  • QPID-3333 - Make Python SWIG bindings a drop-in replacement for pure Python qpid.messaging package
  • QPID-3603 - New approach to HA
  • QPID-3701 - Add support for Glassfish Application Server to Qpid JCA Adapter
  • QPID-3745 - Improve JCA Documentation
  • QPID-3751 - Add Unit/System Testing to JCA Component
  • QPID-3776 - Add Support for JBoss7 Application Server to Qpid JCA Adapter
  • QPID-3878 - QpidActivation should use connection per inbound listener
  • QPID-3884 - Batch acknowledgements for XA transactions until end()
  • QPID-3885 - Improve logging in JMS client
  • QPID-3894 - Improve MessageListener system tests
  • QPID-3902 - Add formal message categories to C++ Broker log messages
  • QPID-3916 - Refactor message store interface
  • QPID-3917 - Refactor VirtualHost/MessageStore implementations to be ready for BDB-HA
  • QPID-3928 - Removed trailing colons in conditionals.
  • QPID-3943 - subscription queues for links with no explicit name not marked auto-delete
  • QPID-3945 - .gitignore should include classes folder
  • QPID-3955 - Qpid JCA Adapter should throw ResourceException if TransactionManager cannot be located
  • QPID-3956 - Add Weblogic TransactionManagerLocator class
  • QPID-3988 - [Java] Update dependencies to latest version
  • QPID-3995 - Cleans up queues created during Cucumber feature tests
  • QPID-3996 - [Java Broker] Update optional BDB dependency to use latest version
  • QPID-3998 - [Java Broker] Create RESTful Management API for Java Broker
  • QPID-3999 - [Java Broker] Implement Web based management tool for the Java Broker
  • QPID-4004 - Cruft in qpid::framing::Buffer class should be removed
  • QPID-4009 - Make failover method invocation timeout configurable for 0-8/0-9/0-9-1 amqp clients
  • QPID-4013 - Windows Broker SSL is more difficult to use than necessary and possibly less secure than possible
  • QPID-4029 - [Java broker] enable selective inclusion of protocol versions on particular ports
  • QPID-4033 - [Java client] add a connection id to the session dispatcher thread name to avoid name overloading
  • QPID-4035 - JCA examples should allow for possibility of cluster deployment
  • QPID-4038 - [Java client] log the connection number and associated local and remote address after each successfull [re]connection
  • QPID-4039 - [Java client] move certain implementation-detail type log statements on the 0-8/0-9/0-9-1 path from info to debug to reduce verbosity/confusion
  • QPID-4046 - Improve broker's performance by rate limiting queue cleanup.
  • QPID-4048 - Refactor TopicExchange to separate the topic-key lookup engine from the exchange
  • QPID-4050 - Reduce verbosity of logging in disttest classes
  • QPID-4059 - qpid-printevents refactored to use the lighter-weight management library
  • QPID-4060 - qpid-stat - Improve the help text to clarify use of the different display modes
  • QPID-4061 - Added statistic: Number of unacknowledged messages in a session
  • QPID-4065 - Remove the message's trace list during Queue::reRoute
  • QPID-4066 - Allow configuration to override the broker's federation tag
  • QPID-4070 - Minor internal-api changes for LinkRegistry and Bridge (in qpid::broker)
  • QPID-4076 - Change bridge message credit to value less than infinity
  • QPID-4093 - [Java Broker] extract the JMX management functionality into its own module
  • QPID-4105 - Performance test framework uses sessions non-thread-safely
  • QPID-4110 - [Java Performance Tests] Add topic support to distributed test framework
  • QPID-4113 - [Java Performance Tests] allow all test durations to be overridden
  • QPID-4173 - [Java Broker] disable the subscription state operational logging by default

Tasks

  • QPID-3992 - Removed the Boost license text from the Ruby LICENSE file.
  • QPID-3994 - enable use of Ivy to retrieve dependencies for the Java components
  • QPID-4045 - [Java broker] remove the 'extras' plugin as it isnt used
  • QPID-4089 - Add latency tests into Java Performance Tests