This section contains a list of the known issues with Message Queue 4.4. The following product areas are covered:
For a list of current bugs, their status, and workarounds, Java Developer Connection™ members should see the Bug Parade page on the Java Developer Connection web site. Please check that page before you report a new bug. Although all Message Queue bugs are not listed, the page is a good starting place if you want to know whether a problem has been reported.
http://bugs.sun.com/bugdatabase/index.jsp
Java Developer Connection membership is free but requires registration. Details on how to become a Java Developer Connection member are provided on Sun’s “For Developers” web page.
To report a new bug or submit a feature request, send mail to imq-feedback@sun.com.
This section describes issues related to the installation of Message Queue version 4.4.
Message Queue 4.4, like Message Queue 4.2 and 4.1, is installed by a relatively new installer, which also installs and upgrades the Java Enterprise System (Java ES) shared components required by Message Queue; for example, JDK, NSS, JavaHelp, and so on.
The new Message Queue installer and the older Java ES installer, which was used to install previous Message Queue versions, do not share the same product registry. If a version of Message Queue that was installed with the Java ES installer is removed and then Message Queue 4.4 is subsequently installed by the Message Queue installer, the Java ES product registry might be in an inconsistent state. As a result, if the Java ES uninstaller is run, it may inadvertently remove Message Queue 4.4 and the shared components upon which it depends, even though it did not install them.
The best way to upgrade Message Queue software that was installed by the Java ES installer is as follows.
Use the Java ES uninstaller to remove Message Queue and its shared components.
Use the Message Queue installer to install Message Queue 4.4.
These issues affect installation on all platforms.
The Ready to Install screen displays the product name as “mq” rather than as Sun Java System Message Queue 4.3. (Bug 6650841)
When the Installer is in the process of installing Message Queue 4.3 and the Progress screen is displayed, the Cancel button is active. Selecting the Cancel button at this time results in incomplete or broken installs. (Bug 6595578)
The Installer Summary Screen contains a number of links that when clicked will launch a log or summary page viewer. If you dismiss this viewer window using the window close button “X” instead of the button labelled “Close', you will not be able to bring this viewer window back up. (Bug 6587138)
Workaround: Use the button labeled Close to close the window.
When a computer system has older versions of Message Queue and NSS/NSPR, the installer's Upgrade screen only lists Message Queue as requiring upgrade; it does not mention that NSS and NSPR need to be upgraded as well. All the relevant software will nevertheless be upgraded (as indicated by The ReadyToInstall screen which shows the correct information). (Bug 6580696)
List of JDKs on JDK Selection Screen is active even when “Choose a JDK” option is not selected. (Bug 6650874)
When using the Message Queue uninstaller, clicking Cancel instead of Remove will still remove some installer files, and future uninstalls will fail. (Bug 6760416)
Running the installer in registration-only mode (installer -r) after performing a silent install in which registration was skipped, results in registration failing with "Premature end of file" error. (Bug 6767988)
When running the Message Queue 4.3 installer on a computer in which Open Message Queue has been previously installed, you might see the following warning message: "Error reading previous session data from Config-State." (Bug 6764305)
Workaround: The message is benign and will not recur once the install has been completed. Or you can remove the /var/install/config/mq/InstallDirectory.xcu file to avoid the message.
When running the Message Queue zip-based installer on a computer with no JDK installed, the following error message is displayed: "Invalid root in registry key "HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion." (Bug 6764358)
Workaround: Install the JDK prior to running the installer.
The mqInstallHome directory is created by the Message Queue installer even before you click the Install button on the Ready To Install screen. (Bug 6595590)
Trying to register Message Queue in text mode (installer -t -r) without having installed Message Queue throws a NullPtr Exception. (Bug 6760991)
Workaround: Install Message Queue before trying to register the installation.
When installing Message Queue on Windows, please note the following limitations.
The installed directory structure of Message Queue 4.3 on the Windows platform is different from that of previous releases. See Installed Directory Structure in Sun Java System Message Queue 4.3 Installation Guide.
The installer does not add entries for Message Queue to the Start>Programs menu. (Bug 6567258)
Workaround: To start the Administration Console use the command line as shown in Starting the Administration Console in Sun GlassFish Message Queue 4.4 Administration Guide.
The installer does not add the IMQ_HOME\mq\bin directory to the PATH environment variable.(Bug 6567197)
Workaround: Users need either to add this entry to their PATH environment variable or provide a full path name when invoking Message Queue utilities (IMQ_HOME\mq\bin\command).
The installer does not add entries to the Windows registry to indicate that Message Queue is installed. (Bug 6586389)
The installer does not add the Message Queue broker as a Windows service.
Workaround: Manually add the Message Queue broker as a Windows service using the imqsvcadm command.
If there is no JDK installed, the installer will throw the following error: “Invalid root in registry key HKLM\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\CurrentVersion.” (Bug 6764358)\par
Workaround: If you see this error, install a JDK and proceed.
When run in silent mode with an answer file, the installer returns right away. The installation does happen; but the user has no way of knowing when the silent installation is actually done. (Bug 6586560)
Attempting to run the installer in text mode (installer –t) on Windows causes an error message that is displayed in English even when the installer is run in non-English. Text mode is not supported on Windows. (Bug 6594142)
The installer installs Message Queue on C:\ even if the operating system is installed on a different drive. (Bug 6673511)
For installation and uninstallation on Windows, there are no .bat files that the user can run, nor can user uninstall by using Add/Remove Programs in the Windows Control Panel. (Bug 6673417)
On Windows Vista, you cannot install Message Queue under C:\Program Files unless you install from a Command Prompt as Administrator. (Bug 6701661)
Workaround: To install from a Command Prompt as Administrator:
1. Start->Programs->Accessories->Command Prompt.
2. Right click on Command Prompt.
3. Select Run as Administrator.
4. Change directory to the Message Queue 4.2 install image.
5. Run installer.vbs.
When the uninstaller is run in dry run mode (uninstaller -n), it incorrectly performs an uninstall. (Bug 6719051)
Workaround: Perform a silent install using the following command:
uninstaller -s
The “Install Home” string on the installer Home page is not localized. (Bug 6592491)
Message Queue Zip-based uninstaller hangs on Windows 2003. (Bug 6764370)
Workaround: Manually remove the mqInstallHome directory.
When the installer is run in dry run mode (installer –n), the Summary Screen shows some error messages and also displays an install status of “Incomplete”. This is incorrect and misleading; a dry run does not install anything on the system; it only creates the answer file that can be subsequently used to perform a silent install. (Bug 6594351)
The installer does not perform Sun Connection registration when run in silent mode with an answer file (installer -a filename -s). (Bug 6710268)
When running the installer in text mode, when entering a username or password for Sun Connect registration or creating an online account, you cannot correct a user name or password using the backspace key. (Bug 6673460)
Workaround: Use the Control-H keys instead of the backspace key, or use a different terminal emulator like dtterm or xterm.
The Upgrade screen on the installer does not always correctly report the existing installed version of Message Queue or of the installer engine. (Bug 6679765)
When using the installer in text mode and attempting Sun Connection registration with an invalid user and password names, the installer displays an “unable to register” dialog, throws a Null pointer exception, and exits. (Bug 6666365)
The following issues affect installation on the Linux Platform:
On Red Hat Linux 5, the compat-libstdc++ library needed to run C client applications is not included in the Message Queue distribution and is therefore is not installed by the Message Queue installer. If you are developing and running C clients, you need to install this library manually.
Thecompat-libstdc++ rpm is usually found on the install medium of the Linux version you are using. It can be installed using the following command:
rpm -ivh compat-libstdc++-x-x.x.x.x..rpm
where x represents the version number.
To check that the library has been successfully installed, use the following command:
rpm -qa | grep compat-libstdc++
On Red Hat Linux 5, C clients can fail with a PR_LOAD_LIBRARY_ERROR error (Bug 6885978)
On Red Hat Linux 5, C clients can fail, displaying a message similar to:
"Preparing for NSS initialization ..." "Initializing NSS ..." "Could not connect to broker because 'PR_LOAD_LIBRARY_ERROR' (-5977)." producer(): Error: PR_LOAD_LIBRARY_ERROR |
This error arises because the NSS/NSPR libraries are not accessible.
To resolve this issue, set the LD_LIBRARY_PATH environment variable to include the path to the NSS/NSPR libraries, IMQ_HOME/nss/lib.
On the JDK Selection panel, the scroll list displays only one item. This makes it difficult to select other JDK's in the list. (Bug 6584735)
If the JDK is current and the user selects “Install default JDK” on the JDK Selection Screen, the installer still tries to install it and reports that it cannot install the package. Installation completes successfully despite this issue. (Bug 6581310)
If the currently installed JDK is a later version than JDK 1.5.0_15 (the version normally installed by the Message Queue installer), then the Message Queue uninstaller cannot find the default IMQ_JAVAHOME directory and returns an error. (Bug 6673415)
Workaround: Install JDK 1.5 manually as follows before running the Message Queue uninstaller.
# cd installImage/Product/UNIX/LINUX/X86/2.4/Packages
# rpm -i --force jdk-1.5.0_15–linux-arch.rpm
where arch is either i586 or amd64.
When the installer is run in dry run mode (installer –n), the Summary Screen shows some error messages and also displays an install status of “Incomplete”. This is incorrect and misleading; a dry run does not install anything on the system; it only creates the answer file that can be subsequently used to perform a silent install. (Bug 6594351)
Running the Message Queue installer in text mode on 64-bit Linux does not work. (Bug 6771303)
Workaround: If you are trying to install remotely from a terminal window then you will have to use some remote display software to run the installer in GUI mode instead.
The installer displays Message Queue version information in an opaque form. (Bug 6586507)
On the Solaris platform, refer to the following table to determine the Message Queue version displayed by the installer.
Table 1–12 Version String Translation
Version as Displayed by the Installer on Solaris OS |
Corresponding Message Queue Release |
---|---|
4.4.0.0 |
4.4 |
4.3.0.0 |
4.3 |
4.2.0.0 |
4.2 |
4.1.0.2 |
4.1 Patch 2 |
4.1.0.1 |
4.1 Patch 1 |
4.1.0.0 |
4.1 |
3.7.2.1 |
3.7 UR2 Patch 1 |
3.7.0.2 |
3.7 UR2 |
3.7.0.1 |
3.7 UR1 |
3.6.0.0 |
3.6 |
3.6.0.4 |
3.6 SP4 |
3.6.0.3 |
3.6 SP3 |
3.6.0.2 |
3.6 SP2 |
3.6.0.1 |
3.6 SP1 |
For Patch releases to 3.6 SP4 (for example, 3.6 SP4 Patch 1), the releases string displayed by the installer stays the same. You need to run the command imqbrokerd -version to determine the exact version.
On the Linux platform, the version number displayed by the installer is in the following form.
majorReleaseNumber.minorReleaseNumber-someNumber
For example, 3.7–22. This tells us only that this is one of the 3.7 releases, but not which specific one. To determine the installed Message Queue version, run the command:
imqbrokerd -version.
The following issues relate to localization problems.
When the installer is run in text mode (installer –t), in a non-English locale, multi-byte characters show up as garbage. (Bug 6586923)
On the Installer Progress screen, the progress bar shows strange characters. The tooltip is hard coded in non-English locales. (Bug 6591632)
Text mode (installer –t) is not supported on Windows. Running the installer in text mode on Windows will cause an error message to be displayed. This message is not localized when the installer is run in non-English locales. (Bug 6594142)
The License screen of the installer displays English license text no matter which locale the Installer is run in. (Bug 6592399)
Workaround: To access localized license files, look for at the LICENSE_MULTILANGUAGE.pdf file.
Installer usage help text is not localized. (Bug 6592493)
The string “None” that is seen on the Installer summary HTML page is hard coded in English. (Bug 6593089)
When the installer is run in a German locale, the Welcome screen does not show the complete text that is seen in other locales. (Bug 6592666)
The string “Install Home” seen on the Installer Install Home screen is not localized. It appears in English even when the installer is run in non-English locales. (Bug 6592491)
When the installer is run in text mode (installer –t), the English response choices “Yes” and “No” are used no matter what locale the installer is run in. (Bug 6593230)
The tooltip for the browse button on the Installer JDK Selection screen is hard coded in English. (Bug 6593085)
In previous versions of Message Queue, you could use the —p or —password option to specify a password interactively for the following commands: imqcmd, imqbrokerd, and imdbmgr. Beginning with version 4.0, these options have been deprecated.
Instead, you can create a password file that specifies the relevant passwords and reference the password file using the -passfile command option, or simply enter a password when prompted by the command.
A password file can contain one or more of the passwords listed below.
A keystore password used to open the SSL keystore. Use the imq.keystore.password property to specify this password.
An LDAP repository password used to connect securely with an LDAP directory if the connection is not anonymous. Use the imq.user_repository.ldap.password property to specify this password.
A JDBC database password used to connect to a JDBC-compliant database. Use the imq.persist.jdbc.vendorName.password property to specify this password. The vendorName component of the property name is a variable that specifies the database vendor. Choices include hadb, derby, pointbase, oracle, or mysql.
A password to the imqcmd command (to perform broker administration tasks). Use the imq.imqcmd.password property to specify this password.
In the following example, the password to the JDBC database is set in the password file to abracadabra.
imq.persist.jdbc.mysql.password=abracadabra
You can use a password file in one of the following ways.
Configure the broker to use the password file by setting the following properties in the broker's config.properties file.
imq.passfile.enabled=trueimq.passfile.dirpath=passwordFileDirectoryimq.passfile.name=passwordFileName
Use the -passfile option of the relevant command, for example:
imqbrokerd -passfile passwordFileName
The following issues pertain to administration and configuration of Message Queue
On Windows platforms, you need to manually add the Message Queue broker as a Windows service using the imqsvcadm command. The installer does not do this for you.
On Windows platforms, the built-in Windows Firewall, which is enabled by default, must be manually configured with a firewall rule that allows the broker to accept incoming connections from clients. (Bug 6675595)
Double-click on Windows Firewall in the Control Panel
You will have to click Continue on the User Account Control dialog for the Windows Firewall Settings dialog to open.
In the Windows Firewall Settings dialog, click the Exceptions tab.
Click Add program.
In the Add a Program dialog, select java.exe and click Browse.
Windows identifies the broker process as a Java Platform SE binary. Therefore, locate the java.exe used by the broker (usually at jdk1.5.0_15\jre\bin\java.exe).
Click Change scope.
In the Change Scope dialog, select “Any computer (including those on the Internet.”
Click OK.
In the Add a Program dialog, click OK.
In the Windows Firewall Settings dialog, click OK.
On Windows platforms, the imqadmin and imqobjmgr commands throw an error when the CLASSPATH contains double quotes. (Bug 5060769)
Workaround: Open a command prompt window and unset the CLASSPATH:
set classpath=
Then run the desired command the same command prompt window, for example:
mqInstallHome\mq\bin\imqadmin
The -javahome option in all Solaris and Windows scripts does not work if the value provided contains a space. (Bug 4683029)
The javahome option is used by Message Queue commands and utilities to specify an alternate Java 2 compatible runtime to use. However, the path name to the alternate Java runtime must not contain spaces. The following are examples of paths that include spaces.
Windows: C:\jdk 1.4
Solaris: /work/java 1.4
Workaround: Install the Java runtime at a location or path that does not contain spaces.
The imqQueueBrowserMaxMessagesPerRetrieve attribute specifies the maximum number of messages that the client runtime retrieves at one time when browsing the contents of a queue. The attribute affects how the queued messages are batched, to be delivered to the client runtime, but it does not affect the total number of messages browsed. The attribute only affects the browsing mechanism, it does not affect queue message delivery. (Bug 6387631)
On Linux platform running SELinux, the Update Center pkg command fails (Bug 6892062)
Workaround: This issue is caused by a known issue in Update Center (https://updatecenter2.dev.java.net/issues/show_bug.cgi?id=1211). Use the following command to enable pkg to function on SELinux with enforcement enabled:
# chcon -f -t textrel_shlib_t $IMAGE/pkg/vendor-packages/OpenSSL/crypto.so |
The following issues affect the Message Queue broker.
Message Queue 4.4 clients receive an unclear warning when connecting to Message Queue 3.7 brokers (Bug 6899886)
When a Message Queue 4.4 client connects to a Message Queue 3.7 broker, the client receives a warning of the form:
WARNING [I500]: Caught JVM exception: ... [C4036]: A broker error occurred. :[505] bad version ...
This “bad version” warning indicates that the client should reconnect to the broker at a lower protocol level.
Broker becomes inaccessible when persistent data store opens too many destinations. (Bug 4953354)
Workaround: This condition is caused by the broker reaching the system open-file descriptor limit. On Solaris and Linux use the ulimit command to increase the file descriptor limit.
Consumers are orphaned when a destination is destroyed. (Bug 5060787)
Active consumers are orphaned when a destination is destroyed. Once the consumers have been orphaned, they will no longer receive messages (even if the destination is recreated).
When a JMS client using the HTTP connection service terminates abruptly (for example, using Ctrl-C) the broker takes approximately one minute before releasing the client connection and all the associated resources.
If another instance of the client is started within the one minute period and if it tries to use the same ClientID, durable subscription, or queue, it might receive a “Client ID is already in use” exception. This is not a real problem; it is just the side effect of the termination process described above. If the client is started after a delay of approximately one minute, everything should work fine.
When using MySQL database for a data store, storing messages greater than 1 MB throw a “Packet for query is too large...” SQLException. (Bug 6682815)
Workaround: Start the MySQL server with the --max_allowed_packet option set to a value greater than the 1 MB default. For example, use the following value:
--max_allowed_packet=60M
When using MySQL database for a highly-available shared data store, a mechanism is needed to configure the MySQL storage engine as NDBCLUSTER. (Bug 6691394)
Workaround: Add the following property value to the broker's config.properties file (see Enhanced Clusters: JDBC Configuration Properties in Sun GlassFish Message Queue 4.4 Administration Guide)
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER
When using Oracle's 9i (JDBC 9.2.0.x) driver, broker throws “Failed to persist property...” exception. (Bug 6626825)
Workaround: Use Oracle's 10g (JDBC 10.2.0.x) driver, for which the broker is optimized.
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
When using Java DB database for a data store, storing a message throws a “lock could not be obtained within the time requested” SQLException. (Bug 6691394)
Workaround: Add the following property value to the broker's config.properties file::
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
When using IBM JVM on AIX, broker sometimes runs into low or RED memory condition without apparent reason (Bug 6899526)
Workaround: Use the latest version of the IBM JVM (Java Runtime 1.6.0 IBM Corporation or higher) and pass the following IBM JVM GC option to imqbrokerd:
# imqbrokerd -vmargs -Xgcpolicy:gencon |
The following issues affect broker clusters.
High-availability broker with MySQL Cluster datastore fails to restart if abnormally terminated (Bug 6896877)
Workaround: This issue is caused by a known issue in MySQL Cluster (http://bugs.mysql.com/bug.php?id=47955). A correction for this issue has been pushed to MySQL versions 5.1.39-ndb-6.3.28, 5.1.39-ndb-7.0.9 and 5.1.39-ndb-7.1.0.
Message Queue 4.4 brokers cannot interoperate in a cluster with Message Queue 3.7 or 3.6 brokers. (Bug 6884673)
Only fully-connected broker clusters are supported in this release. This means that every broker in a cluster must communicate directly with every other broker in the cluster. If you are connecting brokers into a conventional cluster using the imqbrokerd -cluster command line argument, be careful to ensure that all brokers in the cluster are included.
If a client is connected to a broker in an enhanced broker cluster, the client runtime will attempt to reconnect until it succeeds (it ignores the value of the imqAddressListIterations connection factory attribute.)
A client can only browse the contents of queues that are located on its home broker. The client can still send messages to any queue or consume messages from any queue in the cluster; the limitation only affects queue browsing.
In a conventional cluster that includes version 4.3 brokers, all brokers must be version 3.5 or later.
Message Queue 4.3, 4.2, and 4.1 brokers cannot interoperate in a cluster by default with Message Queue 3.7 or 3.6 brokers because the default value of imq.autocreate.queue.maxNumActiveConsumers changed between these versions. (Bug 6716400)
Workaround: Make sure all brokers have the same value of Change the value of imq.autocreate.queue.maxNumActiveConsumers, usually accomplished by changing the Message Queue 4.3, 4.2, and 4.1 configuration to match that used by the 3.7 or 3.6 brokers (by default, from the value of -1 to the previous version's default value of 1).
To add a Message Queue 4.3 (or 4.x) broker to a Message Queue 3.x broker cluster, the a master broker must be running. (Bug 6763796)
When converting from a conventional cluster to an enhanced cluster, you can use the Message Queue Database Manager utility (imqdbmgr) to convert an existing standalone JDBC-based data store to a shared JDBC data store as documented in Cluster Conversion: JDBC-Based Data Store in Sun GlassFish Message Queue 4.4 Administration Guide
A broker using HADB cannot handle messages larger than 10 MB. (Bug 6531734)
The conversion to an HADB store using the command imqdbmgr upgrade hastore can fail with the message “too many locks are set” if the store holds more than 10,000 message. (Bug 6588856)
WorkaroundUse the following command to increase the number of locks.
hadbm set NumberOfLocks=<desiredNumber>
For additional information see “HADB Problems” in Sun Java System Application Server 9.1 Enterprise Edition Troubleshooting Guide.
If more than 500 remote messages are committed in one transaction, the broker might return the error “HADB-E-12815: Table memory space exhausted.” (Bug 6550483)
For additional information, see “HADB Problems” in Sun Java System Application Server 9.1 Enterprise Edition Troubleshooting Guide.
In a broker cluster, a broker will queue messages to a remote connection that has not been opened. (Bug 4951010)
Workaround: The messages will be received by the consumer once the connection is opened. The messages will be redelivered to another consumer if the consumer’s connection remains closed.
When consuming more than one message from a remote broker in one transaction, it is possible that the following error message will be logged to the broker. The message is benign and can be ignored:
[26/Jul/2007:13:18:27 PDT] WARNING [B2117]: Message acknowledgement failed from mq://129.145.130.95:7677/?instName=a&brokerSessionUID=3209681167602264320: ackStatus = NOT_FOUND(404)\ Reason = Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed. AckType = MSG_CONSUMED MessageBrokerSession = 3209681167602264320 TransactionID = 3534784765719091968 SysMessageID = 8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690 ConsumerUID = 3534784765719133952\par [26/Jul/2007:13:18:27 PDT] WARNING Notify commit transaction [8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690, [consumer:3534784765719133952, type=NONE]] TUID=3534784765719091968 got response: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.r
This message gets logged when notifying the commit to the message home broker for later messages in the transaction when the imq.txn.reapLimit property is low compared to the number of remote messages in one transaction. (Bug 6585449)
Workaround: To avoid this message increase the value of the imq.txn.reapLimit property.
On the Windows platform, the getTransactionInfo method of the Transaction Manager Monitor MBean returns transaction information that has incorrect transaction creation time. (Bug 6393359)
Workaround: Use the getTransactionInfoByID method of the Transaction Manager Monitor MBean instead.
You need to be aware of two issues related to SOAP support
Beginning with the release of version 4.0 of Message Queue, support for SOAP administered objects is discontinued.
SOAP development depends upon several files: SUNWjaf, SUNWjmail, SUNWxsrt, and SUNWjaxp. In version 4.1 of Message Queue, these files are available to you only if you are running Message Queue with JDK version 1.6.0 or later.
Previously the SAAJ 1.2 implementation .jar directly referenced mail.jar. In SAAJ 1.3 this reference was removed; thus, Message Queue clients must explicitly put mail.jar in CLASSPATH.