From c9b2b1d50b828a7e829a8adb2386408b323845af Mon Sep 17 00:00:00 2001 From: Xiongqi Wesley Wu Date: Thu, 3 Dec 2020 14:03:04 -0800 Subject: [PATCH] [LI-HOTFIX] catch throwable instead of exception from user callback on completeFutureAndFireCallbacks TICKET = KAFKA-10806 LI_DESCRIPTION = When kafka producer tries to complete/abort a batch, producer invokes user callback. However, "completeFutureAndFireCallbacks" only captures exceptions from user callback not all throwables. An uncaught throwable can prevent the batch from being freed. EXIT_CRITERIA = TICKET [KAFKA-10806] --- .../kafka/clients/producer/internals/ProducerBatch.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clients/src/main/java/org/apache/kafka/clients/producer/internals/ProducerBatch.java b/clients/src/main/java/org/apache/kafka/clients/producer/internals/ProducerBatch.java index 80372cbc7cfe1..b174bc547d7f5 100644 --- a/clients/src/main/java/org/apache/kafka/clients/producer/internals/ProducerBatch.java +++ b/clients/src/main/java/org/apache/kafka/clients/producer/internals/ProducerBatch.java @@ -229,8 +229,8 @@ private void completeFutureAndFireCallbacks(long baseOffset, long logAppendTime, if (thunk.callback != null) thunk.callback.onCompletion(null, exception); } - } catch (Exception e) { - log.error("Error executing user-provided callback on message for topic-partition '{}'", topicPartition, e); + } catch (Throwable t) { + log.error("Error executing user-provided callback on message for topic-partition '{}'", topicPartition, t); } }