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 totrue
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 referralsPreviously, 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
throwsjava.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 whendeliveringCount
> 0In 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 operationlistDeliveringMessages()
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 aAMQ119200
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 clientPreviously, 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 dispatchingObjectMessage
that was handled as a Large MessagePreviously, 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 themin-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
producerEarlier 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-contextIn 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 operationsIn 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 theWARN
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 logWhen 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 properERROR
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 toOFF.
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 toOFF.
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
orAMQGroupID
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 theinitialConnectAttempts
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 thejournal-buffer-size
parameter.
ENTMQBR-2468 - java.lang.NullPointerException with message replication
When the values of the
config-delete-addresses
andconfig-delete-queues
parameters of your broker configuration are set toforce
, the broker reloads thebroker.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 totrue
- 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.
-
The
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 themask-password
attribute in yourbroker.xml
configuration file was set totrue
. 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
andjdbc-password
values that you specified in thedatabase-store
configuration. To work around this issue, you could include the credentials directly in thejdbc-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 forjdbc-user
andjdbc-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 inOpenWireConnection.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: