From 3524ef32ebe1534e2dcccd8740046bbc17f9ae12 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Fri, 8 Sep 2023 09:28:08 +0800 Subject: [PATCH] tdb/pcache: not free page if already on free list --- source/libs/tdb/src/db/tdbPCache.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/libs/tdb/src/db/tdbPCache.c b/source/libs/tdb/src/db/tdbPCache.c index f157810cdc..54baee350a 100644 --- a/source/libs/tdb/src/db/tdbPCache.c +++ b/source/libs/tdb/src/db/tdbPCache.c @@ -229,9 +229,15 @@ void tdbPCacheInvalidatePage(SPCache *pCache, SPager *pPager, SPgno pgno) { } if (pPage) { - tdbPCachePinPage(pCache, pPage); + bool moveToFreeList = false; + if (pPage->pLruNext) { + tdbPCachePinPage(pCache, pPage); + moveToFreeList = true; + } tdbPCacheRemovePageFromHash(pCache, pPage); - tdbPCacheFreePage(pCache, pPage); + if (moveToFreeList) { + tdbPCacheFreePage(pCache, pPage); + } } }