diff --git a/source/dnode/vnode/src/tsdb/tsdbRead2.c b/source/dnode/vnode/src/tsdb/tsdbRead2.c index 0e7607425d..3833e3db79 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead2.c @@ -723,6 +723,7 @@ static int32_t loadFileBlockBrinInfo(STsdbReader* pReader, SArray* pIndexList, S while (1) { int32_t code = getNextBrinRecord(&iter, &pRecord); if (code != TSDB_CODE_SUCCESS) { + clearBrinBlockIter(&iter); return code; } @@ -757,12 +758,14 @@ static int32_t loadFileBlockBrinInfo(STsdbReader* pReader, SArray* pIndexList, S if (!(pRecord->suid == pReader->info.suid && uid == pRecord->uid)) { tsdbError("tsdb failed at: %s:%d", __func__, __LINE__); + clearBrinBlockIter(&iter); return TSDB_CODE_INTERNAL_ERROR; } STableBlockScanInfo* pScanInfo = NULL; code = getTableBlockScanInfo(pReader->status.pTableMap, uid, &pScanInfo, pReader->idStr); if (code != TSDB_CODE_SUCCESS) { + clearBrinBlockIter(&iter); return code; } @@ -807,6 +810,7 @@ static int32_t loadFileBlockBrinInfo(STsdbReader* pReader, SArray* pIndexList, S if (pScanInfo->pBlockList == NULL) { pScanInfo->pBlockList = taosArrayInit(4, sizeof(SFileDataBlockInfo)); if (pScanInfo->pBlockList == NULL) { + clearBrinBlockIter(&iter); return TSDB_CODE_OUT_OF_MEMORY; } } @@ -814,6 +818,7 @@ static int32_t loadFileBlockBrinInfo(STsdbReader* pReader, SArray* pIndexList, S if (pScanInfo->pBlockIdxList == NULL) { pScanInfo->pBlockIdxList = taosArrayInit(4, sizeof(STableDataBlockIdx)); if (pScanInfo->pBlockIdxList == NULL) { + clearBrinBlockIter(&iter); return TSDB_CODE_OUT_OF_MEMORY; } } @@ -822,6 +827,7 @@ static int32_t loadFileBlockBrinInfo(STsdbReader* pReader, SArray* pIndexList, S recordToBlockInfo(&blockInfo, pRecord); void* p1 = taosArrayPush(pScanInfo->pBlockList, &blockInfo); if (p1 == NULL) { + clearBrinBlockIter(&iter); return TSDB_CODE_OUT_OF_MEMORY; } @@ -840,6 +846,7 @@ static int32_t loadFileBlockBrinInfo(STsdbReader* pReader, SArray* pIndexList, S } else { STableBlockScanInfo** p = taosArrayGetLast(pTableScanInfoList); if (p == NULL) { + clearBrinBlockIter(&iter); return TSDB_CODE_INVALID_PARA; } @@ -849,6 +856,7 @@ static int32_t loadFileBlockBrinInfo(STsdbReader* pReader, SArray* pIndexList, S } if (p1 == NULL) { + clearBrinBlockIter(&iter); return TSDB_CODE_OUT_OF_MEMORY; } }