[ 
https://issues.apache.org/jira/browse/ARTEMIS-3307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Justin Bertram resolved ARTEMIS-3307.
-------------------------------------
    Resolution: Duplicate

> Addresses not cleaned up correctly in case of Wildcard Subscriptions
> --------------------------------------------------------------------
>
>                 Key: ARTEMIS-3307
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-3307
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: MQTT
>    Affects Versions: 2.16.0, 2.17.0
>         Environment: Broker:
>  * Artemis 2.16.0, single node (no cluster at the moment due to ARTEMIS-3223)
> Clients:
>  * mosquitto_sub 1.4.15
>  * PAHO Java MQTT3 Client
>  * HiveMQ Java MQTT3 Client
>  
>            Reporter: Andreas Hubert
>            Assignee: Justin Bertram
>            Priority: Major
>
> We use auto-created addresses (via address-settings) with auto-delete-address 
> and auto-delete-queue true (and the corresponding delays, ... set correctly). 
>  The problem occurs via MQTT when using durable subscriptions (MQTT clean 
> session false).
> Without wildcard subscriptions, queues and addresses will be deleted 
> according to the scan period and the corresponding delays.
> If there is a wildcard address that matches a concrete (aka non-wildcard) 
> address, the concrete address will not be deleted even if there is no queue 
> listening directly to that address. In the web-UI, the address will appear as 
> a leaf node and the wildcard queue will be shown in the "Binding names" and 
> "All queues" attributes.
> The test scenarios assume the following address-setting configuration:
> {code:java}
> <address-settings xmlns="urn:activemq:core">
>     <!-- ... -->
>     <address-setting match="test.*.xxx">
>         <default-purge-on-no-consumers>false</default-purge-on-no-consumers>
>         <auto-delete-addresses>true</auto-delete-addresses>
>         <auto-delete-addresses-delay>60000</auto-delete-addresses-delay>
>         <auto-delete-queues>true</auto-delete-queues>
>         <auto-delete-queues-delay>60000</auto-delete-queues-delay>
>         
> <auto-delete-queues-message-count>-1</auto-delete-queues-message-count>
>         <auto-delete-created-queues>true</auto-delete-created-queues>
>         <dead-letter-address>DLQ</dead-letter-address>
>         <expiry-address>ExpiryQueue</expiry-address>
>         <redelivery-delay>5000</redelivery-delay>
>         <redistribution-delay>30000</redistribution-delay>
>         <!-- with -1 only the global-max-size is in use for limiting -->
>         <max-size-bytes>-1</max-size-bytes>
>         
> <message-counter-history-day-limit>10</message-counter-history-day-limit>
>         <address-full-policy>PAGE</address-full-policy>
>         <auto-create-queues>true</auto-create-queues>
>         <auto-create-addresses>true</auto-create-addresses>
>         <auto-create-jms-queues>true</auto-create-jms-queues>
>         <auto-create-jms-topics>true</auto-create-jms-topics>
>     </address-setting>
>     <!-- ... -->
> </address-settings> {code}
> Test scenario (no wildcard):
>  * Connect to broker via MQTT with client-ID client1 and clean-session flag 
> false (aka using durable subscriptions)
>  * Subscribe to "test/1234/xxx"
>  * Disconnect the client
>  * Wait 3 minutes (to account for the delays and scan period)
>  * The queue client1-test.1234.xxx and the address test.1234.xxx have been 
> deleted (are no longer visible via JMX, web UI, metrics, ...)
>  
> Test scenario (with wildcard):
>  * Connect to broker via MQTT with client-ID client1 and clean-session flag 
> false (aka using durable subscriptions)
>  * client1: Subscribe to "test/1234/xxx"
>  * Connect to broker via MQTT with client-ID client2 and clean-session flag 
> false (aka using durable subscriptions)
>  * client2: Subscribe to "test/+/xxx"
>  * client1: Disconnect the client
>  * Wait 3 minutes (to account for the delays and scan period)
>  * The queue client1-test.1234.xxx (is no longer visible via JMX, web UI, 
> metrics, ...)
>  * The address test.1234.xxx still exists. In its "Binding names" and "All 
> queues" attributes it contains the queue client2-test.*.xxx
>  
> This behaviour can lead to a strong increase in unused addresses, which makes 
> the UI unresponsive and also increases memory usage of the broker (in 
> addition to potential decrease in performance in situations where all 
> addresses need to be scanned).
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to