Skip to content
Snippets Groups Projects
Unverified Commit bd18c9e6 authored by fagongzi's avatar fagongzi Committed by GitHub
Browse files

txn: check TxnError in response (#4664)

The response TxnMeta needs to be checked only if TxnError is not empty, otherwise the error message returned will be incorrect

Approved by: @reusee, @lni
parent 83eb08f8
No related branches found
No related tags found
No related merge requests found
......@@ -479,22 +479,22 @@ func (tc *txnOperator) handleError(result *rpc.SendResult, err error) (*rpc.Send
func (tc *txnOperator) handleErrorResponse(resp txn.TxnResponse) error {
switch resp.Method {
case txn.TxnMethod_Read:
if err := tc.checkResponseTxnStatusForReadWrite(resp.Txn); err != nil {
if err := tc.checkResponseTxnStatusForReadWrite(resp); err != nil {
return err
}
return tc.checkTxnError(resp.TxnError, readTxnErrors)
case txn.TxnMethod_Write:
if err := tc.checkResponseTxnStatusForReadWrite(resp.Txn); err != nil {
if err := tc.checkResponseTxnStatusForReadWrite(resp); err != nil {
return err
}
return tc.checkTxnError(resp.TxnError, writeTxnErrors)
case txn.TxnMethod_Commit:
if err := tc.checkResponseTxnStatusForCommit(resp.Txn); err != nil {
if err := tc.checkResponseTxnStatusForCommit(resp); err != nil {
return err
}
return tc.checkTxnError(resp.TxnError, commitTxnErrors)
case txn.TxnMethod_Rollback:
if err := tc.checkResponseTxnStatusForRollback(resp.Txn); err != nil {
if err := tc.checkResponseTxnStatusForRollback(resp); err != nil {
return err
}
return tc.checkTxnError(resp.TxnError, rollbackTxnErrors)
......@@ -505,7 +505,12 @@ func (tc *txnOperator) handleErrorResponse(resp txn.TxnResponse) error {
return nil
}
func (tc *txnOperator) checkResponseTxnStatusForReadWrite(txnMeta *txn.TxnMeta) error {
func (tc *txnOperator) checkResponseTxnStatusForReadWrite(resp txn.TxnResponse) error {
if resp.TxnError != nil {
return nil
}
txnMeta := resp.Txn
if txnMeta == nil {
return moerr.New(moerr.ErrTxnClosed)
}
......@@ -541,7 +546,12 @@ func (tc *txnOperator) checkTxnError(txnError *txn.TxnError, possibleErrorMap ma
return nil
}
func (tc *txnOperator) checkResponseTxnStatusForCommit(txnMeta *txn.TxnMeta) error {
func (tc *txnOperator) checkResponseTxnStatusForCommit(resp txn.TxnResponse) error {
if resp.TxnError != nil {
return nil
}
txnMeta := resp.Txn
if txnMeta == nil {
return moerr.New(moerr.ErrTxnClosed)
}
......@@ -556,7 +566,12 @@ func (tc *txnOperator) checkResponseTxnStatusForCommit(txnMeta *txn.TxnMeta) err
return nil
}
func (tc *txnOperator) checkResponseTxnStatusForRollback(txnMeta *txn.TxnMeta) error {
func (tc *txnOperator) checkResponseTxnStatusForRollback(resp txn.TxnResponse) error {
if resp.TxnError != nil {
return nil
}
txnMeta := resp.Txn
if txnMeta == nil {
return moerr.New(moerr.ErrTxnClosed)
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment