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

rndgstn pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/3.3 by this push:
     new bffab974655 KAFKA-14887: FinalizedFeatureChangeListener should not 
shut down when ZK session expires
bffab974655 is described below

commit bffab974655b054620b49e8acd9d50e925073950
Author: Ron Dagostino <rndg...@gmail.com>
AuthorDate: Wed Apr 19 19:45:26 2023 -0400

    KAFKA-14887: FinalizedFeatureChangeListener should not shut down when ZK 
session expires
    
    FinalizedFeatureChangeListener shuts the broker down when it encounters an 
issue trying to process feature change
    events. However, it does not distinguish between issues related to feature 
changes actually failing and other
    exceptions like ZooKeeper session expiration. This introduces the 
possibility that Zookeeper session expiration
    could cause the broker to shutdown, which is not intended. This patch 
updates the code to distinguish between
    these two types of exceptions. In the case of something like a ZK session 
expiration it logs a warning and continues.
    We shutdown the broker only for FeatureCacheUpdateException.
    
    Reviewers: Kamal Chandraprakash <kamal.chandraprak...@gmail.com>, Christo 
Lolov <christolo...@gmail.com>, Colin P. McCabe <cmcc...@apache.org>
---
 .../scala/kafka/server/FinalizedFeatureChangeListener.scala    | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git 
a/core/src/main/scala/kafka/server/FinalizedFeatureChangeListener.scala 
b/core/src/main/scala/kafka/server/FinalizedFeatureChangeListener.scala
index 83e9c149284..b16b3c187ac 100644
--- a/core/src/main/scala/kafka/server/FinalizedFeatureChangeListener.scala
+++ b/core/src/main/scala/kafka/server/FinalizedFeatureChangeListener.scala
@@ -17,7 +17,7 @@
 
 package kafka.server
 
-import kafka.server.metadata.ZkMetadataCache
+import kafka.server.metadata.{FeatureCacheUpdateException, ZkMetadataCache}
 
 import java.util.concurrent.{CountDownLatch, LinkedBlockingQueue, TimeUnit}
 import kafka.utils.{Logging, ShutdownableThread}
@@ -156,10 +156,12 @@ class FinalizedFeatureChangeListener(private val 
finalizedFeatureCache: ZkMetada
           // safe to ignore the exception if the thread is being shutdown. We 
raise the exception
           // here again, because, it is ignored by ShutdownableThread if it is 
shutting down.
           throw ie
-        case e: Exception => {
-          error("Failed to process feature ZK node change event. The broker 
will eventually exit.", e)
+        case cacheUpdateException: FeatureCacheUpdateException =>
+          error("Failed to process feature ZK node change event. The broker 
will eventually exit.", cacheUpdateException)
           throw new FatalExitError(1)
-        }
+        case e: Exception =>
+          // do not exit for exceptions unrelated to cache change processing 
(e.g. ZK session expiration)
+          warn("Unexpected exception in feature ZK node change event 
processing; will continue processing.", e)
       }
     }
   }

Reply via email to