From c408e81e71721314cbf41fe4b554960c455d3141 Mon Sep 17 00:00:00 2001 From: dongxu Date: Tue, 24 Nov 2015 19:08:39 +0800 Subject: [PATCH 1/3] kv: add retryable err kv store returns ErrRetryable to tell SQL layer it's safe to retry --- kv/iter.go | 3 +++ kv/txn.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/kv/iter.go b/kv/iter.go index 226565b778..43eef1b558 100644 --- a/kv/iter.go +++ b/kv/iter.go @@ -31,6 +31,9 @@ var ( ErrLockConflict = errors.New("Error: Lock conflict") // ErrLazyConditionPairsNotMatch is used when value in store differs from expect pairs. ErrLazyConditionPairsNotMatch = errors.New("Error: Lazy condition pairs not match") + // ErrRetryable is used when KV store occurs RPC error or some other + // error which can be safely retry + ErrRetryable = errors.New("Error: KV error safe to retry") ) var ( diff --git a/kv/txn.go b/kv/txn.go index 3a0a972522..e2bf6f704e 100644 --- a/kv/txn.go +++ b/kv/txn.go @@ -25,7 +25,7 @@ func IsRetryableError(err error) bool { return false } - if terror.ErrorEqual(err, ErrLockConflict) || terror.ErrorEqual(err, ErrConditionNotMatch) { + if terror.ErrorEqual(err, ErrRetryable) { return true } From 36f100ece4beb7d7f3d1adf9c828469f5daff501 Mon Sep 17 00:00:00 2001 From: dongxu Date: Tue, 24 Nov 2015 19:14:08 +0800 Subject: [PATCH 2/3] *: address review comments --- kv/iter.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kv/iter.go b/kv/iter.go index 43eef1b558..9ae6c6a7a5 100644 --- a/kv/iter.go +++ b/kv/iter.go @@ -32,7 +32,7 @@ var ( // ErrLazyConditionPairsNotMatch is used when value in store differs from expect pairs. ErrLazyConditionPairsNotMatch = errors.New("Error: Lazy condition pairs not match") // ErrRetryable is used when KV store occurs RPC error or some other - // error which can be safely retry + // errors which SQL layer can safely retry. ErrRetryable = errors.New("Error: KV error safe to retry") ) From cd3d3cd6aeb53ba91d5b5861bcd0100a358c0e38 Mon Sep 17 00:00:00 2001 From: dongxu Date: Tue, 24 Nov 2015 19:18:53 +0800 Subject: [PATCH 3/3] kv: address comments --- kv/txn.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/kv/txn.go b/kv/txn.go index e2bf6f704e..4e83a5b08a 100644 --- a/kv/txn.go +++ b/kv/txn.go @@ -25,7 +25,9 @@ func IsRetryableError(err error) bool { return false } - if terror.ErrorEqual(err, ErrRetryable) { + if terror.ErrorEqual(err, ErrRetryable) || + terror.ErrorEqual(err, ErrLockConflict) || + terror.ErrorEqual(err, ErrConditionNotMatch) { return true }