# 0.10 Release Notes

### Changes Requiring User Attention

- The C++ broker now enables producer flow control by default. It is controlled via the default-flow-stop-threshold and default-flow-resume-threshold broker configuration parameters. See QPID-2935.
- In the C++ broker, when declaring an exchange with an unknown type or canceling a message on an unknown subscription, an exception with code 404 is created. See QPID-2324 and QPID-2326.
- The C++ broker now enables QMF version 1 and 2 event broadcasts by default. Previously only QMF version 1 events were enabled.
- In the C++ broker, invalid arguments now result in a rejected queue-declare where previously they were ignored. See QPID-3087.
- The C++ client now raises an exception if it is issued connection options that it doesn't recognize. Previously it silently ignored them. See QPID-3115.

### Resolved Issues

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

#### New Feature

- [QPID-529] - Support message priority
- [QPID-1916] - Maven artifacts for the client
- [QPID-2777] - Additional bindings for the C++ messaging API (Python, Ruby)
- [QPID-2934] - Feature to pass the authenticated userId to QMF agent method handlers for authorization
- [QPID-2935] - Support "best effort" producer flow control within the AMQP 0.10 implementation.
- [QPID-3002] - Configurable queue depth alerts
- [QPID-3009] - Perl binding to Qpid messaging
- [QPID-3015] - object creation and deletion via management
- [QPID-3031] - Allow C++ messaging client to specify SSL cert-name in connection
- [QPID-3046] - QMFv2 Completion and Cleanup

#### Bug

