diff --git a/src/tsdb/src/tsdbBuffer.c b/src/tsdb/src/tsdbBuffer.c index 013bae69a0..f27af3b722 100644 --- a/src/tsdb/src/tsdbBuffer.c +++ b/src/tsdb/src/tsdbBuffer.c @@ -114,7 +114,7 @@ void tsdbCloseBufPool(STsdbRepo *pRepo) { SListNode *tsdbAllocBufBlockFromPool(STsdbRepo *pRepo) { ASSERT(pRepo != NULL && pRepo->pool != NULL); - // ASSERT pRepo is locked + ASSERT(IS_REPO_LOCKED(pRepo)); STsdbCfg * pCfg = &pRepo->config; STsdbBufPool *pBufPool = pRepo->pool; diff --git a/src/tsdb/src/tsdbMemTable.c b/src/tsdb/src/tsdbMemTable.c index c848b7644b..55fda4e116 100644 --- a/src/tsdb/src/tsdbMemTable.c +++ b/src/tsdb/src/tsdbMemTable.c @@ -170,6 +170,17 @@ static void *tsdbAllocBytes(STsdbRepo *pRepo, int bytes) { tsdbUnRefMemTable(pRepo, pIMem); } + } else { + if (tsdbLockRepo(pRepo) < 0) { + tsdbFreeMemTable(pMemTable); + return NULL; + } + + SListNode *pNode = tsdbAllocBufBlockFromPool(pRepo); + tdListAppendNode(pMemTable->bufBlockList, pNode); + pRepo->mem = pMemTable; + + if (tsdbUnlockRepo(pRepo) < 0) return NULL; } }