[ 
https://issues.apache.org/jira/browse/KAFKA-20322?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ritika Reddy updated KAFKA-20322:
---------------------------------
    Description: 
This bug was introduced from 
[KIP-1228|https://cwiki.apache.org/confluence/display/KAFKA/KIP-1228%3A+Add+Transaction+Version+to+WriteTxnMarkersRequest]
 where a new WriteTxnMarker request version (v2) was introduced. However, the 
TransactionMarkerChannelManager still created its NetworkClient with 
discoverBrokerVersions=false, which disables API version negotiation with peer 
brokers. This causes the transaction coordinator to blindly send 
WriteTxnMarkersRequest at the latest supported version, which fails with 
UnsupportedVersionException when the target broker is running an older version 
that doesn't support that version. Transactions get permanently stuck in 
PrepareCommit or PrepareAbort during rolling upgrades.

*ROOT CAUSE:* TransactionMarkerChannelManager creates NetworkClient with 
discoverBrokerVersions=false, which disables API version discovery. Without 
version discovery, NetworkClient blindly uses the latest API version for all 
requests. Discovery should be set to true for compatibility.

*IMPACT:* When a 4.2 broker is the transaction coordinator and needs to write 
markers to a 4.1 or earlier broker (partition leader), it sends 
WriteTxnMarkersRequest v2, which the older broker doesn't support, causing 
UnsupportedVersionException.

*AFFECTED CODE:* origin/trunk: 
core/src/main/scala/kafka/coordinator/transaction/TransactionMarkerChannelManager.scala

[https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/coordinator/transaction/TransactionMarkerChannelManager.scala#L98|http://example.com/]

*SOLUTION:* Set version discovery flag to true in the Transaction Marker 
Channel Manager

 

  was:
This bug was introduced from 
[KIP-1228|[http://example.com|https://cwiki.apache.org/confluence/display/KAFKA/KIP-1228%3A+Add+Transaction+Version+to+WriteTxnMarkersRequest]]
 where a new WriteTxnMarker request version (v2) was introduced. However, the 
TransactionMarkerChannelManager still created its NetworkClient with 
discoverBrokerVersions=false, which disables API version negotiation with peer 
brokers. This causes the transaction coordinator to blindly send 
WriteTxnMarkersRequest at the latest supported version, which fails with 
UnsupportedVersionException when the target broker is running an older version 
that doesn't support that version. Transactions get permanently stuck in 
PrepareCommit or PrepareAbort during rolling upgrades.

*ROOT CAUSE:* TransactionMarkerChannelManager creates NetworkClient with 
discoverBrokerVersions=false, which disables API version discovery. Without 
version discovery, NetworkClient blindly uses the latest API version for all 
requests. Discovery should be set to true for compatibility.

*IMPACT:* When a 4.2 broker is the transaction coordinator and needs to write 
markers to a 4.1 or earlier broker (partition leader), it sends 
WriteTxnMarkersRequest v2, which the older broker doesn't support, causing 
UnsupportedVersionException.

*AFFECTED CODE:* origin/trunk: 
core/src/main/scala/kafka/coordinator/transaction/TransactionMarkerChannelManager.scala

[https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/coordinator/transaction/TransactionMarkerChannelManager.scala#L98|http://example.com/]

*SOLUTION:* Set version discovery flag to true in the Transaction Marker 
Channel Manager

 


> TransactionMarkerChannelManager has discoverBrokerVersions=false causing 
> UnsupportedVersionException during rolling upgrades
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-20322
>                 URL: https://issues.apache.org/jira/browse/KAFKA-20322
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 4.2.0
>            Reporter: Ritika Reddy
>            Assignee: Ritika Reddy
>            Priority: Major
>             Fix For: 4.2.1
>
>
> This bug was introduced from 
> [KIP-1228|https://cwiki.apache.org/confluence/display/KAFKA/KIP-1228%3A+Add+Transaction+Version+to+WriteTxnMarkersRequest]
>  where a new WriteTxnMarker request version (v2) was introduced. However, the 
> TransactionMarkerChannelManager still created its NetworkClient with 
> discoverBrokerVersions=false, which disables API version negotiation with 
> peer brokers. This causes the transaction coordinator to blindly send 
> WriteTxnMarkersRequest at the latest supported version, which fails with 
> UnsupportedVersionException when the target broker is running an older 
> version that doesn't support that version. Transactions get permanently stuck 
> in PrepareCommit or PrepareAbort during rolling upgrades.
> *ROOT CAUSE:* TransactionMarkerChannelManager creates NetworkClient with 
> discoverBrokerVersions=false, which disables API version discovery. Without 
> version discovery, NetworkClient blindly uses the latest API version for all 
> requests. Discovery should be set to true for compatibility.
> *IMPACT:* When a 4.2 broker is the transaction coordinator and needs to write 
> markers to a 4.1 or earlier broker (partition leader), it sends 
> WriteTxnMarkersRequest v2, which the older broker doesn't support, causing 
> UnsupportedVersionException.
> *AFFECTED CODE:* origin/trunk: 
> core/src/main/scala/kafka/coordinator/transaction/TransactionMarkerChannelManager.scala
> [https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/coordinator/transaction/TransactionMarkerChannelManager.scala#L98|http://example.com/]
> *SOLUTION:* Set version discovery flag to true in the Transaction Marker 
> Channel Manager
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to