- [QPID-1608] - getCurrent method in FailoverPolicy returns null even when a FailoverMethod is present
- [QPID-1670] - Errors thrown from onMessage can kill the dispatcher
- [QPID-1672] - Inter-broker links need full SASL support
- [QPID-2324] - message_cancel should throw 404 not-found exception if subscription does not exist
- [QPID-2326] - exchange.declare should throw a 404 - not found exception if the exchange type is unknown
- [QPID-2486] - cannot move messages onto a durable subscription backing queue using the JMX Management Console
- [QPID-2499] - Stale federation routes remain after route deletion.
- [QPID-2546] - QMF: ruby and python bindings need event support
- [QPID-2900] - CommitRollbackTest#testGetThenRollback and CommitRollbackTest#testSend2ThenRollback fail on java.0.10 profile
- [QPID-2902] - LargeMessageTest fails on java.0.10 test profiles
- [QPID-2930] - JMS msg.getPropertyNames() method should not return x-amqp-0-10.routing-key
- [QPID-2933] - Messaging .NET binding has several assembly properties misnamed
- [QPID-2944] - QMan readme is not included in the release package and contains incorrect URL.
- [QPID-2949] - broker prompts console interactively for password when --auth=no
- [QPID-2951] - QMF: C++ example agent needs to be properly integrated into the release distribution.
- [QPID-2952] - Qpid Cpp Messaging .NET Binding - Address constructor mishandles Name and Type fields
- [QPID-2954] - Dummy queue naming error for transcation test
- [QPID-2956] - cluster broker exits with "error deliveryRecord no update message."
- [QPID-2957] - Management methods on the broker don't work on newly created objects
- [QPID-2959] - Java client null pointer exception thrown when there is no exchange set for ReplyTo
- [QPID-2963] - doxygen-generated C++ docs lost CSS references
- [QPID-2977] - Updated pom files for slf4j
- [QPID-2979] - The following SASL mechanisms [PLAIN] specified by the client are not supported by the broker
- [QPID-2982] - Inconsistent management messages in a cluster with federation routes
- [QPID-2989] - .NET Cpp Messaging Binding - Example program file is misnamed
- [QPID-2991] - Add message counts for both directions to connection stats
- [QPID-2994] - transactions atomicity violated by 'transparent' failover
- [QPID-2996] - qmf/SchemaMethod.cpp fails to compile on s390
- [QPID-2997] - C++ broker creates duplicate management objects under rapid create/delete/create scenarios.
- [QPID-2998] - Spurious declarations in qpid::messaging::Session
- [QPID-2999] - isRedelivered is not set on messages replayed by sender
- [QPID-3001] - Add const declaration to Connection::isOpen()
- [QPID-3006] - Broken acl check on link close
- [QPID-3007] - Inconsistent management messages in a cluster, test fails sporadically
- [QPID-3010] - broker uses the MINA PooledByteBufferAllocator instead of the SimpleByteBufferAllocator
- [QPID-3011] - NPE thrown when using a custom exchange in a replyTo address.
- [QPID-3014] - an inbalance in use of the CurrentActor stack holds 0-10 connections in memory after they are closed
- [QPID-3016] - Java JMS client ReplyTo memory leak
- [QPID-3019] - Exception not reported properly when creating a Producer with an invalid destination
- [QPID-3020] - an inbalance in use of the CurrentActor stack holds 0-10 subscriptions in memory after they are closed
- [QPID-3021] - the Session and Connector actors should be set for events occurring on 0-10 connections
- [QPID-3022] - status logging tests are disabled and/or failing on Java 0-10 test profile
- [QPID-3028] - Java broker uses excessive amounts of memory to service 0-10 connections
- [QPID-3029] - Java broker claims to support 2^16 channels per connection when it doesn't
- [QPID-3030] - C++ buffer encoding allows overflow on write.
- [QPID-3033] - Bug 674183 - Segmentation fault while processing session.attach
- [QPID-3035] - Removing a sequence number from a SequenceSet can corrupt the sequence.
- [QPID-3040] - Closed Receivers Do Not Delete Queues and Do Not Reroute Acquired Messages to Alternate Exchange
- [QPID-3042] - Session.attach could be sent before the connection is open.
- [QPID-3043] - If a new session is created during failover, but before 'resume' is completed, the new session gets reattached again.
- [QPID-3045] - Sporadic failure of cluster_tests.ShortTests.test_route_update
- [QPID-3047] - The QueueDepthWithSelectorTest fails on 0-10 profiles
- [QPID-3048] - InternalBrokerBasecase not removing all log actors
- [QPID-3049] - qpid-send --durable does not send durable messages.
- [QPID-3050] - JMS client producer option -Dsync_publish=persistent has no effect
- [QPID-3051] - Reject can fail to restore message credit
- [QPID-3053] - QMFv2 events disabled by default
- [QPID-3058] - Windows installer doesn't package qpidtypes, qpidmessaging, or dotnet bindings
- [QPID-3060] - QMF Console (console.py) uses the wrong user-id to annotate messages sent
- [QPID-3063] - Python Client messaging/endpoints.py Connection Class: def check_closed(self): method crashes when called.
- [QPID-3065] - Send header and frame data as single buffer
- [QPID-3068] - Some Windows-related files not packaged in release
- [QPID-3069] - C++ cmake build assumes presence of dotnet binding source
- [QPID-3072] - Producer flow control does not work properly in a clustered broker configuration.
- [QPID-3077] - cpp INSTALL-WINDOWS errors, inconsistencies, improvements
- [QPID-3078] - qpid-receive's use of the "-t" option is ambiguous and will cause the command to fail.
- [QPID-3082] - Add qmf-tool to the qpid/tools/setup.py distribution file.
- [QPID-3084] - Cluster may hang during update if asynchronous completion is pending.
- [QPID-3087] - Bad handling of invalid queue arguments
- [QPID-3090] - JMX ObjectName name may not match the underlying managed object
- [QPID-3091] - Can't specify arbitrary arguments for queue-declare in qpid-config
- [QPID-3092] - JMX Management Console does not expose VirtualHost attributes
- [QPID-3094] - unable to delete durable subscription backing queues using the JMX Management Console
- [QPID-3099] - Java qpid-client ignores hostnames containing underscores
- [QPID-3100] - Excessive memory use per-connection
- [QPID-3101] - qpid-tool does not allow maps to be passed as arguments
- [QPID-3102] - messaging API produces messages with ttl=0 by default
- [QPID-3103] - qpid-config doesn't handle null arguments for queues/exchanges
- [QPID-3105] - Alternate-Exchange configuration not communicated between nodes in a cluster
- [QPID-3106] - QueueReceiver and TopicSubscriber does not work with new addressing
- [QPID-3107] - Messages following a queue's Alternate-Exchange do not follow the exchange's Alternate-Exchange
- [QPID-3108] - QueueSender incorrectly checks for null queue
- [QPID-3110] - JMX Management console does not show aggregate virtual host notifications
- [QPID-3116] - rubygen with ruby 1.9
- [QPID-3118] - cpp/examples/CMakeLists.txt tries to install non-existant files
- [QPID-3120] - Queue reroute doesn't honor alternate exchange
- [QPID-3121] - Cluster management inconsistency when using persistent store.
- [QPID-3122] - backward compatibility problem with 0.9 agents
- [QPID-3127] - Accept mode should be NONE for 0-10 NO_ACKNOWLEDGE subscriptions
- [QPID-3130] - slow codec
- [QPID-3132] - Threshold alert on a queue used to receive alerts causes broker crash
- [QPID-3135] - cpp/bld-winsdk.ps1 tries to install non-existant files
- [QPID-3137] - old examples are installed incorrectly
- [QPID-3144] - qpidd --check does not work with info logging and --log-to-stdout=yes
- [QPID-3147] - Misconfigured tracing/logging can lead to hung threads in logging stack
- [QPID-3150] - sasl_fed test fails to specify client's sasl mechanism
- [QPID-3152] - non-clustered sasl_fed_ex_* tests load cluster.so
- [QPID-3154] - Fix qpidd late/overran warnings.
- [QPID-3169] - qpid-route tool should output usage info if bad/unknown command entered.
- [QPID-3174] - broker crash using rdma+sasl
- [QPID-3176] - 0.10 RC2 cpp dist missing examples/old_api/CMakeLists.txt
- [QPID-3177] - JMS Failover Not Working
- [QPID-3185] - Wrong help text for qpid-config
- [QPID-3192] - .NET Binding for Messaging classes are missing intrinsic copy contructors
- [QPID-3197] - C++ Broker crashes on persistence-based stress tests.
- [QPID-3199] - Severe but difficult to diagnose lock error in qpid::sys::StateMonitor
- [QPID-3221] - Fix bug in Cluster::timerDrop - calling wrong function

