[
https://issues.apache.org/jira/browse/ARTEMIS-1235?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16058000#comment-16058000
]
ASF GitHub Bot commented on ARTEMIS-1235:
-----------------------------------------
Github user michaelandrepearce commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1345#discussion_r123332025
--- Diff:
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
---
@@ -2313,6 +2318,53 @@ private void deploySecurityFromConfiguration() {
}
}
+ private void undeployAddressesAndQueueNotInConfiguration() throws
Exception {
+ undeployAddressesAndQueueNotInConfiguration(configuration);
+ }
+
+ private void undeployAddressesAndQueueNotInConfiguration(Configuration
configuration) throws Exception {
+ Set<String> addressesInConfig =
configuration.getAddressConfigurations().stream()
+
.map(CoreAddressConfiguration::getName)
+
.collect(Collectors.toSet());
+
+ Set<String> queuesInConfig =
configuration.getAddressConfigurations().stream()
+
.map(CoreAddressConfiguration::getQueueConfigurations)
+
.flatMap(List::stream).map(CoreQueueConfiguration::getName)
+
.collect(Collectors.toSet());
+
+ for (SimpleString addressName : listAddressNames()) {
+ AddressSettings addressSettings =
getAddressSettingsRepository().getMatch(addressName.toString());
+
+ if (!addressesInConfig.contains(addressName.toString()) &&
addressSettings.getConfigDeleteAddresses() == DeletionPolicy.FORCE) {
+ for (Queue queue : listQueues(addressName)) {
+ ActiveMQServerLogger.LOGGER.undeployQueue(queue.getName());
+ queue.deleteQueue(true);
+ }
+ ActiveMQServerLogger.LOGGER.undeployAddress(addressName);
+ removeAddressInfo(addressName, null);
+ } else if (addressSettings.getConfigDeleteQueues() ==
DeletionPolicy.FORCE) {
+ for (Queue queue : listConfiguredQueues(addressName)) {
+ if (!queuesInConfig.contains(queue.getName().toString())) {
--- End diff --
no not really.
In this case where we are saying this address is being managed by
config.xml we would need to ensure the address is removed and its queues else
we could still be in a situation with address's managed by config.xml still
existing.
Its not quite the same as the queue removal within an active address the
section above, where on queue creation / deletion within an address (but the
address remains) we validly leave alone auto created queues.
On address removal you're essentially saying this address is no longer
active and removing the end to end route.
> Support the ability to enable queue and address deletion when broker.xml
> changes
> --------------------------------------------------------------------------------
>
> Key: ARTEMIS-1235
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1235
> Project: ActiveMQ Artemis
> Issue Type: New Feature
> Reporter: Michael Andre Pearce
>
> Currently on config reload, as per:
> https://activemq.apache.org/artemis/docs/2.1.0/config-reload.html
> Once the configuration file is changed (broker.xml) the following modules
> will be reloaded automatically:
> Address Settings
> Security Settings
> Diverts
> Addresses & queues
> Notice: Address & queues won't be removed upon reload, given the risk of
> losing messages. You may execute explicit CLI or Management operations to
> remove destinations.
> Where an organisation uses tools like puppet or chef and need to fully change
> manage the broker they need an ability to delete queues and topics also via
> the config, as these tools control state of systems by config. Like wise in
> these scenario's where such tools are used to control state of a system
> typically an organisation will have controls and pre-prod environments where
> they push config through the environments as such risk of issue is removed re
> data loss / or accepted risk, as would have been pre-validated in
> non-ciritical non-prod envs.
> The default behaviour should be as is today (e.g. delete still doesn't
> occur), but an optional toggle so that queue's and address's are sync'd
> removed inline with the broker xml.
> Ideally it should be possible to toggle this ability by address pattern so if
> some address's you don't wish controlled this way and others you do, this
> should be possible.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)