You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/05/23 11:37:04 UTC

[jira] [Commented] (KAFKA-5260) Producer should not send AbortTxn unless transaction has actually begun

    [ https://issues.apache.org/jira/browse/KAFKA-5260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16021075#comment-16021075 ] 

ASF GitHub Bot commented on KAFKA-5260:
---------------------------------------

GitHub user dguy opened a pull request:

    https://github.com/apache/kafka/pull/3126

    KAFKA-5260: Producer should not send AbortTxn unless transaction has actually begun

    Keep track of when a transaction has begun by setting a flag, `transactionStarted` when a successfull `AddPartitionsToTxnResponse` or `AddOffsetsToTxnResponse` had been received. If an `AbortTxnRequest` about to be sent and `transactionStarted` is false, don't send the request and transition the state to `READY`

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/dguy/kafka kafka-5260

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/kafka/pull/3126.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #3126
    
----
commit e8e86e764ddc24d193bcaf0c2ba440a92d0a2534
Author: Damian Guy <da...@gmail.com>
Date:   2017-05-23T11:33:23Z

    don't send AbortTxn unless a transaction is Ongoing

----


> Producer should not send AbortTxn unless transaction has actually begun
> -----------------------------------------------------------------------
>
>                 Key: KAFKA-5260
>                 URL: https://issues.apache.org/jira/browse/KAFKA-5260
>             Project: Kafka
>          Issue Type: Sub-task
>          Components: clients, core, producer 
>            Reporter: Jason Gustafson
>            Assignee: Damian Guy
>            Priority: Blocker
>              Labels: exactly-once
>             Fix For: 0.11.0.0
>
>
> When there is an authorization error in AddOffsets or AddPartitions, the producer will raise an authorization exception. When that happens, the user should abort the transaction. The problem is that in an authorization error, the coordinator will not have transitioned to a new state, so if it suddenly receives an AbortTxnRequest, that request will fail with an InvalidTxnState, which will be propagated to the error. The suggested solution is to keep track locally when we are certain that no transaction has been officially begun and to skip sending the AbortTxnRequest in that case.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)