From 2c9c1175295cc1e432f72e8ea23725dd176ec705 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Wed, 29 Nov 2023 17:37:40 +0800 Subject: [PATCH 1/2] fix(tsdb/cache): flush dirty lru entries before del --- source/dnode/vnode/src/tsdb/tsdbCache.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 918d0bd7d0..e8aa755073 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -1132,6 +1132,10 @@ int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKE size_t *values_list_sizes = taosMemoryCalloc(num_keys * 2, sizeof(size_t)); char **errs = taosMemoryCalloc(num_keys * 2, sizeof(char *)); taosThreadMutexLock(&pTsdb->lruMutex); + + pTsdb->flushState.flush_count = ROCKS_BATCH_SIZE; + taosLRUCacheApply(pTsdb->lruCache, tsdbCacheFlushDirty, &pTsdb->flushState); + taosThreadMutexLock(&pTsdb->rCache.rMutex); rocksMayWrite(pTsdb, true, false, false); rocksdb_multi_get(pTsdb->rCache.db, pTsdb->rCache.readoptions, num_keys * 2, (const char *const *)keys_list, From ab2c7abca1e53ea80cb6c6f8cb3d36faad82fec8 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Thu, 30 Nov 2023 09:14:26 +0800 Subject: [PATCH 2/2] tsdb/cache-del: commit before get from rocks --- source/dnode/vnode/src/tsdb/tsdbCache.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index e8aa755073..5076599753 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -1131,13 +1131,13 @@ int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKE char **values_list = taosMemoryCalloc(num_keys * 2, sizeof(char *)); size_t *values_list_sizes = taosMemoryCalloc(num_keys * 2, sizeof(size_t)); char **errs = taosMemoryCalloc(num_keys * 2, sizeof(char *)); + + (void)tsdbCacheCommit(pTsdb); + taosThreadMutexLock(&pTsdb->lruMutex); - pTsdb->flushState.flush_count = ROCKS_BATCH_SIZE; - taosLRUCacheApply(pTsdb->lruCache, tsdbCacheFlushDirty, &pTsdb->flushState); - taosThreadMutexLock(&pTsdb->rCache.rMutex); - rocksMayWrite(pTsdb, true, false, false); + // rocksMayWrite(pTsdb, true, false, false); rocksdb_multi_get(pTsdb->rCache.db, pTsdb->rCache.readoptions, num_keys * 2, (const char *const *)keys_list, keys_list_sizes, values_list, values_list_sizes, errs); taosThreadMutexUnlock(&pTsdb->rCache.rMutex);