[ 
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)

Reply via email to