0.14 Release Notes

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

New Features

  • QPID-2519 - Allow Windows Broker to run as a Service
  • QPID-3346 - Support message grouping with stricted sequence consumption across multiple consumers.
  • QPID-3362 - Creates the Qpid gem file for distribution on RubyGems.org
  • QPID-3384 - Support DTX in a cluster.
  • QPID-3417 - Support for timestamping messages on arrival at the broker.
  • QPID-3626 - Provide access to the AMQP 0.10 timestamp delivery property for the python client

Bugs Fixed

  • QPID-1347 - Broker doesn't clearly report missing configuration files such as password file.
  • QPID-2655 - "qpid-server.bat -run:jpda" does not work
  • QPID-2672 - unroutable persistent messages should be immediately removed from or never flushed to the message store
  • QPID-2703 - Transaction Rollback/Recover does not restore consumer credit
  • QPID-2873 - incorrect handling of exchange bindings for queues in the configuration file
  • QPID-2899 - SelectorTest#testRuntimeSelectorError fails against the Java broker when running the 0-10 profiles
  • QPID-2901 - A number of tests sporadically fails with 0.10 profiles on attempt to commit transaction due to exception in org.apache.qpid.transport.Session#sync
  • QPID-2904 - RollbackOrderTest#testOrderingAfterRollback fails on java.0.10 test profiles
  • QPID-3064 - queues will prevent GC of a closed subscription if it was the last used subscription and no more messages are enqueued
  • QPID-3157 - 'removed' subscriptions may be held in memory by the queues SubscriptionList or 'lastSubscriptionNode' reference
  • QPID-3252 - Regression: broker no longer explicitly flushes messages to store on execution.sync or when sync command bit set.
  • QPID-3263 - Java (org.apache.qpid.client) XAResourceImpl always returns false for isSameRM
  • QPID-3267 - Java broker authentication does not work on JRE's other than Sun's
  • QPID-3304 - Tagged federation messages in a transaction can cause subsequent dequeue to fail
  • QPID-3307 - ClassNotfound Exception when using Qpid java client in Complex classloading Environments.
  • QPID-3309 - Management broker object port is not set if broker started with port number set to 0
  • QPID-3315 - SSL port not picked from configuration
  • QPID-3330 - Address strings unable to have empty strings as option values
  • QPID-3332 - Occasional test failures from TransactionTimeoutTest under default test profile under Jenkins
  • QPID-3335 - Remove duplicate and buggy type conversion code from Management Agent.
  • QPID-3337 - eliminate guest/guest default username/password and use an explicit sasl mechanism list
  • QPID-3339 - Occasional test failures from ExternalACLTest under java.0.10
  • QPID-3344 - Comparisons of const DataAddr objects are incorrect
  • QPID-3348 - Qmf broker proxy method create() does not handle keyword arguments, only regular parameters
  • QPID-3352 - Federation bridge doesn't recover from session errors
  • QPID-3355 - Client aborts when replaying sender after connection recovery
  • QPID-3359 - FailoverMethodTest.testNoFailover unreliable since QPID-2815
  • QPID-3363 - broker allows unbind on default exchange
  • QPID-3372 - Asserting on arguments does not work for exchanges; incorrectly throws exception
  • QPID-3373 - Java client: connectionFactory.createConnection method should not rewrite stored credentials
  • QPID-3382 - Incorrect exceptions thrown from qpid::messaging::Connection::open()
  • QPID-3385 - 0-8/0-9/0-9-1 based connections share an ID generator, but 0-10 connection use their own
  • QPID-3386 - subscriptions on 0-8/0-9/0-9-1 based connections share a ID generator, but subscriptions on 0-10 connection use their own
  • QPID-3387 - QueueEntries can hold the Subscriptions which rejected them in memory after they are closed
  • QPID-3390 - the Java broker does not validate the exchange-declare arguments are supported
  • QPID-3393 - CRAM-MD5 does not work
  • QPID-3394 - Broker "leaks" messages that require async completion.
  • QPID-3399 - Qpidd possible memory leaks
  • QPID-3400 - Released (and redundant) delivery records not removed
  • QPID-3410 - Queue configuration error - priority queue created by default.
  • QPID-3411 - Can't turn off x-reconnect-on-limit-exceeded
  • QPID-3412 - Python and C++ clients use link name option differently
  • QPID-3415 - CRAM-MD5-HASHED not supported by 0-10 protocol (+ no suppport for custom SASL mechanisms).
  • QPID-3416 - Incorrect credentials reported by client as "[error code 320: context in use]" on 0-10 code path
  • QPID-3419 - qpid-config --file-size parameter's help text uses incorrect units
  • QPID-3425 - Using create mode (e.g. for x-bindings) with standard exchanges does not work
  • QPID-3428 - Verification of unique client ID does not work with Java Broker
  • QPID-3429 - SSL is broken on the Java broker
  • QPID-3432 - Test SyncWaitTimeoutDelayTest fails
  • QPID-3435 - Reconnect during Session::close can cause an infinite loop
  • QPID-3438 - cluster auth failure increments cnx count
  • QPID-3442 - qpid-tool schema descriptions repeated / duplicated
  • QPID-3443 - the C++ broker uses the wrong exception type when clients try to modify the default exchange
  • QPID-3444 - the Java broker does not reject 0-10 exchange delete/bind/unbind commands which use empty strings for the exchange name
  • QPID-3445 - Assertion, and unexpected exception in qpid::messaging::decode
  • QPID-3446 - Deadlock observed during broker shutdown with simultaneous closing of connection and attempted message delivery
  • QPID-3447 - Creating invalid federation link causes file descriptor leak
  • QPID-3448 - JMS Client throws unchecked SessionExceptions to client application
  • QPID-3452 - Test JMSPropertiesTest#testQpidExtensionProperties sporadically fails in CI for a 0.10 trunk build (Received frames for an already detached session)
  • QPID-3453 - Test PersistentStoreTest fails on java-bdb-spawn.0-10 profile
  • QPID-3454 - System test StreamMessageTest would not detect regression in StreamMessage buffer expansion.
  • QPID-3455 - Large message sent over sasl_wrapper encryption layer causes infinite loop in broker
  • QPID-3459 - Test org.apache.qpid.management.jmx.MessageStatisticsDeliveryTest sporadically fails on 0.10 profiles
  • QPID-3463 - Qpid Broker process fails to terminate on errors thrown on startup
  • QPID-3465 - byteDepth is only uint32
  • QPID-3467 - ManagementActorLoggingTest fails on 0-10 codepath with an ID error (close != open)
  • QPID-3475 - Clustered brokers ignore authentication settings when joining a cluster
  • QPID-3476 - Timer warnings are too verbose
  • QPID-3482 - Unable to switch off logging to syslog when qpidd runs as daemon
  • QPID-3487 - Client should send completions when closing a receiver
  • QPID-3488 - Setting receiver capacity to zero does not always stop the message flow
  • QPID-3492 - String values in address are parsed as binary (and sent as vbin16/32 rather than str16)
  • QPID-3493 - FailoverMethodTest.testFailoverSingleDelay occasionally fails on slow CI box
  • QPID-3496 - Removes erroneous namespace usage.
  • QPID-3498 - Broker race condition means that it tries to respond before IoSender thread is running
  • QPID-3501 - LogMonitor can corrupt test logs files and cause tests subclassing AbstractLoggingTests to fail.
  • QPID-3502 - Durable messages not acked on queue-based federation route
  • QPID-3507 - Calling receive while MessageListener is set causes a NPE doing consumer close
  • QPID-3508 - Subscription queue not unbound or deleted on Receiver::close()
  • QPID-3512 - ConnectionCloseTest occasionally fails on java-mms.0-9-1 profile
  • QPID-3515 - the qpid-server script does not work correctly if the QPID_HOME or QPID_WORK environment variables contain spaces/parentheses
  • QPID-3517 - Inconsistent SSL configuration keys in Java Broker may cause user confusion
  • QPID-3522 - SASL EXTERNAL mechanism no longer works
  • QPID-3524 - Transacted session for 0.10 does not support failover
  • QPID-3525 - On invoking Session#recover() in MessageListener the current message is acknowledged after being released in recover()
  • QPID-3526 - Message#acknowledge() may not acknowledge messages immediately in 0-10 client
  • QPID-3527 - Messages may not acknowledged immediately after receiving in AUTO_ACKNOWLEDGE mode on 0-10 client
  • QPID-3528 - qpid --help has wrong description of sasl-config parameter
  • QPID-3534 - 0-9-1 client attempts to reuse the connection after sending ConnectionCloseOk
  • QPID-3535 - On protocol negotiation 0-9-1 client sends ConnectionClose command when broker protocol version is not supported by a client.
  • QPID-3543 - C++ Broker: auto-acknowledged messages are not being dequeued properly
  • QPID-3544 - ACL denials while replicating exclusive queues to a newly joined node
  • QPID-3546 - client can reject/release up to the first <total number of messages received on the session> sent by the broker following the first rollback after failover
  • QPID-3549 - A queue created with qpid.last_value_queue=0 behaves like a last-value-queue
  • QPID-3553 - C++ broker does not handle multiple ConnectionTuneOk cleanly
  • QPID-3561 - an excessively large buffer is used by default when persisting the 0-10 message metadata
  • QPID-3562 - the 0-10 client path does not act as expected with asynchronous consumers using a prefetch of 1 on transacted sessions
  • QPID-3563 - Unprotected access to accept tracking state can cause crash
  • QPID-3570 - persisted 0-10 message content/meta-data gets orphaned in the store until recovery removes it
  • QPID-3577 - An empty (null string) message group identifier is not assigned to the default group.
  • QPID-3578 - qpid-queue-stats doesn't support multiple filters (despite --help saying it does)
  • QPID-3582 - Client reporting "Unable to load custom SASL providers" during connection
  • QPID-3586 - Changes for QPID-3464 break cmake build in tar.gz distribution
  • QPID-3592 - Python test fails to receive more messages against the Java Broker after sending message.stop and then issuing more credit
  • QPID-3606 - Qpid.pc pkgconfig file isn't sufficient to compile programs using qpid API
  • QPID-3611 - IoReceiver calls shutdownInput on an SSLSocketImpl, which is not supported
  • QPID-3615 - Deprecate the "max-session-rate" feature in the C++ Broker.
  • QPID-3617 - AMQQueueMBean.viewMessages: Viewing message without priority set ends with NullPointerException
  • QPID-3654 - ANONYMOUS SASL mechanism does not work on Java client
  • QPID-713 - Plugin Manager should not hardcode API version

