From 111481cef94589e1dca804d08828b0813bb94cd6 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Tue, 1 Aug 2023 08:09:10 +0000 Subject: [PATCH 1/5] fix state mem leak --- source/libs/stream/src/streamBackendRocksdb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index 8534f3b0a1..f6161a4767 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -1625,9 +1625,11 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey* if (pVLen != NULL) *pVLen = len; if (pKTmp->opNum != pCur->number) { + taosMemoryFree(val); return -1; } if (pKey->groupId != 0 && pKey->groupId != pKTmp->key.groupId) { + taosMemoryFree(val); return -1; } *pKey = pKTmp->key; From 83468a77107b9560849683b8e3989295950882b5 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Wed, 2 Aug 2023 03:18:59 +0000 Subject: [PATCH 2/5] fix state mem leak --- source/libs/stream/src/streamBackendRocksdb.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index f6161a4767..5e08f566d6 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -1632,6 +1632,12 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey* taosMemoryFree(val); return -1; } + + if (pVal != NULL) { + *pVal = (char*)val; + } else { + taosMemoryFree(val); + } *pKey = pKTmp->key; return 0; } From d9fd95777a430b92a0a12322b7faad20527c9607 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Wed, 2 Aug 2023 03:21:39 +0000 Subject: [PATCH 3/5] fix state mem leak --- source/libs/stream/src/streamBackendRocksdb.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index 5e08f566d6..16fe7341a6 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -1617,12 +1617,6 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey* if (len < 0) { return -1; } - if (pVal != NULL) { - *pVal = (char*)val; - } else { - taosMemoryFree(val); - } - if (pVLen != NULL) *pVLen = len; if (pKTmp->opNum != pCur->number) { taosMemoryFree(val); @@ -1638,6 +1632,8 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey* } else { taosMemoryFree(val); } + + if (pVLen != NULL) *pVLen = len; *pKey = pKTmp->key; return 0; } From 6cdf94fec054d3779ee5c8479c4fa250398bd191 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Wed, 2 Aug 2023 03:29:13 +0000 Subject: [PATCH 4/5] fix state mem leak --- source/libs/stream/src/streamBackendRocksdb.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index 16fe7341a6..d84a09ab20 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -1617,6 +1617,8 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey* if (len < 0) { return -1; } + if (pVal != NULL) *pVal = NULL; + if (pVLen != NULL) *pVLen = 0; if (pKTmp->opNum != pCur->number) { taosMemoryFree(val); From 918eca4d22407b070804451030642348b0ce83cb Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Wed, 2 Aug 2023 03:31:11 +0000 Subject: [PATCH 5/5] fix state mem leak --- source/libs/stream/src/streamBackendRocksdb.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index d84a09ab20..dd89c89481 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -1610,6 +1610,9 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey* const char* curKey = rocksdb_iter_key(pCur->iter, (size_t*)&kLen); stateSessionKeyDecode((void*)&ktmp, (char*)curKey); + if (pVal != NULL) *pVal = NULL; + if (pVLen != NULL) *pVLen = 0; + SStateSessionKey* pKTmp = &ktmp; const char* vval = rocksdb_iter_value(pCur->iter, (size_t*)&vLen); char* val = NULL; @@ -1617,8 +1620,6 @@ int32_t streamStateSessionGetKVByCur_rocksdb(SStreamStateCur* pCur, SSessionKey* if (len < 0) { return -1; } - if (pVal != NULL) *pVal = NULL; - if (pVLen != NULL) *pVLen = 0; if (pKTmp->opNum != pCur->number) { taosMemoryFree(val);