Chapter 5. Fixed issues

  • ENTMQBR-742 - JMS Queues are not being auto-deleted for Openwire and AMQP clients

    Previously, addresses and queues with <auto-delete-addresses> and <auto-delete-queues> set to true were not deleted when AMQ OpenWire JMS clients disconnected from them.

  • ENTMQBR-781 - [Error Codes] same Error Code(s) defined in different places with different reasons

    In previous releases of AMQ Broker, logging error codes were not unique for all broker log messages. The duplicate and conflicting logging error codes are now corrected.

  • ENTMQBR-882 - Standby slave does not announce replication to master when primary slave is down

    This issue occurred in past releases when multiple backup brokers, also referred to as slaves, served a single live (master) broker. In this scenario, if a primary backup broker failed, the secondary backup tried to replicate. But that operation failed, the secondary backup could not take over for the primary backup, and as a result, high-availability was lost. This issue is now resolved.

  • ENTMQBR-914 - [AMQ7, broker startup ] AMQ224000: Failure in initialization: java.lang.IllegalStateException: Cannot find queue with id XXXX

    In previous versions of AMQ Broker, the broker would fail to start if you had an XA transaction in the prepared state, then deleted the queue that this transaction used, and then attempted to restart the broker.

  • ENTMQBR-929 - LDAPLoginModule cannot process referrals

    Previously, the LDAP JAAS login module was unable to handle LDAP referrals, which caused authentication and authorization failures.

  • ENTMQBR-930 - Unable to login with multiple LDAP modules configured

    The commit operation of the LDAP JAAS login module would always return null, resulting in unexpected behavior when multiple instances of the module were configured in the same domain.

  • ENTMQBR-943 - [AMQ7, Openwire, Compression] consuming Openwire compressed bytemessage throws java.util.zip.DataFormatException: incorrect header check

    Previously, when using the OpenWire protocol to send small, compressed ByteMessages that have JMS properties set for a queue, an exception was thrown on the consumer side when it attempted to decompress the message. See the Knowledge Base article on the Red Hat Customer Portal for more details: https://access.redhat.com/solutions/3269061.

  • ENTMQBR-956 - [AMQ7, AMQP, JMX, DeliveringCount] JMX operation listDeliveringMessages() returns empty string when deliveringCount > 0

    In previous releases, the JMX operation listDeliveringMessages() did not return messages that were consumed by an AMQ JMS client in a transaction. The transactional messages are now returned correctly when the JMX operation listDeliveringMessages() is called.

  • ENTMQBR-965 - [AMQ7, openwire, exclusive consumer] AMQ6 OpenWire clients using exclusive consumer do not behave the same with an AMQ 7 broker

    In AMQ 7, setting the maximum number of consumers for a queue to one did not work the same as for an exclusive consumer in AMQ 6. In AMQ 6, using an exclusive consumer means that one consumer will receive all of the messages. Any other consumers are still registered, just not consuming messages. When the current exclusive consumer leaves the queue, another consumer becomes the exclusive consumer.

    Previously in AMQ 7, if you set max-consumers = 1 for a queue, when this limit is reached, the broker returned a AMQ119200 error and did not allow any new consumers to join the queue. This error no longer occurs.

  • ENTMQBR-966 - Unsettled AMQP messages are lost when Receiver Link is opened on remote cluster member

    An issue causing message loss has been fixed in this release. Previously, if messages were sent to a broker using the AMQP address, and the address was not set on the messages, then some of the messages could be lost if they were redistributed.

  • ENTMQBR-967 - [AMQ 7.1.0 CR1.1] Limit non-ssl connection, handshake-timeout not configurable

    Previously, the broker did not disconnect unauthenticated clients. With AMQ Broker 7.2, you can use the configuration parameter handshake-timeout to limit the amount of time that an unauthenticated client can remain connected.

  • ENTMQBR-973 - Incorrect message priority displayed in hawtio console

    When viewing messages in AMQ Console, the message priority is now correct. Before, the message priority incorrectly defaulted to 4.

  • ENTMQBR-1016 - [AMQ7,Hawtio]AMQ 7 hawtio console store users password in browser’s local cache after user get logout

    A security issue has been fixed for AMQ Console. Before, if you logged into AMQ Console, the value of the Password field was visible from local storage in Google Chrome Developer tools.

  • ENTMQBR-1018 - When live-slave fails-back to master, it turns off everything down, even its console

    In high-availability configurations, AMQ Console is now accessible when a slave broker returns control to the master broker. Previously, AMQ Console would become unavailable for the slave broker when it gave control back to the master broker.

  • ENTMQBR-1030 - Restrict directory listings of Hawtio within the web server configuration

    AMQ Console no longer permits access to restricted directory listings.

  • ENTMQBR-1045 - Client connection failed message in broker log with OpenWire client

    Previously, when an OpenWire client (ActiveMQ) disconnected cleanly, the broker showed a warning message similar to the following:

    Client connection failed, clearing up resources for session ID:localhost-45795-1527065581471-5:1:1

    This issue is now resolved.

  • ENTMQBR-1061 - Exception when using LegacyLDAPSecuritySettingsPlugin

    Previously, when using LegacyLDAPSecuritySettingsPlugin, if you specified authorization settings with non-standard, but still valid syntax, you saw an exception. This is because the broker interpreted LDAP search results based on hard-coded key names, not on order. This issue is corrected.

  • ENTMQBR-1130 - Destinations undeployed when master recovers from outage

    When adding destinations to a broker’s configuration file (broker.xml) at runtime, the destinations are now preserved in the configuration file and reloaded if the broker is restarted. Previously, if you added destinations to a broker’s configuration file, the destinations would not be reloaded when the broker was restarted.

  • ENTMQBR-1169 - [AMQ 7, Hawtio, large message] Sending very large messages through Hawtio results in an exception

    Previously, if you used the Hawtio console to send a message exceeding the broker’s internal buffer size, you saw an exception. This issue is corrected. The broker now automatically converts this type of message to a large message and sends it successfully.

  • ENTMQBR-1184 - LargeMessage Produced by AMQP Protocol Can Not Be Consumed By AMQP Protocol

    In previous releases, if the size of an AMQP JMS Object Message was greater than the value specified for the maximum journal record size, an exception was thrown on the broker and the consumer was not able to receive the message. This issue was caused by a problem in the AMQP large message to core message conversion process.

    This issue is fixed and AMQP large messages can be sent and received as usual.

  • ENTMQBR-1461 - AMQP: IndexOutOfBoundsException when dispatching ObjectMessage that was handled as a Large Message

    Previously, if you were using the AMQP protocol with the Qpid JMS client, and you sent a JMS ObjectMessage that was also a large message (larger than the min-large-message-size), an error would occur when the message was consumed. This error no longer occurs.

  • ENTMQBR-1466 - [3 HA pairs] Slave does not become live after master is killed and isolates itself

    The quorum voting protocol has been corrected. Previously, in high-availability configurations consisting of three high-availability pairs with replication, this issue occasionally prevented slave brokers from taking over during a failover event. Instead, the slave broker would become isolated from the broker cluster.

  • ENTMQBR-1500 - Jolokia read request does not fetch all attributes

    Using Jolokia, it is now possible to request all of the attributes for the broker MBean.

  • ENTMQBR-1548 - Implementation of AMQP interceptor is passing a null RemotingConnection reference

    Previously, if you were using the interceptor API with the AMQP protocol, and you implemented the following method, the connection parameter was always null:

    public boolean intercept(AMQPMessage message, RemotingConnection connection)

    Now, the connection parameter is properly set.

  • ENTMQBR-1699 - Cannot set the message content when using ./artemis producer

    Earlier releases of AMQ Broker 7.x did not contain an option to specify the message content when using the ./artemis producer, as the A-MQ 6.x product did. Now, the --message parameter is available and you can use it to specify the content of the message.

  • ENTMQBR-1757 - AMQ Broker throws ERROR if we update the address ANYCAST to MULTICAST or vice-versa in broker.xml

    Previously, if the broker was stopped and the routing type for an existing address with queues was changed in the broker.xml file, the broker would fail to restart. The relevant code for updating the configuration has been modified so that such a configuration change is possible, and even if there is an error deploying the address or queue, the broker will log the error and still start.

  • ENTMQBR-1816 - Queue#MessageCount negative and messages stop flowing to AMQP consumer

    Previously, an AMQP client could send a disposition for a delivered message indicating that the client received the message but didn’t consume it. This behavior could cause the message count on the broker to have a negative value. This issue is now resolved.

  • ENTMQBR-1878 - [AMQ7, broker shutdown, JMX connector] JVM does not exit if connector configured in management-context

    In previous releases, sometimes the broker did not properly close the management context when stopping the broker. The broker would appear to be stopped, but the JVM process never fully exited. Now there are checks to ensure that the management context is always closed when stopping the broker and the JVM process exits, even when a management context connector is configured.

  • ENTMQBR-1880 - Hawtio Artemis tab disappears if we use IE

    The AMQ Console Hawtio plug-in employs the Javascript arrow function, which is not supported by Internet Explorer. When using the AMQ Console, if you click the back or foward arrows in the browser window, the Artemis tab cannot be viewed in the console. To workaround this issue, use a different browser or use the navigation tools in the console application itself.

  • ENTMQBR-1958 - Queue preference changes to display columns not persistent through page refresh

    Refreshing the AMQ Console caused changes to the default column lists of tabs to be lost. To maintain your settings, you had to refrain from refreshing the browser window. Now column list preferences are stored and reused each time you access a page and refreshing the browser does not cause settings to be lost.

  • ENTMQBR-1995 - Enabling TRACE-level logging in the broker leads to ConcurrentModificationException and failed operations

    In previous releases, multiple threads could concurrently modify a message’s properties. This resulted in WARN messages in the log when TRACE-level logging was enabled. Now, concurrent access to message properties is done safely and the WARN messages in the log related to this issue no longer occur.

  • ENTMQBR-2011 - Consumer of store-forward internal queues get dropped when syncing large messages

    Using temporary destinations in a clustered environment caused messages to get dropped from store and forward queues when clustering messages between brokers. As a result, the broker was not able to distribute messages across cluster nodes and needed to be restarted. Now you can safely use temporary destinations in a clustered environment.

  • ENTMQBR-2014 - AMQ7: io.netty.handler.codec.DecoderException: java.lang.NullPointerException in broker log

    When a client connected by using an unrecognized protocol, a NullPointerException with full stack-trace was logged. Now the AMQ Broker detects and handles unrecognized protocols more gracefully and a proper ERROR message is logged.

  • ENTMQBR-2024 - Broker ignores client requests for advisory consumers when advisory messages are disabled

    In prior releases, when advisory messages were disabled on the broker, the broker ignored client requests to create advisory consumers and made no record of these consumers. If clients attempted to query these consumers, you saw an exception. This issue is corrected. The broker now creates records of advisory consumers when clients request them, and subsequent operations are successful.

  • ENTMQBR-2052 - Message load balancing off, unable to send messages to queue on other nodes instead of subscribed consumer

    In releases prior to AMQ Broker 7.2.3, a recursive call would result in a StackOverflowError error message in certain conditions when message load balancing was set to OFF. As a result, the broker would not receive messages sent from clients. In AMQ Broker 7.2.3, a verification step has been added to ensure that a recursive call will not become infinite. Now, brokers receive any message sent by a client even when message load balancing is set to OFF.

  • ENTMQBR-2055 - [Hawtio] console display blank ClientID for the core client

    When using releases prior to AMQ Broker 7.2.3 with AMQ Console, the field named Client ID was not populated when viewing a AMQ Core Protocol JMS Client connection for a producer or consumer. Now, the value of Client ID is visible in AMQ Console for AMQ Core Protocol JMS Client connections.

  • ENTMQBR-2063 - Broker does not send sasl error when user attempts anonymous sasl and GuestLoginModule is not configured

    In prior releases, if a client attempted an anonymous login to a broker that did not have guest access enabled, the broker produced an exception. However, this exception was not recognizable to the client as an authentication error. This issue is now resolved.

  • ENTMQBR-2074 - Retry from DLQ and Expiry Queue is broken on web console (Hawtio)

    Previously, the broker ignored messages retried for delivery from the DLQ. These messages instead stayed on the DLQ. This issue is corrected. The broker now correctly adds redelivered messages from the DLQ to the original queue.

  • ENTMQBR-2085 - [AMQ7, JMSXGroupSeq] Support JMSXGroupSeq -1 to close/reset Groups

    Previously, the broker did not remove message groups as expected when a client set JMSXGroupSeq to -1, per ActiveMQ 5. As a result, you could not change a message group once you pinned it to a consumer and broker. This issue is resolved.

  • ENTMQBR-2086 - [AMQ 7, JMS Selectors] JMS Selectors broken in some cases

    With each supported protocol, fields such as JMSXGroupID or AMQGroupID were not properly parsed by the filter parser. As a result, you could not create a filter using any query that used those field names. To correct this issue, wrappers to parse these pseudo-fields were implemented and now filters correctly parse the input.

  • ENTMQBR-2100 - AMQ 7.2.1: under heavy load: org.apache.activemq.artemis.core.paging.cursor.NonExistentPage: Invalid messageNumber passed

    While a receiving transaction is committed to a paging operation, if the page is complete, a transaction operation deletes it. Previously, the transaction operation might delete the page before the receiving transaction could access it. This caused the receiving transaction to fail to find a message. In this case, you saw an exception. This issue is now resolved.

  • ENTMQBR-2117 - [AMQ7,Hawtio] Unable to delete queue with single quote from Hawtio console

    In prior releases, if you used the Hawtio console to delete a message containing a single quote, the broker did not successfully delete the message. This issue is now corrected.

  • ENTMQBR-2147 - (7.2.z) Backup doesn’t activate after shared store is reconnected

    Previously, if you had a live-backup broker pair configured for high availability using shared store, activation of the backup broker upon shutdown of the live broker could fail. Specifically, this situation occurred if the shared store had previously been disconnected and reconnected, before shutdown of the live broker. This issue is now resolved.

  • ENTMQBR-2177 - Allow deleting temporary destination when originating session is closed

    Previously, if you used the JMS API to delete a temporary destination when the originating session was already closed, the operation seemed to be successful, when it was not. This issue is now corrected.

  • ENTMQBR-2325 - JMSBridge fails to stop after throwing an error

    Previously, a JMS bridge between JBoss EAP and a broker not using Artemis Core Protocol produced an exception while stopping if the broker was already stopped. As a result of this exception, neither the EAP server nor the JMS bridge could successfully stop. This issue is now resolved.

  • ENTMQBR-2326 - JMSBridge fails to stop

    Previously, a JMS bridge between JBoss EAP and a broker not using Artemis Core Protocol produced an exception while stopping. As a result of this exception, neither the EAP server nor the JMS bridge could successfully stop. This issue is now resolved.

  • ENTMQBR-2333 - Temporary Queue Address Leak In Clustered Configuration

    Previously, if a temporary queue was replicated across cluster nodes, closing connections to the temporary queue on a given node did not purge the server resources associated with the queue. In other words, the queue had an address leak. This issue is resolved. You can now use the address-queue-scan-period parameter to specify how often the broker scans queues for potential deletion.

  • ENTMQBR-2337 - Failover or similar option for AMQ Core Protocol JMS Client

    In prior releases, an AMQ Core Protocol JMS Client could make repeated attempts to connect to an unavailable broker server, even if alternative broker servers were specified in the client’s ConnectionFactory configuration. Specifically, this situation occurred if you set the initialConnectAttempts option to -1. This type of configuration is shown in the example below.

    connectionFactory.ConnectionFactory=(tcp://host1:61616,tcp://host2:61716)?initialConnectAttempts=-1

    This issue is now resolved. If the first listed server that the client tries is unavailable, the client immediately tries the next, and so on. The client repeats this loop until it establishes a broker connection.

  • ENTMQBR-2386 - Slow consumers not disconnected if producer msg/s rate is low

    Previously, when checking for slow consumers, the broker calculated only messages that a producer added during the check period. The broker did not take into account existing messages in the queue at the start of the check period. This could cause the broker to miss legitimate cases of slow message consumption. This situation could arise, for example, if a producer previously sent large numbers of messages to the queue in bursts, but was idle during the slow consumer check period.

  • ENTMQBR-2464 - Qpid JMS client throws incorrect exception when sending message to activemq.management

    In prior releases, when you used the AMQP Qpid JMS client to send a message to the internal queue activemq.management, you saw an exception. This issue is now resolved.

  • ENTMQBR-2467 - [AMQ7, large header] message with very large header shuts broker down with "AMQ222010: Critical IO Error, shutting down the server.."

    In prior releases, if a client sent a message with a header larger than the value of the journal-buffer-size parameter, you saw an exception that caused the broker to shut down. This issue is resolved. The broker now rejects messages with a header larger than the value of the journal-buffer-size parameter.

  • ENTMQBR-2468 - java.lang.NullPointerException with message replication

    When the values of the config-delete-addresses and config-delete-queues parameters of your broker configuration are set to force, the broker reloads the broker.xml configuration file after a change. When the broker reloads the configuration, any auto-created, clustered queues are deleted. In prior releases, this deletion caused a failure that prevented the broker from starting. This issue is now resolved. For any queues that are deleted, the broker catches an exception and logs a warning, but starts as expected.

  • ENTMQBR-2476 - Live server does not shutdown when using vote-on-replication-failure

    Previously, in a cluster of three or more live-backup groups that was using the replication high availability (HA) policy, the live broker might not shut down when its replication connection failed. Specifically, this issue occurred when all of the following were true:

    • The vote-on-replication-failure parameter in the HA policy configuration was set to true
    • The live broker failed to receive a majority vote during quorum voting
    • The backup broker became live before quorum voting took place

    This issue is now resolved.

  • ENTMQBR-2498 - Message Grouping may have messages stuck if a consumer is busy during the delivery

    Previously, if you used message grouping, a message might not be delivered if the consumer was busy. In these cases, messages remained stuck on the queue until the broker was restarted. This issue is now resolved.

  • ENTMQBR-2526 - Clustering does not move messages to another node, when there is a divert

    Previously, in a broker cluster configured with diverts, messages were not successfully redistributed from an anycast queue on one broker to an anycast queue with active consumers at the same address on another broker. Instead, messages were dropped. This issue is now resolved.

  • ENTMQBR-2528 - MQTT Consumer gets java.io.EOFException when subscribed with QOS 2 for an address with custom security settings

    Previously, an MQTT consumer saw an exception when subscribed with quality of service (QoS) level 2 to an address with custom security settings. This issue is now resolved.

  • ENTMQBR-2575 - [AMQ 7.3.0] HawtIo - Can’t send Message with Headers

    Previously, you could not use the Hawtio console to send messages with headers. This issue is now resolved.

  • ENTMQBR-2579 - Masked password does not work in LDAP security-setting-plugin

    In prior releases, if you used the artemis mask command to encrypt a password for inclusion in the LDAP <security-setting-plugin> configuration, the encrypted password did not work, even if the mask-password attribute in your broker.xml configuration file was set to true. As a result of this issue, you saw an LDAP authentication error. This issue is now resolved.

  • ENTMQBR-2601 - Statically created addresses may be auto-deleted

    Previously, the reaper thread, which deletes auto-created queues, could also delete queues that you statically defined in the broker.xml configuration file. This issue is now resolved. The reaper thread deletes only auto-created queues.

  • ENTMQBR-2675 - Attribute group-name ignored in replicated colocated configurations

    Previously, if you configured a cluster of three master-slave broker pairs to use high availability with colocated backups, the value of the group-name attribute of each broker was ignored. As a result, when you started brokers in a new cluster configured this way, the first two master-slave pairs that you started immediately began replicating to each other, while the final master-slave pair that you started did not get a replication partner. The final master-slave pair then polled the cluster indefinitely, looking for a partner. This issue is now resolved.

  • ENTMQBR-2707 - Transaction rollback ordering is broken with AMQP

    Previously, when rolling back AMQP transactional message data, the broker might fail to preserve the message order. This issue is now resolved.

  • ENTMQBR-2733 - JDBC HA shared store does not take credentials from the jdbc-user and jdbc-password tags

    Previously, when you configured shared store high availability using JDBC persistence, the broker did not read the jdbc-user and jdbc-password values that you specified in the database-store configuration. To work around this issue, you could include the credentials directly in the jdbc-Connection-URL element. However, when specified in this way, the credentials were not encrypted. This issue is now resolved. The broker reads the encrypted values that you specify for jdbc-user and jdbc-password.

  • ENTMQBR-2876 - OpenWire Consumers are Not Cleaned up When the Session is Closed but Connection Remains Open

    Previously, if an OpenWire client closed a session without closing associated consumers, the consumers were not cleaned up by the broker. Even if the client exited, an OpenWireConnection object remained on the broker, with a potentially large collection in OpenWireConnection.consumerExchanges. Over time, this situation exhausted the broker heap space and the broker entered an out-of-memory (OOM) state. This issue is now resolved.

For information about issues resolved in maintenance releases, see the following articles: