cshannon commented on code in PR #1484:
URL: https://github.com/apache/activemq/pull/1484#discussion_r2717182229


##########
activemq-broker/src/main/java/org/apache/activemq/broker/region/BaseDestination.java:
##########
@@ -311,12 +313,27 @@ public final MessageStore getMessageStore() {
 
     @Override
     public boolean isActive() {
-        boolean isActive = destinationStatistics.getConsumers().getCount() > 0 
||
-                           destinationStatistics.getProducers().getCount() > 0;
-        if (isActive && isGcWithNetworkConsumers() && 
destinationStatistics.getConsumers().getCount() > 0) {
-            isActive = hasRegularConsumers(getConsumers());
+        if (destinationStatistics.getProducers().getCount() > 0) {
+            return true;
         }
-        return isActive;
+
+        var destinationActive = true;
+        if (destinationStatistics.getConsumers().getCount() > 0) {
+            Predicate<Subscription> isActiveConsumer = subscription -> {

Review Comment:
   ```java
   @Override
   public boolean isActive() {
       // if we have producers then we are active
       if (destinationStatistics.getProducers().getCount() > 0) {
           return true;
       }
   
       // Check if we have active consumers that should prevent GC
       if (destinationStatistics.getConsumers().getCount() > 0) {
           // if we have consumers and both gcWithNetwork and gcOnlyWildcard 
consumers
           // are false we can just return true, otherwise we need to check 
each consumer
           return (!isGcWithNetworkConsumers() && 
!isGcWithOnlyWildcardConsumers()) ||
                   hasActiveConsumers();
       }
       
       return false;
   }
   
   protected Predicate<Subscription> canGcConsumer = subscription -> {
       // if isGcWithNetworkConsumers() is true and this is a network 
subscription then we can GC
       boolean canGcNetwork = isGcWithNetworkConsumers() && 
subscription.getConsumerInfo().isNetworkSubscription();
       // if isGcWithOnlyWildcardConsumers() is true and this is a wildcard 
then we can GC
       return canGcNetwork || (isGcWithOnlyWildcardConsumers() && 
subscription.isWildcard());
   };
   
   protected boolean hasActiveConsumers() {
       final List<Subscription> consumers = getConsumers();
       for (Subscription subscription: consumers) {
           if (!canGcConsumer.test(subscription)) {
               return true;
           }
       }
       return false;
   }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to