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

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_r123352906
  
    --- 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 --
    
    We want to allow auto creation of non durable still in our use case, but 
will be disabling creation of durable yes.


> 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