Improvements

  • QPID-2442 - make TemporaryQueue.delete perform the delete on the broker
  • QPID-2498 - Upgrade Mina to 1.1.7
  • QPID-2627 - Remove the dependency on Mina for the Java broker and client
  • QPID-2815 - Refactor broker startup to enable a uniform method of starting the broker
  • QPID-3275 - QMF Console asynchronous correlation-id should be scoped to the session, not the specific agent
  • QPID-3283 - Make AuthenticationManager pluggable
  • QPID-3306 - Provides a more Ruby-like set of APIs on top of the bindings created by swig.
  • QPID-3336 - Need to add Qpid version jars to Maven Central repository
  • QPID-3341 - Remove unused/dead transport code
  • QPID-3342 - Rationalise transport layer by introducing common interfaces shared by all protocols
  • QPID-3343 - Refactor testprofiles to allow for the testing of all protocols with client/broker residing in the same VM.
  • QPID-3345 - Make new transport implementations pluggable
  • QPID-3354 - Change default configure/build instructions for UUID headers from e2fsprogs-devel to libuuid-devel
  • QPID-3358 - Improve performance testing tools for the Java client
  • QPID-3360 - Ruby implementation of Qpid example applications
  • QPID-3365 - Improvements to build system to support client-plugins modules
  • QPID-3367 - FileUtils improvements
  • QPID-3381 - Allow the AMQP 0-10 routing key to be retrieved via the message properties
  • QPID-3395 - Parsing exception of JNDI file should not be swallowed in Java library
  • QPID-3414 - Plugin Manager Improvements
  • QPID-3420 - Make C++ broker's help text use consistent kibibyte abbreviations
  • QPID-3423 - Timing and Performance Improvements in QMF Libraries
  • QPID-3430 - Cannot exclude protocol from SSL ports on command line
  • QPID-3434 - Refactor 0-8..0-9-1 code paths to reuse same SSL configuration classes as 0-10
  • QPID-3439 - stop importing Signal handling classes directly to break reliance on sun.misc heirarchy and prevent the associated compiler warnings
  • QPID-3449 - 0-10 code path hardcodes session timeout to 60 seconds.
  • QPID-3451 - c++ version of drain only drains one message by default...
  • QPID-3464 - Build improvements (was fix build on Debian squeeze)
  • QPID-3473 - [Java] Replace use of MINA IO with IO layer developed for the Java 0-10 client
  • QPID-3480 - Directly encodes and decodes message content in Ruby
  • QPID-3484 - QMF Main-Loop Integration
  • QPID-3486 - Make connector server port used for JMX configurable
  • QPID-3504 - add the bdb backed store implementation for the Java broker to our ASF repo as an optional build module
  • QPID-3506 - qmf-tool - Improved command line options
  • QPID-3513 - Avoid use of shell script clean-dir during test cycle
  • QPID-3514 - Allow SSL and non-SSL connections on the same port
  • QPID-3545 - Ignore default exchange in qpid-config binding list
  • QPID-3558 - Maven artifacts for the broker
  • QPID-3568 - Update BDB version
  • QPID-3610 - set TCP_NODELAY true by default in the Java client to improve general performance

Tasks

  • QPID-3310 - Principal/Subject refactoring
  • QPID-3433 - Remove non existing and passing java tests from excludes in java test profiles. Raise JIRAs for non-passing tests where it is necessary.
  • QPID-3441 - Correct spelling error in C++ broker's QMF schema
  • QPID-3469 - JIRA clean up for Java client/broker
  • QPID-3511 - Removal of unused system property "qpid.default_wait_on_send" from Java Client
  • QPID-3516 - Docbook recent changes to Java client system properties