2.1. MRG Messaging Known Issues
| Bugzilla Number | Description | Workaround |
|---|---|---|
| 444742 | When a Java Messaging Service client attempts to send messages via a federation link to a queue on a remote broker with reply-to set to a temporary queue on the local broker. A client of the remote broker should be able to send a reply back via a federation link. |
Temporary queues can be created directly through the AMQQueue class, allowing a specific name to be assigned to them. The appropriate routes between brokers can then be configured using the qpid-route tool
|
| 449827(a) |
The client::Sesssion class in the C++ client API has been modified. The new client::Session class provides synchronous functions corresponding to AMQP commands. The functions block until the command is completed by the broker and return a C++ result object (or void if no result is expected.)
|
The names and parameter lists of the functions on client::Session are identical, only the return types differ. The functions async() and sync() can be used to convert a Session to an AsyncSession and vice versa.
|
| 449827(b) |
A new client::AsyncSession class has been added to the C++ client API. The client::AsyncSession class provides asynchronous functions for the AMQP commands. These functions send the command and return immediately. They return a Future object that can be used to wait for the command to complete and retrieve the result.
|
The names and parameter lists of the functions on client::AsyncSession are identical, only the return types differ. The functions async() and sync() can be used to convert a Session to an AsyncSession and vice versa.
|
| 450707 |
When the broker is started with the store module loaded, the store module will open the BDB database in the data directory. It has been observed that if BDB is upgraded, or the store directory from one version of BDB is used by another version, then the broker will fail to start. One of the most commonly observed error messages is:
Database handles still open at environment close Error opening environment (BdbMessageStore.cpp:144): DbEnv::open: Invalid argument |
If recovery is not important (that is, if there are no messages or queues that need to be restored on startup), then simply delete the database and journal (if it exists) in the store directory. The broker will create a new one when it starts. This is most easily done with a command such as
rm -rf
where /var/lib/qpidd is the data directory. If recovery is important, then it will be necessary to run the db_recover utility against the database. This requires the db4-utils package. Run
# yum install db4-utilsas root to install the package. |
| 450751 |
Using TCP_NODELAY can significantly improve the performance of Java clients that do synchronous publishing or that use many small transactions.
|
TCP_NODELAY can be enabled by setting the amqj.tcpNoDelay system property to true:
java -Damqj.tcpNoDelay=true |
| 450840 | For performance reasons the Java client library does not throttle producer rate by default. When an application is using a slow network or sending very large messages, messages might be produced faster than they are written. In this situation the client application may eventually run out of memory. |
This can be prevented (with a small performance penalty) by using the property
-Dprotectio=true |
| 451018 |
If the same relative path is specified for data-dir and pid-dir the daemon starts but fails when shutdown (using the --quit option) as the pid file is in an unexpected location.
|
Always use absolute paths when running the broker as a daemon. |
| 451106 |
When MRG Messaging is started as a daemon it sends log messages to syslog by default. The --syslog-name and --syslog-facility options allow you to modify the name and facility that is used in syslog messages. When MRG Messaging is started without the --daemon option it sends log messages to stderr by default.
|
You can change the log destination in either case by setting the --log-output option.
|
| 451121 | Under a specific failure condition, normal recovery could fail to guarantee full atomicity. | This will be addressed in an erratum. In the meantime, the journal contains a sufficient record to avoid data loss following manual correction by the Red Hat team. |
| 451269 | When using the journal, the available file handles for the process needs to be correctly configured for the expected number of queues and the number of files per journal. Currently, two file handles are opened for each active journal file. | |
| 451716 | Recent changes have degraded the transactional performance. | This will be optimised in an erratum. |