Merge pull request #26934 from taosdata/fix/TS-5244-3.0
common/cos: make 503 retry with 1~3s
This commit is contained in:
commit
3e5e8cfd01
|
@ -1178,6 +1178,13 @@ int32_t s3GetObjectBlock(const char *object_name, int64_t offset, int64_t size,
|
||||||
&getObjectDataCallback};
|
&getObjectDataCallback};
|
||||||
|
|
||||||
TS3SizeCBD cbd = {0};
|
TS3SizeCBD cbd = {0};
|
||||||
|
int retryCount = 0;
|
||||||
|
static int maxRetryCount = 5;
|
||||||
|
static int minRetryInterval = 1000; // ms
|
||||||
|
static int maxRetryInterval = 3000; // ms
|
||||||
|
|
||||||
|
_retry:
|
||||||
|
(void)memset(&cbd, 0, sizeof(cbd));
|
||||||
cbd.content_length = size;
|
cbd.content_length = size;
|
||||||
cbd.buf_pos = 0;
|
cbd.buf_pos = 0;
|
||||||
do {
|
do {
|
||||||
|
@ -1185,6 +1192,11 @@ int32_t s3GetObjectBlock(const char *object_name, int64_t offset, int64_t size,
|
||||||
} while (S3_status_is_retryable(cbd.status) && should_retry());
|
} while (S3_status_is_retryable(cbd.status) && should_retry());
|
||||||
|
|
||||||
if (cbd.status != S3StatusOK) {
|
if (cbd.status != S3StatusOK) {
|
||||||
|
if (S3StatusErrorSlowDown == cbd.status && retryCount++ < maxRetryCount) {
|
||||||
|
taosMsleep(taosRand() % (maxRetryInterval - minRetryInterval + 1) + minRetryInterval);
|
||||||
|
uInfo("%s: %d/%s(%s) retry get object", __func__, cbd.status, S3_get_status_name(cbd.status), cbd.err_msg);
|
||||||
|
goto _retry;
|
||||||
|
}
|
||||||
uError("%s: %d/%s(%s)", __func__, cbd.status, S3_get_status_name(cbd.status), cbd.err_msg);
|
uError("%s: %d/%s(%s)", __func__, cbd.status, S3_get_status_name(cbd.status), cbd.err_msg);
|
||||||
|
|
||||||
TAOS_RETURN(TAOS_SYSTEM_ERROR(EIO));
|
TAOS_RETURN(TAOS_SYSTEM_ERROR(EIO));
|
||||||
|
|
Loading…
Reference in New Issue