#### Improvement

- [QPID-2104] - Improved LVQ implementation
- [QPID-2505] - WCF project needs to encode/decode all AMQP data types
- [QPID-2921] - c++ broker: Improvements to asynchronos completion
- [QPID-2939] - Qpid .NET Messaging Binding has stray references and using statements
- [QPID-2958] - Qpid Cpp Messaging .NET Binding library should use Framework v2.0 and not v3.5
- [QPID-2966] - Provide mechanism to alter brokers logging level at runtime
- [QPID-3000] - Support optional timeout before auto-deleting queues
- [QPID-3032] - QMFv2 - Allow endpoints to be directly addressed via a topic exchange
- [QPID-3039] - explicitly define the included debug info instead of relying on defaults which can differ between compilers
- [QPID-3057] - New Visual Studio solution to build org.apache.qpid.messaging.sessionreceiver separately
- [QPID-3067] - Example structure is misleading (c++ examples)
- [QPID-3073] - Producer flow control need performance tuning.
- [QPID-3081] - Maintain a per-queue counter for flow control state change
- [QPID-3089] - add method/function to get a descriptive string for VariantType enumeration
- [QPID-3097] - Adapt installer to rearranged C++ examples
- [QPID-3098] - Java client does not support java.util.UUID in a Map message
- [QPID-3109] - Java client needs to implement the Delete option in address string
- [QPID-3115] - Differences in connection options between c++ and python clients
- [QPID-3124] - Update release script for new build artifacts
- [QPID-3128] - Update CPP broker documentation with producer flow control user api.
- [QPID-3136] - Add option to disable defaults for queue threshold alerts
- [QPID-3151] - Remove dotnet and ruby from the --all release artifacts

#### Wish

- [QPID-1688] - Need more powerful search functionality

#### Sub-task

- [QPID-2680] - Provide user documentation for configuring SCD

#### Task

- [QPID-3017] - Add unit tests and improve error handling for classes within org.apache.qpid.server.txn
- [QPID-3054] - Remove unused old tests from java/systests/src/old_test
- [QPID-3056] - remove unused SSL cert in java/common/src/main/resources

#### Test

- [QPID-3012] - ConnectionCloseTest creates an extreme number of connections
- [QPID-3013] - ConnectionCloseTest fails on machines with increased processor counts
- [QPID-3023] - logging tests unnecessarily use an InternalBrokerBaseCase to load configuration for test comparison

### Known Issues

- [QPID-3182] - Node bindings not established correctly when address used for producer
- [QPID-3214]* - Deadlock between the failover mutex (in AMQConnection.java) and the current_exception_lock (in AMQSession.java)
- [QPID-3216]* - Deadlock between "_lock" (in AMQSession#DisptcherThread) and "_messageDeliveryLock" (in AMQSession.java)

*Although these deadlocks are present in the release, the changes that are known to trigger them were committed post-release. Therefore the likelihood of these deadlocks appearing in the 0.10 release is slim.