Skip to content

Commit 13fe69f

Browse files
garyrussellartembilan
authored andcommitted
GH-881: Null check in closeProducers()
Fixes #881 `getAssignedPartitions()` can return `null`.
1 parent d0b2051 commit 13fe69f

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

spring-kafka/src/main/java/org/springframework/kafka/listener/KafkaMessageListenerContainer.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ public void setClientIdSuffix(String clientIdSuffix) {
187187
* either explicitly or by Kafka; may be null if not assigned yet.
188188
*/
189189
@Override
190+
@Nullable
190191
public Collection<TopicPartition> getAssignedPartitions() {
191192
ListenerConsumer listenerConsumer = this.listenerConsumer;
192193
if (listenerConsumer != null) {
@@ -1402,17 +1403,19 @@ public String toString() {
14021403
+ "]";
14031404
}
14041405

1405-
private void closeProducers(Collection<TopicPartition> partitions) {
1406-
ProducerFactory<?, ?> producerFactory = this.kafkaTxManager.getProducerFactory();
1407-
partitions.forEach(tp -> {
1408-
try {
1409-
producerFactory.closeProducerFor(zombieFenceTxIdSuffix(tp.topic(), tp.partition()));
1410-
}
1411-
catch (Exception e) {
1412-
this.logger.error("Failed to close producer with transaction id suffix: "
1413-
+ zombieFenceTxIdSuffix(tp.topic(), tp.partition()), e);
1414-
}
1415-
});
1406+
private void closeProducers(@Nullable Collection<TopicPartition> partitions) {
1407+
if (partitions != null) {
1408+
ProducerFactory<?, ?> producerFactory = this.kafkaTxManager.getProducerFactory();
1409+
partitions.forEach(tp -> {
1410+
try {
1411+
producerFactory.closeProducerFor(zombieFenceTxIdSuffix(tp.topic(), tp.partition()));
1412+
}
1413+
catch (Exception e) {
1414+
this.logger.error("Failed to close producer with transaction id suffix: "
1415+
+ zombieFenceTxIdSuffix(tp.topic(), tp.partition()), e);
1416+
}
1417+
});
1418+
}
14161419
}
14171420

14181421
private String zombieFenceTxIdSuffix(String topic, int partition) {

0 commit comments

Comments
 (0)