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

ASF GitHub Bot commented on ARTEMIS-1856:
-----------------------------------------

Github user jbertram commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/2388#discussion_r227609075
  
    --- Diff: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java
 ---
    @@ -1540,6 +1561,75 @@ public void run() {
           }
        }
     
    +   private final class AddressQueueReaper extends 
ActiveMQScheduledComponent {
    +
    +      AddressQueueReaper(ScheduledExecutorService scheduledExecutorService,
    +                         Executor executor,
    +                         long checkPeriod,
    +                         TimeUnit timeUnit,
    +                         boolean onDemand) {
    +         super(scheduledExecutorService, executor, checkPeriod, timeUnit, 
onDemand);
    +      }
    +
    +      @Override
    +      public void run() {
    +         Map<SimpleString, Binding> nameMap = addressManager.getBindings();
    +
    +         List<Queue> queues = new ArrayList<>();
    +
    +         for (Binding binding : nameMap.values()) {
    +            if (binding.getType() == BindingType.LOCAL_QUEUE) {
    +               Queue queue = (Queue) binding.getBindable();
    +
    +               queues.add(queue);
    +            }
    +         }
    +
    +         for (Queue queue : queues) {
    +            int consumerCount = queue.getConsumerCount();
    +            long messageCount = queue.getMessageCount();
    +            boolean autoCreated = queue.isAutoCreated();
    +            long consumerRemovedTimestamp =  
queue.getConsumerRemovedTimestamp();
    +
    +            if (!queue.isInternalQueue() && autoCreated && messageCount == 
0 && consumerCount == 0 && consumerRemovedTimestamp != -1) {
    +               SimpleString queueName = queue.getName();
    +               AddressSettings settings = 
addressSettingsRepository.getMatch(queue.getAddress().toString());
    +               if (settings.isAutoDeleteQueues() && 
(System.currentTimeMillis() - consumerRemovedTimestamp >= 
settings.getAutoDeleteQueuesDelay())) {
    +                  if (ActiveMQServerLogger.LOGGER.isDebugEnabled()) {
    +                     ActiveMQServerLogger.LOGGER.info("deleting 
auto-created queue \"" + queueName + ".\" consumerCount = " + consumerCount + 
"; messageCount = " + messageCount + "; isAutoDeleteQueues = " + 
settings.isAutoDeleteQueues());
    +                  }
    +
    +                  try {
    +                     server.destroyQueue(queueName, null, true, false);
    --- End diff --
    
    @michaelandrepearce is right, but I think it's worth mitigating the risk 
within the bounds of the current locking scheme. What I don't want to do is 
introduce additional locking or synchronization.


> Add support for delays before deleting addresses and queues
> -----------------------------------------------------------
>
>                 Key: ARTEMIS-1856
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1856
>             Project: ActiveMQ Artemis
>          Issue Type: New Feature
>            Reporter: Lionel Cons
>            Priority: Major
>
> By default, Artemis deletes inactive addresses and empty queues. This is good 
> to minimize the resources used.
> However, this is problematic for monitoring because counters (like the 
> numbers of received and sent messages) are attached to these objects that get 
> deleted. So a monitoring tool periodically probing the broker may miss these 
> objects that get immediately deleted.
> It would be good to add support for delays. An object would not be 
> immediately deleted but would stay in the broker for a configurable period of 
> time, so that monitoring tools get a chance to get its counters.
> Note that this feature (delayed deletion) already exists in ActiveMQ 5. See 
> the {{gcInactiveDestinations}}, {{schedulePeriodForDestinationPurge}} and 
> {{inactiveTimoutBeforeGC}} parameters in 
> http://activemq.apache.org/delete-inactive-destinations.html.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to