Skip to content

Pipelined DML may return a regular error when the commit result is undetermined #2062

Description

@gengliqi

commitFlushedMutations returns errors from commitMutations directly, without checking getUndeterminedErr(). The normal 2PC path checks this state and converts the error to ErrResultUndetermined.
If the primary commit response is lost and the request eventually fails, the transaction may already have committed. Although client-go records the undetermined state, pipelined DML can still return an ordinary cancellation or RPC error.
This may cause TiDB to skip its undetermined-result connection-close handling. Applications could treat the error as a normal failure and retry an already committed operation.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions