diff --git a/src/vnode/tsdb/src/tsdbCache.c b/src/vnode/tsdb/src/tsdbCache.c index f51c7c12d4904d9abd695826d327050f399fb50a..3496f6a5c8c480bde799adeb04ca4e6668057820 100644 --- a/src/vnode/tsdb/src/tsdbCache.c +++ b/src/vnode/tsdb/src/tsdbCache.c @@ -17,8 +17,9 @@ #include "tsdb.h" #include "tsdbCache.h" -static int tsdbAllocBlockFromPool(STsdbCache *pCache); -static void tsdbFreeBlockList(SCacheMem *mem); +static int tsdbAllocBlockFromPool(STsdbCache *pCache); +static void tsdbFreeBlockList(SList *list); +static void tsdbFreeCacheMem(SCacheMem *mem); STsdbCache *tsdbInitCache(int maxBytes, int cacheBlockSize, tsdb_repo_t *pRepo) { STsdbCache *pCache = (STsdbCache *)calloc(1, sizeof(STsdbCache)); @@ -60,8 +61,8 @@ _err: } void tsdbFreeCache(STsdbCache *pCache) { - tsdbFreeBlockList(pCache->imem); - tsdbFreeBlockList(pCache->mem); + tsdbFreeCacheMem(pCache->imem); + tsdbFreeCacheMem(pCache->mem); tsdbFreeBlockList(pCache->pool.memPool); free(pCache); } @@ -90,9 +91,7 @@ void *tsdbAllocFromCache(STsdbCache *pCache, int bytes, TSKEY key) { return ptr; } -static void tsdbFreeBlockList(SCacheMem *mem) { - if (mem == NULL) return; - SList * list = mem->list; +static void tsdbFreeBlockList(SList *list) { SListNode * node = NULL; STsdbCacheBlock *pBlock = NULL; while ((node = tdListPopHead(list)) != NULL) { @@ -101,6 +100,12 @@ static void tsdbFreeBlockList(SCacheMem *mem) { listNodeFree(node); } tdListFree(list); +} + +static void tsdbFreeCacheMem(SCacheMem *mem) { + if (mem == NULL) return; + SList *list = mem->list; + tsdbFreeBlockList(list); free(mem); } diff --git a/src/vnode/tsdb/src/tsdbMain.c b/src/vnode/tsdb/src/tsdbMain.c index b07cce1b3bee1371884e7bf49dab2f2f3332158e..2df7974844943eaa90947f45baa66724d2240cb5 100644 --- a/src/vnode/tsdb/src/tsdbMain.c +++ b/src/vnode/tsdb/src/tsdbMain.c @@ -712,7 +712,7 @@ static int32_t tdInsertRowToTable(STsdbRepo *pRepo, SDataRow row, STable *pTable tSkipListRandNodeInfo(pTable->mem->pData, &level, &headSize); TSKEY key = dataRowKey(row); - printf("insert:%lld, size:%d\n", key, pTable->mem->numOfPoints); + // printf("insert:%lld, size:%d\n", key, pTable->mem->numOfPoints); // Copy row into the memory SSkipListNode *pNode = tsdbAllocFromCache(pRepo->tsdbCache, headSize + dataRowLen(row), key); diff --git a/src/vnode/tsdb/tests/tsdbTests.cpp b/src/vnode/tsdb/tests/tsdbTests.cpp index 459d531c10732c3ff905627454deea458149a386..a76aef2d41d154ca64ac48bfb3a5075309fe3f7f 100644 --- a/src/vnode/tsdb/tests/tsdbTests.cpp +++ b/src/vnode/tsdb/tests/tsdbTests.cpp @@ -79,7 +79,7 @@ TEST(TsdbTest, createRepo) { // // 3. Loop to write some simple data int nRows = 10000000; - int rowsPerSubmit = 100; + int rowsPerSubmit = 10; int64_t start_time = 1584081000000; SSubmitMsg *pMsg = (SSubmitMsg *)malloc(sizeof(SSubmitMsg) + sizeof(SSubmitBlk) + tdMaxRowBytesFromSchema(schema) * rowsPerSubmit); @@ -88,7 +88,8 @@ TEST(TsdbTest, createRepo) { for (int k = 0; k < nRows/rowsPerSubmit; k++) { SSubmitBlk *pBlock = pMsg->blocks; - pBlock->tableId = {.uid = 987607499877672L, .tid = 0}; + pBlock->uid = 987607499877672L; + pBlock->tid = 0; pBlock->sversion = 0; pBlock->len = 0; for (int i = 0; i < rowsPerSubmit; i++) { @@ -107,7 +108,18 @@ TEST(TsdbTest, createRepo) { } pBlock->len += dataRowLen(row); } + pBlock->len = htonl(pBlock->len); + pBlock->numOfRows = htonl(pBlock->numOfRows); + pBlock->uid = htobe64(pBlock->uid); + pBlock->tid = htonl(pBlock->tid); + + pBlock->sversion = htonl(pBlock->sversion); + pBlock->padding = htonl(pBlock->padding); + pMsg->length = pMsg->length + sizeof(SSubmitBlk) + pBlock->len; + pMsg->length = htonl(pMsg->length); + pMsg->numOfBlocks = htonl(pMsg->numOfBlocks); + pMsg->compressed = htonl(pMsg->numOfBlocks); tsdbInsertData(pRepo, pMsg); }