From 8040af47431a340ceb61308d36e1a7f1b56fb129 Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Tue, 19 Jan 2021 17:00:50 +0800 Subject: [PATCH] add macro SF_IS_SERVER_RETRIABLE_ERROR --- src/idempotency/client/rpc_wrapper.h | 2 +- src/sf_define.h | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/idempotency/client/rpc_wrapper.h b/src/idempotency/client/rpc_wrapper.h index d1a3cc1..1bf8c63 100644 --- a/src/idempotency/client/rpc_wrapper.h +++ b/src/idempotency/client/rpc_wrapper.h @@ -117,7 +117,7 @@ continue; \ } \ \ - if (idempotency_enabled) { \ + if (idempotency_enabled && !SF_IS_SERVER_RETRIABLE_ERROR(result)) { \ idempotency_client_channel_push( \ connection_params->channel, req_id); \ } \ diff --git a/src/sf_define.h b/src/sf_define.h index bac72fe..682c6f2 100644 --- a/src/sf_define.h +++ b/src/sf_define.h @@ -63,6 +63,10 @@ #define SF_FORCE_CLOSE_CONNECTION_ERROR_MIN SF_RETRIABLE_ERROR_NOT_MASTER #define SF_FORCE_CLOSE_CONNECTION_ERROR_MAX SF_RETRIABLE_ERROR_MAX +#define SF_IS_SERVER_RETRIABLE_ERROR(code) \ + ((code >= SF_RETRIABLE_ERROR_MIN && code <= SF_RETRIABLE_ERROR_MAX) || \ + (code == EAGAIN)) + #define SF_IS_RETRIABLE_ERROR(code) \ ((code >= SF_RETRIABLE_ERROR_MIN && code <= SF_RETRIABLE_ERROR_MAX) || \ (code == EAGAIN) || is_network_error(code))