Jeff created KAFKA-15056:
----------------------------
Summary: Kafka producer still fails with
ClusterAuthorizationException after permission granted
Key: KAFKA-15056
URL: https://issues.apache.org/jira/browse/KAFKA-15056
Project: Kafka
Issue Type: Bug
Reporter: Jeff
Hi team, we are using kafka client 3.1.2 in the application, when initiating a
KafkaProducer without explicitly configuring idempotent write, it failed with
with ClusterAuthorizationException which is expected since idempotent write is
enabled by default. But after we granting the producer principal
IDEMPOTENT_WRITE permission, the producer still fails with same error until we
restarted the application and re-initiated the producer.
After checking the log and stacktrace, the code fails at this line
[https://github.com/apache/kafka/blame/3.1.2/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java#L1000]
and in turn throws exception at this line
[https://github.com/apache/kafka/blob/3.1.2/clients/src/main/java/org/apache/kafka/clients/producer/internals/TransactionManager.java#L1125]
It appears the acl check is not happening at runtime dynamically, considering
the 'currentState' was still not set to a correct value after permission
granted. Besides, do we omit the checking of
'transactionManager.isTransaction()' at this line on purpose in 3.1.2?
[https://github.com/apache/kafka/blob/3.1.0/clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java#LL988C70-L988C70]
This checking seemed to make sense since only transactional producer need
further call 'transactionManager.maybeAddPartitionToTransaction(tp);'?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)