From 7fd7902dda4c5b1b1e07d8bbb5437f33adb5b365 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Mon, 25 Sep 2023 18:38:55 +0800 Subject: [PATCH] fix(cos): use EIO as failed code --- source/dnode/vnode/src/tsdb/tsdbCache.c | 7 +++++-- source/dnode/vnode/src/tsdb/tsdbReaderWriter.c | 3 +++ source/dnode/vnode/src/vnd/vnodeCos.c | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 38fbf42915..d1cb3e2005 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -3061,7 +3061,7 @@ static int32_t tsdbCacheLoadBlockS3(STsdbFD *pFD, uint8_t **ppBlock) { code = s3GetObjectBlock(pFD->objName, block_offset, tsS3BlockSize * pFD->szPage, ppBlock); if (code != TSDB_CODE_SUCCESS) { // taosMemoryFree(pBlock); - code = TSDB_CODE_OUT_OF_MEMORY; + // code = TSDB_CODE_OUT_OF_MEMORY; return code; } @@ -3100,7 +3100,10 @@ int32_t tsdbCacheGetBlockS3(SLRUCache *pCache, STsdbFD *pFD, LRUHandle **handle) taosThreadMutexUnlock(&pTsdb->bMutex); *handle = NULL; - return 0; + if (!pBlock) { + code = TSDB_CODE_OUT_OF_MEMORY; + } + return code; } size_t charge = tsS3BlockSize * pFD->szPage; diff --git a/source/dnode/vnode/src/tsdb/tsdbReaderWriter.c b/source/dnode/vnode/src/tsdb/tsdbReaderWriter.c index c143bb8a72..4a37ff3ad2 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReaderWriter.c +++ b/source/dnode/vnode/src/tsdb/tsdbReaderWriter.c @@ -175,6 +175,9 @@ static int32_t tsdbReadFilePage(STsdbFD *pFD, int64_t pgno) { int32_t code = tsdbCacheGetBlockS3(pFD->pTsdb->bCache, pFD, &handle); if (code != TSDB_CODE_SUCCESS || handle == NULL) { tsdbBCacheRelease(pFD->pTsdb->bCache, handle); + if (!handle) { + code = TSDB_CODE_OUT_OF_MEMORY; + } goto _exit; } diff --git a/source/dnode/vnode/src/vnd/vnodeCos.c b/source/dnode/vnode/src/vnd/vnodeCos.c index e6c3b87e94..15ecff250d 100644 --- a/source/dnode/vnode/src/vnd/vnodeCos.c +++ b/source/dnode/vnode/src/vnd/vnodeCos.c @@ -301,14 +301,14 @@ int32_t s3GetObjectBlock(const char *object_name, int64_t offset, int64_t block_ apr_table_add(headers, COS_RANGE, range_buf); s = cos_get_object_to_buffer(options, &bucket, &object, headers, NULL, &download_buffer, &resp_headers); + log_status(s); if (!cos_status_is_ok(s)) { vError("s3: %s", s->error_msg); vError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(terrno)); - code = terrno; + code = TAOS_SYSTEM_ERROR(EIO); return code; } - log_status(s); // print_headers(resp_headers); int64_t len = 0; int64_t size = 0;