This is an automated email from the ASF dual-hosted git repository.

penghui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new f1986e9  [pulsar-broker] add info log when broker doesn't find 
disconnected-consumer in consumer-set (#7964)
f1986e9 is described below

commit f1986e9543d1e7ee7e40fe941fd0ba0dd85da83c
Author: Rajan Dhabalia <[email protected]>
AuthorDate: Wed Nov 4 04:33:16 2020 -0800

    [pulsar-broker] add info log when broker doesn't find disconnected-consumer 
in consumer-set (#7964)
    
    ### Motivation
    We have seen frequent instances where topic unloading stuck and we have to 
restart broker. Unloading topic gives 500 with below broker log
    ```
    01:26:19.691 [pulsar-web-35-6] INFO  
org.apache.pulsar.broker.admin.impl.PersistentTopicsBase - [admin] Unloading 
topic persistent://tenant/cluster/ns/topic-partition-15
    01:26:19.692 [pulsar-web-35-6] WARN  
org.apache.pulsar.broker.service.persistent.PersistentTopic - 
[persistent://tenant/cluster/ns/topic-partition-15] Topic is already being 
closed or deleted
    :
    01:26:19.692 [pulsar-web-35-6] ERROR 
org.apache.pulsar.broker.admin.impl.PersistentTopicsBase - [admin] Failed to 
unload topic persistent://tenant/cluster/ns/topic-partition-15, 
org.apache.pulsar.broker.service.BrokerServiceException$TopicFencedException: 
Topic is already fenced
    java.util.concurrent.ExecutionException: 
org.apache.pulsar.broker.service.BrokerServiceException$TopicFencedException: 
Topic is already fenced
            at 
java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395) 
~[?:?]
            at 
java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999) ~[?:?]
    ```
    
    It happens when first topic-unload stuck and unloading never completes.
    
    After investigating broker heap-dump, we found out that  
[PersistentDispatcherMultipleConsumers invoked consumer disconnect but it 
couldn't 
remove](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java#L183)
 from the cached 
[consumerSet](https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultiple
 [...]
    We can also validate it in log where we can see consumer disconnect log but 
can't see log after dispatcher removes the consumer from cache.
    ```
    01:24:20.024 [pulsar-web-35-31] INFO  
org.apache.pulsar.broker.service.Consumer - Disconnecting consumer: 
Consumer{subscription=PersistentSubscription{topic=persistent://
    tenant/bf1/ns/topic-partition-15, name=sub1}, consumerId=15, 
consumerName=a36e0, address=/1.1.1.1:42808}
    01:24:20.024 [pulsar-web-35-31] INFO  
org.apache.pulsar.broker.service.Consumer - Disconnecting consumer: 
Consumer{subscription=PersistentSubscription{topic=persistent://
    tenant/bf1/ns/topic-partition-15, name=sub2}...
    ```
    
    Therefore, we are adding info log for future investigation if Dispatcher 
doesn't find consumer in set which should never happen.
---
 .../service/persistent/PersistentDispatcherMultipleConsumers.java     | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java
index 7fb9ac7..2724485 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java
@@ -216,9 +216,7 @@ public class PersistentDispatcherMultipleConsumers extends 
AbstractDispatcherMul
                 readMoreEntries();
             }
         } else {
-            if (log.isDebugEnabled()) {
-                log.debug("[{}] Trying to remove a non-connected consumer: 
{}", name, consumer);
-            }
+            log.info("[{}] Trying to remove a non-connected consumer: {}", 
name, consumer);
         }
     }
 

Reply via email to