From fddc711730b8891131aa2d9a6975b02f0fdf23c8 Mon Sep 17 00:00:00 2001 From: darshimo Date: Thu, 16 Jan 2025 16:17:13 +0900 Subject: [PATCH] Fix batch listener error handling Updates the batch listener error handler code to handle the case where there is only a single outstanding message in the batch list when retries are expired. Fixes #998 Signed-off-by: darshimo --- .../DefaultPulsarMessageListenerContainer.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/spring-pulsar/src/main/java/org/springframework/pulsar/listener/DefaultPulsarMessageListenerContainer.java b/spring-pulsar/src/main/java/org/springframework/pulsar/listener/DefaultPulsarMessageListenerContainer.java index 5efa1e3a..0d071958 100644 --- a/spring-pulsar/src/main/java/org/springframework/pulsar/listener/DefaultPulsarMessageListenerContainer.java +++ b/spring-pulsar/src/main/java/org/springframework/pulsar/listener/DefaultPulsarMessageListenerContainer.java @@ -781,15 +781,8 @@ public class DefaultPulsarMessageListenerContainer extends AbstractPulsarMess this.pulsarConsumerErrorHandler.recoverMessage(this.consumer, pulsarMessage, pulsarBatchListenerFailedException); handleAck(pulsarMessage, txn); - if (messageList.size() == 1) { - messagesPendingInBatch.set(false); - } - else { - messageList = messageList.subList(1, messageList.size()); - } - if (!messageList.isEmpty()) { - messagesPendingInBatch.set(true); - } + messageList.remove(0); + messagesPendingInBatch.set(!messageList.isEmpty()); this.pulsarConsumerErrorHandler.clearMessage(); } return messageList;