From 45de6cfee00671e874db2aceaddf574f4ff64b3c Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 2 Nov 2021 16:51:20 +0800 Subject: [PATCH] more --- cmake/cmake.options | 2 +- source/dnode/vnode/meta/inc/metaDB.h | 10 +++--- source/dnode/vnode/meta/src/metaDB.c | 50 ++++++++++++++++++++-------- 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/cmake/cmake.options b/cmake/cmake.options index 74b0d9fdbb..c1964762c7 100644 --- a/cmake/cmake.options +++ b/cmake/cmake.options @@ -16,7 +16,7 @@ option( option( BUILD_WITH_ROCKSDB "If build with rocksdb" - OFF + ON ) option( diff --git a/source/dnode/vnode/meta/inc/metaDB.h b/source/dnode/vnode/meta/inc/metaDB.h index 299b8e0350..7a9dcc9c34 100644 --- a/source/dnode/vnode/meta/inc/metaDB.h +++ b/source/dnode/vnode/meta/inc/metaDB.h @@ -17,16 +17,18 @@ #define _TD_META_DB_H_ #include "meta.h" -#include "tkv.h" +// #include "tkv.h" + +#include "rocksdb/c.h" #ifdef __cplusplus extern "C" { #endif typedef struct SMetaDB { - STkvDb * pDB; - STkvDb * pIdx; - STkvCache *pCache; + rocksdb_t * pDB; + rocksdb_t * pIdx; + rocksdb_cache_t *pCache; } SMetaDB; int metaOpenDB(SMeta *pMeta); diff --git a/source/dnode/vnode/meta/src/metaDB.c b/source/dnode/vnode/meta/src/metaDB.c index 73d54d7682..6b7ea1a0b2 100644 --- a/source/dnode/vnode/meta/src/metaDB.c +++ b/source/dnode/vnode/meta/src/metaDB.c @@ -17,35 +17,57 @@ #include "metaDef.h" int metaOpenDB(SMeta *pMeta) { - /* TODO */ - pMeta->metaDB.pDB = tkvOpen(NULL, "db"); + char * err = NULL; + rocksdb_options_t *pOpts; + + pOpts = rocksdb_options_create(); + if (pOpts == NULL) { + // TODO: handle error + return -1; + } + + // Create LRU cache + if (pMeta->options.lruCacheSize) { + pMeta->metaDB.pCache = rocksdb_cache_create_lru(pMeta->options.lruCacheSize); + if (pMeta->metaDB.pCache == NULL) { + // TODO: handle error + return -1; + } + + rocksdb_options_set_row_cache(pOpts, pMeta->metaDB.pCache); + } + + // Open raw data DB + pMeta->metaDB.pDB = rocksdb_open(pOpts, "db", &err); if (pMeta->metaDB.pDB == NULL) { - // TODO + // TODO: handle error return -1; } - pMeta->metaDB.pIdx = tkvOpen(NULL, "index"); + // Open index DB + pMeta->metaDB.pIdx = rocksdb_open(pOpts, "index", &err); if (pMeta->metaDB.pIdx == NULL) { - /* TODO */ + // TODO: handle error + rocksdb_close(pMeta->metaDB.pDB); return -1; } - { /* TODO: for cache*/ - } - return 0; } void metaCloseDB(SMeta *pMeta) { /* TODO */ - { - // TODO: clear cache - } - + // Close index DB if (pMeta->metaDB.pIdx) { - tkvClose(pMeta->metaDB.pIdx); + rocksdb_close(pMeta->metaDB.pIdx); } + // Close raw data DB if (pMeta->metaDB.pDB) { - tkvClose(pMeta->metaDB.pIdx); + rocksdb_close(pMeta->metaDB.pDB); + } + + // Destroy cache + if (pMeta->metaDB.pCache) { + rocksdb_cache_destroy(pMeta->metaDB.pCache); } } \ No newline at end of file