diff --git a/include/dnode/vnode/tsdb/tsdb.h b/include/dnode/vnode/tsdb/tsdb.h index b85c6b64f67993effcacd2915ced28157e10e909..e5522ddbd3d234515d7c9be6a444c725015347cb 100644 --- a/include/dnode/vnode/tsdb/tsdb.h +++ b/include/dnode/vnode/tsdb/tsdb.h @@ -23,27 +23,27 @@ extern "C" { #endif // TYPES EXPOSED -typedef struct STsdb STsdb; -typedef struct STsdbCfg STsdbCfg; +typedef struct STsdb STsdb; + +typedef struct STsdbCfg { + uint64_t lruCacheSize; + uint32_t keep0; + uint32_t keep1; + uint32_t keep2; +} STsdbCfg; // STsdb STsdb *tsdbOpen(const char *path, const STsdbCfg *pTsdbCfg, SMemAllocatorFactory *pMAF); void tsdbClose(STsdb *); void tsdbRemove(const char *path); int tsdbInsertData(STsdb *pTsdb, SSubmitMsg *pMsg); +int tsdbPrepareCommit(STsdb *pTsdb); +int tsdbCommit(STsdb *pTsdb); // STsdbCfg int tsdbOptionsInit(STsdbCfg *); void tsdbOptionsClear(STsdbCfg *); -/* ------------------------ STRUCT DEFINITIONS ------------------------ */ -struct STsdbCfg { - uint64_t lruCacheSize; - uint32_t keep0; - uint32_t keep1; - uint32_t keep2; -}; - #ifdef __cplusplus } #endif diff --git a/include/util/mallocator.h b/include/util/mallocator.h index 49a93273532523418d475a902809a9e0ee93706a..5ecdc316a490aa1be7b57ec68d00b7653cebf864 100644 --- a/include/util/mallocator.h +++ b/include/util/mallocator.h @@ -39,6 +39,9 @@ typedef struct SMemAllocator { TD_MEM_ALCT(SMemAllocator); } SMemAllocator; +#define tMalloc(pMA, SIZE) TD_MA_MALLOC(PMA, SIZE) +#define tFree(pMA, PTR) TD_MA_FREE(PMA, PTR) + typedef struct SMemAllocatorFactory { void *impl; SMemAllocator *(*create)(struct SMemAllocatorFactory *); diff --git a/source/dnode/vnode/impl/src/vnodeCommit.c b/source/dnode/vnode/impl/src/vnodeCommit.c index a728de0ebb103f1e8439735a8aa828c5109239e2..7213e31cb46d8bd75f5227e4b88bbd088dd7f340 100644 --- a/source/dnode/vnode/impl/src/vnodeCommit.c +++ b/source/dnode/vnode/impl/src/vnodeCommit.c @@ -25,6 +25,10 @@ int vnodeAsyncCommit(SVnode *pVnode) { pTask->execute = vnodeCommit; // TODO pTask->arg = pVnode; // TODO + tsdbPrepareCommit(pVnode->pTsdb); + // metaPrepareCommit(pVnode->pMeta); + // walPreapareCommit(pVnode->pWal); + vnodeScheduleTask(pTask); return 0; } @@ -32,6 +36,10 @@ int vnodeAsyncCommit(SVnode *pVnode) { int vnodeCommit(void *arg) { SVnode *pVnode = (SVnode *)arg; + metaCommit(pVnode->pMeta); + tqCommit(pVnode->pTq); + tsdbCommit(pVnode->pTq); + vnodeBufPoolRecycle(pVnode); // TODO return 0; diff --git a/source/dnode/vnode/tq/src/tq.c b/source/dnode/vnode/tq/src/tq.c index b88ef353b048a147a8db52eea4d36c2a1f887dce..1a27870a1b738d52f1c142f010e8e7e44abce50d 100644 --- a/source/dnode/vnode/tq/src/tq.c +++ b/source/dnode/vnode/tq/src/tq.c @@ -50,7 +50,7 @@ STQ* tqOpen(const char* path, STqCfg* tqConfig, STqLogReader* tqLogReader, SMemA pTq->tqConfig = tqConfig; pTq->tqLogReader = tqLogReader; pTq->tqMemRef.pAlloctorFactory = allocFac; - pTq->tqMemRef.pAllocator = allocFac->create(allocFac); + // pTq->tqMemRef.pAllocator = allocFac->create(allocFac); if (pTq->tqMemRef.pAllocator == NULL) { // TODO } diff --git a/source/dnode/vnode/tsdb/src/tsdbCommit.c b/source/dnode/vnode/tsdb/src/tsdbCommit.c index b12419773661e2aa97b94f4b26d6ba690b372120..a747c7333eabaabc17160943a7288b62927d34a8 100644 --- a/source/dnode/vnode/tsdb/src/tsdbCommit.c +++ b/source/dnode/vnode/tsdb/src/tsdbCommit.c @@ -15,7 +15,19 @@ #include "tsdbDef.h" +int tsdbPrepareCommit(STsdb *pTsdb) { + if (pTsdb->mem == NULL) return 0; + + // tsem_wait(&(pTsdb->canCommit)); + ASSERT(pTsdb->imem == NULL); + + pTsdb->imem = pTsdb->mem; + pTsdb->mem = NULL; +} + int tsdbCommit(STsdb *pTsdb) { // TODO + pTsdb->imem = NULL; + // tsem_post(&(pTsdb->canCommit)); return 0; } \ No newline at end of file