From 9947d8ec42af3d6e55d1b21bdafa769b28e7a133 Mon Sep 17 00:00:00 2001 From: Shungang Li Date: Fri, 24 May 2024 12:57:49 +0800 Subject: [PATCH] fix: last cache memory leak --- source/dnode/vnode/src/tsdb/tsdbCache.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index d0c753d280..42df7f111e 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -588,6 +588,13 @@ static void tsdbCacheDeleter(const void *key, size_t klen, void *value, void *ud tsdbCachePutBatch(pLastCol, key, klen, (SCacheFlushState *)ud); } + for (uint8_t i = 0; i < pLastCol->rowKey.numOfPKs; ++i) { + SValue *pValue = &pLastCol->rowKey.pks[i]; + if (IS_VAR_DATA_TYPE(pValue->type)) { + taosMemoryFree(pValue->pData); + } + } + if (IS_VAR_DATA_TYPE(pLastCol->colVal.value.type) /* && pLastCol->colVal.value.nData > 0*/) { taosMemoryFree(pLastCol->colVal.value.pData); } @@ -1072,6 +1079,8 @@ static int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SArray SLastCol *PToFree = pLastCol; if (IS_LAST_KEY(idxKey->key) && !COL_VAL_IS_VALUE(pColVal)) { + taosMemoryFreeClear(PToFree); + rocksdb_free(values_list[i]); continue; }