Skip to content

Commit 52408e4

Browse files
committed
GH-1727: Close Producer if initTransactions Fails
Resolves #1727
1 parent 0cdd1d9 commit 52408e4

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

spring-kafka/src/main/java/org/springframework/kafka/core/DefaultKafkaProducerFactory.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2016-2020 the original author or authors.
2+
* Copyright 2016-2021 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -57,6 +57,7 @@
5757
import org.springframework.context.ApplicationListener;
5858
import org.springframework.context.event.ContextStoppedEvent;
5959
import org.springframework.core.log.LogAccessor;
60+
import org.springframework.kafka.KafkaException;
6061
import org.springframework.kafka.support.TransactionSupport;
6162
import org.springframework.lang.Nullable;
6263
import org.springframework.util.Assert;
@@ -508,7 +509,20 @@ private CloseSafeProducer<K, V> doCreateTxProducer(String prefix, String suffix,
508509
this.clientIdPrefix + "-" + this.clientIdCounter.incrementAndGet());
509510
}
510511
newProducer = createRawProducer(newProducerConfigs);
511-
newProducer.initTransactions();
512+
try {
513+
newProducer.initTransactions();
514+
}
515+
catch (RuntimeException ex) {
516+
try {
517+
newProducer.close(this.physicalCloseTimeout);
518+
}
519+
catch (RuntimeException ex2) {
520+
KafkaException newEx = new KafkaException("initTransactions() failed and then close() failed", ex);
521+
newEx.addSuppressed(ex2);
522+
throw newEx; // NOSONAR - lost stack trace
523+
}
524+
throw new KafkaException("initTransactions() failed", ex);
525+
}
512526
return new CloseSafeProducer<>(newProducer, getCache(prefix), remover,
513527
(String) newProducerConfigs.get(ProducerConfig.TRANSACTIONAL_ID_CONFIG), this.physicalCloseTimeout,
514528
this.epoch);

0 commit comments

Comments
 (0)