[ 
https://issues.apache.org/jira/browse/ARTEMIS-1235?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16058027#comment-16058027
 ] 

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_r123337550
  
    --- 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 --
    
    Maybe we can add NO_QUEUES where it only deletes the address if all queues 
are deleted (e.g. it doesn't try delete the queues, it relies on logic before 
hand to remove the configured ones, and relies on consumers and other logic to 
remove auto gen'd.


> 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