commit
b5ba09feb4
|
@ -6,7 +6,7 @@ ExternalProject_Add(bdb
|
||||||
SOURCE_DIR "${CMAKE_CONTRIB_DIR}/bdb"
|
SOURCE_DIR "${CMAKE_CONTRIB_DIR}/bdb"
|
||||||
BINARY_DIR "${CMAKE_CONTRIB_DIR}/bdb"
|
BINARY_DIR "${CMAKE_CONTRIB_DIR}/bdb"
|
||||||
#BUILD_IN_SOURCE TRUE
|
#BUILD_IN_SOURCE TRUE
|
||||||
CONFIGURE_COMMAND "./dist/configure"
|
CONFIGURE_COMMAND COMMAND ./dist/configure --enable-debug
|
||||||
BUILD_COMMAND "$(MAKE)"
|
BUILD_COMMAND "$(MAKE)"
|
||||||
INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
TEST_COMMAND ""
|
TEST_COMMAND ""
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_META_CACHE_H_
|
|
||||||
#define _TD_META_CACHE_H_
|
|
||||||
|
|
||||||
#include "meta.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct SMetaCache SMetaCache;
|
|
||||||
|
|
||||||
int metaOpenCache(SMeta *pMeta);
|
|
||||||
void metaCloseCache(SMeta *pMeta);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_META_CACHE_H_*/
|
|
|
@ -1,34 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_META_CFG_H_
|
|
||||||
#define _TD_META_CFG_H_
|
|
||||||
|
|
||||||
#include "meta.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern const SMetaCfg defaultMetaOptions;
|
|
||||||
|
|
||||||
int metaValidateOptions(const SMetaCfg *);
|
|
||||||
void metaOptionsCopy(SMetaCfg *pDest, const SMetaCfg *pSrc);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_META_CFG_H_*/
|
|
|
@ -1,36 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_META_DB_H_
|
|
||||||
#define _TD_META_DB_H_
|
|
||||||
|
|
||||||
#include "meta.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct SMetaDB SMetaDB;
|
|
||||||
|
|
||||||
int metaOpenDB(SMeta *pMeta);
|
|
||||||
void metaCloseDB(SMeta *pMeta);
|
|
||||||
int metaSaveTableToDB(SMeta *pMeta, STbCfg *pTbCfg);
|
|
||||||
int metaRemoveTableFromDb(SMeta *pMeta, tb_uid_t uid);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_META_DB_H_*/
|
|
|
@ -19,18 +19,49 @@
|
||||||
#include "mallocator.h"
|
#include "mallocator.h"
|
||||||
|
|
||||||
#include "meta.h"
|
#include "meta.h"
|
||||||
#include "metaCache.h"
|
|
||||||
#include "metaCfg.h"
|
|
||||||
#include "metaDB.h"
|
|
||||||
#include "metaIdx.h"
|
|
||||||
#include "metaTbCfg.h"
|
|
||||||
#include "metaTbTag.h"
|
|
||||||
#include "metaTbUid.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef struct SMetaCache SMetaCache;
|
||||||
|
typedef struct SMetaIdx SMetaIdx;
|
||||||
|
typedef struct SMetaDB SMetaDB;
|
||||||
|
|
||||||
|
// SMetaDB
|
||||||
|
int metaOpenDB(SMeta* pMeta);
|
||||||
|
void metaCloseDB(SMeta* pMeta);
|
||||||
|
int metaSaveTableToDB(SMeta* pMeta, STbCfg* pTbCfg);
|
||||||
|
int metaRemoveTableFromDb(SMeta* pMeta, tb_uid_t uid);
|
||||||
|
|
||||||
|
// SMetaCache
|
||||||
|
int metaOpenCache(SMeta* pMeta);
|
||||||
|
void metaCloseCache(SMeta* pMeta);
|
||||||
|
|
||||||
|
// SMetaCfg
|
||||||
|
extern const SMetaCfg defaultMetaOptions;
|
||||||
|
// int metaValidateOptions(const SMetaCfg*);
|
||||||
|
void metaOptionsCopy(SMetaCfg* pDest, const SMetaCfg* pSrc);
|
||||||
|
|
||||||
|
// SMetaIdx
|
||||||
|
int metaOpenIdx(SMeta* pMeta);
|
||||||
|
void metaCloseIdx(SMeta* pMeta);
|
||||||
|
int metaSaveTableToIdx(SMeta* pMeta, const STbCfg* pTbOptions);
|
||||||
|
int metaRemoveTableFromIdx(SMeta* pMeta, tb_uid_t uid);
|
||||||
|
|
||||||
|
// STbUidGnrt
|
||||||
|
typedef struct STbUidGenerator {
|
||||||
|
tb_uid_t nextUid;
|
||||||
|
} STbUidGenerator;
|
||||||
|
|
||||||
|
// STableUidGenerator
|
||||||
|
int metaOpenUidGnrt(SMeta* pMeta);
|
||||||
|
void metaCloseUidGnrt(SMeta* pMeta);
|
||||||
|
|
||||||
|
// tb_uid_t
|
||||||
|
#define IVLD_TB_UID 0
|
||||||
|
tb_uid_t metaGenerateUid(SMeta* pMeta);
|
||||||
|
|
||||||
struct SMeta {
|
struct SMeta {
|
||||||
char* path;
|
char* path;
|
||||||
SMetaCfg options;
|
SMetaCfg options;
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_META_IDX_H_
|
|
||||||
#define _TD_META_IDX_H_
|
|
||||||
|
|
||||||
#include "meta.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct SMetaIdx SMetaIdx;
|
|
||||||
|
|
||||||
int metaOpenIdx(SMeta *pMeta);
|
|
||||||
void metaCloseIdx(SMeta *pMeta);
|
|
||||||
int metaSaveTableToIdx(SMeta *pMeta, const STbCfg *pTbOptions);
|
|
||||||
int metaRemoveTableFromIdx(SMeta *pMeta, tb_uid_t uid);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_META_IDX_H_*/
|
|
|
@ -1,27 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _VNODE_QUERY_H_
|
|
||||||
#define _VNODE_QUERY_H_
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_VNODE_QUERY_H_*/
|
|
|
@ -1,32 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_META_TABLE_CFG_H_
|
|
||||||
#define _TD_META_TABLE_CFG_H_
|
|
||||||
|
|
||||||
#include "meta.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int metaValidateTbCfg(SMeta *pMeta, const STbCfg *);
|
|
||||||
size_t metaEncodeTbObjFromTbOptions(const STbCfg *, void *pBuf, size_t bsize);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_META_TABLE_CFG_H_*/
|
|
|
@ -1,27 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_META_TB_TAG_H_
|
|
||||||
#define _TD_META_TB_TAG_H_
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_META_TB_TAG_H_*/
|
|
|
@ -1,42 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_META_UID_H_
|
|
||||||
#define _TD_META_UID_H_
|
|
||||||
|
|
||||||
#include "meta.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ------------------------ APIS EXPOSED ------------------------ */
|
|
||||||
typedef struct STbUidGenerator {
|
|
||||||
tb_uid_t nextUid;
|
|
||||||
} STbUidGenerator;
|
|
||||||
|
|
||||||
// STableUidGenerator
|
|
||||||
int metaOpenUidGnrt(SMeta *pMeta);
|
|
||||||
void metaCloseUidGnrt(SMeta *pMeta);
|
|
||||||
|
|
||||||
// tb_uid_t
|
|
||||||
#define IVLD_TB_UID 0
|
|
||||||
tb_uid_t metaGenerateUid(SMeta *pMeta);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_META_UID_H_*/
|
|
|
@ -1,29 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_TSDB_HEALTH_H_
|
|
||||||
#define _TD_TSDB_HEALTH_H_
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
bool tsdbUrgeQueryFree(STsdbRepo* pRepo);
|
|
||||||
int32_t tsdbInsertNewBlock(STsdbRepo* pRepo);
|
|
||||||
|
|
||||||
bool tsdbIdleMemEnough();
|
|
||||||
bool tsdbAllowNewBlock(STsdbRepo* pRepo);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _TD_TSDB_BUFFER_H_ */
|
|
|
@ -1,49 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef TSDB_ROW_MERGE_BUF_H
|
|
||||||
#define TSDB_ROW_MERGE_BUF_H
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "tsdb.h"
|
|
||||||
#include "tchecksum.h"
|
|
||||||
#include "tsdbReadImpl.h"
|
|
||||||
|
|
||||||
typedef void* SMergeBuf;
|
|
||||||
|
|
||||||
SDataRow tsdbMergeTwoRows(SMergeBuf *pBuf, SMemRow row1, SMemRow row2, STSchema *pSchema1, STSchema *pSchema2);
|
|
||||||
|
|
||||||
static FORCE_INLINE int tsdbMergeBufMakeSureRoom(SMergeBuf *pBuf, STSchema* pSchema1, STSchema* pSchema2) {
|
|
||||||
size_t len1 = dataRowMaxBytesFromSchema(pSchema1);
|
|
||||||
size_t len2 = dataRowMaxBytesFromSchema(pSchema2);
|
|
||||||
return tsdbMakeRoom(pBuf, MAX(len1, len2));
|
|
||||||
}
|
|
||||||
|
|
||||||
static FORCE_INLINE void tsdbFreeMergeBuf(SMergeBuf buf) {
|
|
||||||
taosTZfree(buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* ifndef TSDB_ROW_MERGE_BUF_H */
|
|
|
@ -0,0 +1,179 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||||
|
*
|
||||||
|
* This program is free software: you can use, redistribute, and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License, version 3
|
||||||
|
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _TD_VNODE_DEF_H_
|
||||||
|
#define _TD_VNODE_DEF_H_
|
||||||
|
|
||||||
|
#include "mallocator.h"
|
||||||
|
// #include "sync.h"
|
||||||
|
#include "tcoding.h"
|
||||||
|
#include "tfs.h"
|
||||||
|
#include "tlist.h"
|
||||||
|
#include "tlockfree.h"
|
||||||
|
#include "tmacro.h"
|
||||||
|
#include "wal.h"
|
||||||
|
|
||||||
|
#include "vnode.h"
|
||||||
|
|
||||||
|
#include "vnodeQuery.h"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct SVState SVState;
|
||||||
|
typedef struct SVBufPool SVBufPool;
|
||||||
|
|
||||||
|
typedef struct SVnodeTask {
|
||||||
|
TD_DLIST_NODE(SVnodeTask);
|
||||||
|
void* arg;
|
||||||
|
int (*execute)(void*);
|
||||||
|
} SVnodeTask;
|
||||||
|
|
||||||
|
typedef struct SVnodeMgr {
|
||||||
|
td_mode_flag_t vnodeInitFlag;
|
||||||
|
// For commit
|
||||||
|
bool stop;
|
||||||
|
uint16_t nthreads;
|
||||||
|
pthread_t* threads;
|
||||||
|
pthread_mutex_t mutex;
|
||||||
|
pthread_cond_t hasTask;
|
||||||
|
TD_DLIST(SVnodeTask) queue;
|
||||||
|
// For vnode Mgmt
|
||||||
|
SDnode* pDnode;
|
||||||
|
PutReqToVQueryQFp putReqToVQueryQFp;
|
||||||
|
} SVnodeMgr;
|
||||||
|
|
||||||
|
extern SVnodeMgr vnodeMgr;
|
||||||
|
|
||||||
|
// SVState
|
||||||
|
struct SVState {
|
||||||
|
int64_t processed;
|
||||||
|
int64_t committed;
|
||||||
|
int64_t applied;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SVnode {
|
||||||
|
int32_t vgId;
|
||||||
|
char* path;
|
||||||
|
SVnodeCfg config;
|
||||||
|
SVState state;
|
||||||
|
SVBufPool* pBufPool;
|
||||||
|
SMeta* pMeta;
|
||||||
|
STsdb* pTsdb;
|
||||||
|
STQ* pTq;
|
||||||
|
SWal* pWal;
|
||||||
|
tsem_t canCommit;
|
||||||
|
SQHandle* pQuery;
|
||||||
|
SDnode* pDnode;
|
||||||
|
};
|
||||||
|
|
||||||
|
int vnodeScheduleTask(SVnodeTask* task);
|
||||||
|
|
||||||
|
int32_t vnodePutReqToVQueryQ(SVnode* pVnode, struct SRpcMsg* pReq);
|
||||||
|
|
||||||
|
// For Log
|
||||||
|
extern int32_t vDebugFlag;
|
||||||
|
|
||||||
|
#define vFatal(...) \
|
||||||
|
do { \
|
||||||
|
if (vDebugFlag & DEBUG_FATAL) { \
|
||||||
|
taosPrintLog("VND FATAL ", 255, __VA_ARGS__); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#define vError(...) \
|
||||||
|
do { \
|
||||||
|
if (vDebugFlag & DEBUG_ERROR) { \
|
||||||
|
taosPrintLog("VND ERROR ", 255, __VA_ARGS__); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#define vWarn(...) \
|
||||||
|
do { \
|
||||||
|
if (vDebugFlag & DEBUG_WARN) { \
|
||||||
|
taosPrintLog("VND WARN ", 255, __VA_ARGS__); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#define vInfo(...) \
|
||||||
|
do { \
|
||||||
|
if (vDebugFlag & DEBUG_INFO) { \
|
||||||
|
taosPrintLog("VND ", 255, __VA_ARGS__); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#define vDebug(...) \
|
||||||
|
do { \
|
||||||
|
if (vDebugFlag & DEBUG_DEBUG) { \
|
||||||
|
taosPrintLog("VND ", tsdbDebugFlag, __VA_ARGS__); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#define vTrace(...) \
|
||||||
|
do { \
|
||||||
|
if (vDebugFlag & DEBUG_TRACE) { \
|
||||||
|
taosPrintLog("VND ", tsdbDebugFlag, __VA_ARGS__); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
// vnodeCfg.h
|
||||||
|
extern const SVnodeCfg defaultVnodeOptions;
|
||||||
|
|
||||||
|
int vnodeValidateOptions(const SVnodeCfg*);
|
||||||
|
void vnodeOptionsCopy(SVnodeCfg* pDest, const SVnodeCfg* pSrc);
|
||||||
|
|
||||||
|
// For commit
|
||||||
|
#define vnodeShouldCommit vnodeBufPoolIsFull
|
||||||
|
int vnodeSyncCommit(SVnode* pVnode);
|
||||||
|
int vnodeAsyncCommit(SVnode* pVnode);
|
||||||
|
|
||||||
|
// SVBufPool
|
||||||
|
|
||||||
|
int vnodeOpenBufPool(SVnode* pVnode);
|
||||||
|
void vnodeCloseBufPool(SVnode* pVnode);
|
||||||
|
int vnodeBufPoolSwitch(SVnode* pVnode);
|
||||||
|
int vnodeBufPoolRecycle(SVnode* pVnode);
|
||||||
|
void* vnodeMalloc(SVnode* pVnode, uint64_t size);
|
||||||
|
bool vnodeBufPoolIsFull(SVnode* pVnode);
|
||||||
|
|
||||||
|
SMemAllocatorFactory* vBufPoolGetMAF(SVnode* pVnode);
|
||||||
|
|
||||||
|
// SVMemAllocator
|
||||||
|
typedef struct SVArenaNode {
|
||||||
|
TD_SLIST_NODE(SVArenaNode);
|
||||||
|
uint64_t size; // current node size
|
||||||
|
void* ptr;
|
||||||
|
char data[];
|
||||||
|
} SVArenaNode;
|
||||||
|
|
||||||
|
typedef struct SVMemAllocator {
|
||||||
|
T_REF_DECLARE()
|
||||||
|
TD_DLIST_NODE(SVMemAllocator);
|
||||||
|
uint64_t capacity;
|
||||||
|
uint64_t ssize;
|
||||||
|
uint64_t lsize;
|
||||||
|
SVArenaNode* pNode;
|
||||||
|
TD_SLIST(SVArenaNode) nlist;
|
||||||
|
} SVMemAllocator;
|
||||||
|
|
||||||
|
SVMemAllocator* vmaCreate(uint64_t capacity, uint64_t ssize, uint64_t lsize);
|
||||||
|
void vmaDestroy(SVMemAllocator* pVMA);
|
||||||
|
void vmaReset(SVMemAllocator* pVMA);
|
||||||
|
void* vmaMalloc(SVMemAllocator* pVMA, uint64_t size);
|
||||||
|
void vmaFree(SVMemAllocator* pVMA, void* ptr);
|
||||||
|
bool vmaIsFull(SVMemAllocator* pVMA);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /*_TD_VNODE_DEF_H_*/
|
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_VNODE_BUFFER_POOL_H_
|
|
||||||
#define _TD_VNODE_BUFFER_POOL_H_
|
|
||||||
|
|
||||||
#include "tlist.h"
|
|
||||||
#include "vnode.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct SVBufPool SVBufPool;
|
|
||||||
|
|
||||||
int vnodeOpenBufPool(SVnode *pVnode);
|
|
||||||
void vnodeCloseBufPool(SVnode *pVnode);
|
|
||||||
int vnodeBufPoolSwitch(SVnode *pVnode);
|
|
||||||
int vnodeBufPoolRecycle(SVnode *pVnode);
|
|
||||||
void *vnodeMalloc(SVnode *pVnode, uint64_t size);
|
|
||||||
bool vnodeBufPoolIsFull(SVnode *pVnode);
|
|
||||||
|
|
||||||
SMemAllocatorFactory *vBufPoolGetMAF(SVnode *pVnode);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_VNODE_BUFFER_POOL_H_*/
|
|
|
@ -1,34 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_VNODE_CFG_H_
|
|
||||||
#define _TD_VNODE_CFG_H_
|
|
||||||
|
|
||||||
#include "vnode.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern const SVnodeCfg defaultVnodeOptions;
|
|
||||||
|
|
||||||
int vnodeValidateOptions(const SVnodeCfg *);
|
|
||||||
void vnodeOptionsCopy(SVnodeCfg *pDest, const SVnodeCfg *pSrc);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_VNODE_CFG_H_*/
|
|
|
@ -1,33 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_VNODE_COMMIT_H_
|
|
||||||
#define _TD_VNODE_COMMIT_H_
|
|
||||||
|
|
||||||
#include "vnode.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define vnodeShouldCommit vnodeBufPoolIsFull
|
|
||||||
int vnodeSyncCommit(SVnode *pVnode);
|
|
||||||
int vnodeAsyncCommit(SVnode *pVnode);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_VNODE_COMMIT_H_*/
|
|
|
@ -1,96 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_VNODE_DEF_H_
|
|
||||||
#define _TD_VNODE_DEF_H_
|
|
||||||
|
|
||||||
#include "mallocator.h"
|
|
||||||
// #include "sync.h"
|
|
||||||
#include "tcoding.h"
|
|
||||||
#include "tlist.h"
|
|
||||||
#include "tlockfree.h"
|
|
||||||
#include "tmacro.h"
|
|
||||||
#include "wal.h"
|
|
||||||
#include "tfs.h"
|
|
||||||
|
|
||||||
#include "vnode.h"
|
|
||||||
|
|
||||||
#include "vnodeBufferPool.h"
|
|
||||||
#include "vnodeCfg.h"
|
|
||||||
#include "vnodeCommit.h"
|
|
||||||
#include "vnodeMemAllocator.h"
|
|
||||||
#include "vnodeQuery.h"
|
|
||||||
#include "vnodeStateMgr.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct SVnodeTask {
|
|
||||||
TD_DLIST_NODE(SVnodeTask);
|
|
||||||
void* arg;
|
|
||||||
int (*execute)(void*);
|
|
||||||
} SVnodeTask;
|
|
||||||
|
|
||||||
typedef struct SVnodeMgr {
|
|
||||||
td_mode_flag_t vnodeInitFlag;
|
|
||||||
// For commit
|
|
||||||
bool stop;
|
|
||||||
uint16_t nthreads;
|
|
||||||
pthread_t* threads;
|
|
||||||
pthread_mutex_t mutex;
|
|
||||||
pthread_cond_t hasTask;
|
|
||||||
TD_DLIST(SVnodeTask) queue;
|
|
||||||
// For vnode Mgmt
|
|
||||||
SDnode* pDnode;
|
|
||||||
PutReqToVQueryQFp putReqToVQueryQFp;
|
|
||||||
} SVnodeMgr;
|
|
||||||
|
|
||||||
extern SVnodeMgr vnodeMgr;
|
|
||||||
|
|
||||||
struct SVnode {
|
|
||||||
int32_t vgId;
|
|
||||||
char* path;
|
|
||||||
SVnodeCfg config;
|
|
||||||
SVState state;
|
|
||||||
SVBufPool* pBufPool;
|
|
||||||
SMeta* pMeta;
|
|
||||||
STsdb* pTsdb;
|
|
||||||
STQ* pTq;
|
|
||||||
SWal* pWal;
|
|
||||||
tsem_t canCommit;
|
|
||||||
SQHandle* pQuery;
|
|
||||||
SDnode* pDnode;
|
|
||||||
};
|
|
||||||
|
|
||||||
int vnodeScheduleTask(SVnodeTask* task);
|
|
||||||
|
|
||||||
int32_t vnodePutReqToVQueryQ(SVnode *pVnode, struct SRpcMsg *pReq);
|
|
||||||
|
|
||||||
// For Log
|
|
||||||
extern int32_t vDebugFlag;
|
|
||||||
|
|
||||||
#define vFatal(...) do { if (vDebugFlag & DEBUG_FATAL) { taosPrintLog("VND FATAL ", 255, __VA_ARGS__); }} while(0)
|
|
||||||
#define vError(...) do { if (vDebugFlag & DEBUG_ERROR) { taosPrintLog("VND ERROR ", 255, __VA_ARGS__); }} while(0)
|
|
||||||
#define vWarn(...) do { if (vDebugFlag & DEBUG_WARN) { taosPrintLog("VND WARN ", 255, __VA_ARGS__); }} while(0)
|
|
||||||
#define vInfo(...) do { if (vDebugFlag & DEBUG_INFO) { taosPrintLog("VND ", 255, __VA_ARGS__); }} while(0)
|
|
||||||
#define vDebug(...) do { if (vDebugFlag & DEBUG_DEBUG) { taosPrintLog("VND ", tsdbDebugFlag, __VA_ARGS__); }} while(0)
|
|
||||||
#define vTrace(...) do { if (vDebugFlag & DEBUG_TRACE) { taosPrintLog("VND ", tsdbDebugFlag, __VA_ARGS__); }} while(0)
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_VNODE_DEF_H_*/
|
|
|
@ -1,45 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_VNODE_INT_H_
|
|
||||||
#define _TD_VNODE_INT_H_
|
|
||||||
|
|
||||||
#include "vnode.h"
|
|
||||||
|
|
||||||
#include "meta.h"
|
|
||||||
// #include "sync.h"
|
|
||||||
#include "tlog.h"
|
|
||||||
#include "tq.h"
|
|
||||||
#include "tsdb.h"
|
|
||||||
#include "wal.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern int32_t vDebugFlag;
|
|
||||||
|
|
||||||
#define vFatal(...) { if (vDebugFlag & DEBUG_FATAL) { taosPrintLog("VND FATAL ", 255, __VA_ARGS__); }}
|
|
||||||
#define vError(...) { if (vDebugFlag & DEBUG_ERROR) { taosPrintLog("VND ERROR ", 255, __VA_ARGS__); }}
|
|
||||||
#define vWarn(...) { if (vDebugFlag & DEBUG_WARN) { taosPrintLog("VND WARN ", 255, __VA_ARGS__); }}
|
|
||||||
#define vInfo(...) { if (vDebugFlag & DEBUG_INFO) { taosPrintLog("VND ", 255, __VA_ARGS__); }}
|
|
||||||
#define vDebug(...) { if (vDebugFlag & DEBUG_DEBUG) { taosPrintLog("VND ", vDebugFlag, __VA_ARGS__); }}
|
|
||||||
#define vTrace(...) { if (vDebugFlag & DEBUG_TRACE) { taosPrintLog("VND ", vDebugFlag, __VA_ARGS__); }}
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_VNODE_INT_H_*/
|
|
|
@ -1,53 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_VNODE_MEM_ALLOCATOR_H_
|
|
||||||
#define _TD_VNODE_MEM_ALLOCATOR_H_
|
|
||||||
|
|
||||||
#include "os.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct SVArenaNode {
|
|
||||||
TD_SLIST_NODE(SVArenaNode);
|
|
||||||
uint64_t size; // current node size
|
|
||||||
void * ptr;
|
|
||||||
char data[];
|
|
||||||
} SVArenaNode;
|
|
||||||
|
|
||||||
typedef struct SVMemAllocator {
|
|
||||||
T_REF_DECLARE()
|
|
||||||
TD_DLIST_NODE(SVMemAllocator);
|
|
||||||
uint64_t capacity;
|
|
||||||
uint64_t ssize;
|
|
||||||
uint64_t lsize;
|
|
||||||
SVArenaNode *pNode;
|
|
||||||
TD_SLIST(SVArenaNode) nlist;
|
|
||||||
} SVMemAllocator;
|
|
||||||
|
|
||||||
SVMemAllocator *vmaCreate(uint64_t capacity, uint64_t ssize, uint64_t lsize);
|
|
||||||
void vmaDestroy(SVMemAllocator *pVMA);
|
|
||||||
void vmaReset(SVMemAllocator *pVMA);
|
|
||||||
void * vmaMalloc(SVMemAllocator *pVMA, uint64_t size);
|
|
||||||
void vmaFree(SVMemAllocator *pVMA, void *ptr);
|
|
||||||
bool vmaIsFull(SVMemAllocator *pVMA);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_VNODE_MEM_ALLOCATOR_H_*/
|
|
|
@ -1,33 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_VNODE_STATE_MGR_H_
|
|
||||||
#define _TD_VNODE_STATE_MGR_H_
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int64_t processed;
|
|
||||||
int64_t committed;
|
|
||||||
int64_t applied;
|
|
||||||
} SVState;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_VNODE_STATE_MGR_H_*/
|
|
|
@ -1,31 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _TD_VNODE_WRITE_H_
|
|
||||||
#define _TD_VNODE_WRITE_H_
|
|
||||||
|
|
||||||
#include "vnode.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void vnodeProcessWriteMsg(SVnode* pVnode, SVnodeMsg* pMsg);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /*_TD_VNODE_WRITE_H_*/
|
|
|
@ -30,11 +30,11 @@ SMeta *metaOpen(const char *path, const SMetaCfg *pMetaCfg, SMemAllocatorFactory
|
||||||
pMetaCfg = &defaultMetaOptions;
|
pMetaCfg = &defaultMetaOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate the options
|
// // Validate the options
|
||||||
if (metaValidateOptions(pMetaCfg) < 0) {
|
// if (metaValidateOptions(pMetaCfg) < 0) {
|
||||||
// TODO: deal with error
|
// // TODO: deal with error
|
||||||
return NULL;
|
// return NULL;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Allocate handle
|
// Allocate handle
|
||||||
pMeta = metaNew(path, pMetaCfg, pMAF);
|
pMeta = metaNew(path, pMetaCfg, pMAF);
|
||||||
|
|
|
@ -17,10 +17,10 @@
|
||||||
|
|
||||||
int metaCreateTable(SMeta *pMeta, STbCfg *pTbCfg) {
|
int metaCreateTable(SMeta *pMeta, STbCfg *pTbCfg) {
|
||||||
// Validate the tbOptions
|
// Validate the tbOptions
|
||||||
if (metaValidateTbCfg(pMeta, pTbCfg) < 0) {
|
// if (metaValidateTbCfg(pMeta, pTbCfg) < 0) {
|
||||||
// TODO: handle error
|
// // TODO: handle error
|
||||||
return -1;
|
// return -1;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// TODO: add atomicity
|
// TODO: add atomicity
|
||||||
|
|
||||||
|
|
|
@ -1,98 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// #include "os.h"
|
|
||||||
// #include "tmsg.h"
|
|
||||||
// #include "tarray.h"
|
|
||||||
// #include "query.h"
|
|
||||||
// #include "tglobal.h"
|
|
||||||
// #include "tlist.h"
|
|
||||||
// #include "tsdbint.h"
|
|
||||||
// #include "tsdbBuffer.h"
|
|
||||||
// #include "tsdbLog.h"
|
|
||||||
// #include "tsdbHealth.h"
|
|
||||||
// #include "ttimer.h"
|
|
||||||
// #include "tthread.h"
|
|
||||||
|
|
||||||
|
|
||||||
// // return malloc new block count
|
|
||||||
// int32_t tsdbInsertNewBlock(STsdbRepo * pRepo) {
|
|
||||||
// STsdbBufPool *pPool = pRepo->pPool;
|
|
||||||
// int32_t cnt = 0;
|
|
||||||
|
|
||||||
// if(tsdbAllowNewBlock(pRepo)) {
|
|
||||||
// STsdbBufBlock *pBufBlock = tsdbNewBufBlock(pPool->bufBlockSize);
|
|
||||||
// if (pBufBlock) {
|
|
||||||
// if (tdListAppend(pPool->bufBlockList, (void *)(&pBufBlock)) < 0) {
|
|
||||||
// // append error
|
|
||||||
// tsdbFreeBufBlock(pBufBlock);
|
|
||||||
// } else {
|
|
||||||
// pPool->nElasticBlocks ++;
|
|
||||||
// cnt ++ ;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return cnt;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // switch anther thread to run
|
|
||||||
// void* cbKillQueryFree(void* param) {
|
|
||||||
// STsdbRepo* pRepo = (STsdbRepo*)param;
|
|
||||||
// // vnode
|
|
||||||
// if(pRepo->appH.notifyStatus) {
|
|
||||||
// pRepo->appH.notifyStatus(pRepo->appH.appH, TSDB_STATUS_COMMIT_NOBLOCK, TSDB_CODE_SUCCESS);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // free
|
|
||||||
// if(pRepo->pthread){
|
|
||||||
// void* p = pRepo->pthread;
|
|
||||||
// pRepo->pthread = NULL;
|
|
||||||
// free(p);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return NULL;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // return true do free , false do nothing
|
|
||||||
// bool tsdbUrgeQueryFree(STsdbRepo * pRepo) {
|
|
||||||
// // check previous running
|
|
||||||
// if(pRepo->pthread && taosThreadRunning(pRepo->pthread)) {
|
|
||||||
// tsdbWarn("vgId:%d pre urge thread is runing. nBlocks=%d nElasticBlocks=%d", REPO_ID(pRepo), pRepo->pPool->nBufBlocks, pRepo->pPool->nElasticBlocks);
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// // create new
|
|
||||||
// pRepo->pthread = taosCreateThread(cbKillQueryFree, pRepo);
|
|
||||||
// if(pRepo->pthread == NULL) {
|
|
||||||
// tsdbError("vgId:%d create urge thread error.", REPO_ID(pRepo));
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// bool tsdbAllowNewBlock(STsdbRepo* pRepo) {
|
|
||||||
// int32_t nMaxElastic = pRepo->config.totalBlocks/3;
|
|
||||||
// STsdbBufPool* pPool = pRepo->pPool;
|
|
||||||
// if(pPool->nElasticBlocks >= nMaxElastic) {
|
|
||||||
// tsdbWarn("vgId:%d tsdbAllowNewBlock return fasle. nElasticBlock(%d) >= MaxElasticBlocks(%d)", REPO_ID(pRepo), pPool->nElasticBlocks, nMaxElastic);
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// bool tsdbNoProblem(STsdbRepo* pRepo) {
|
|
||||||
// if(listNEles(pRepo->pPool->bufBlockList) == 0)
|
|
||||||
// return false;
|
|
||||||
// return true;
|
|
||||||
// }
|
|
|
@ -1,30 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// #include "tsdbRowMergeBuf.h"
|
|
||||||
// #include "tdataformat.h"
|
|
||||||
|
|
||||||
// // row1 has higher priority
|
|
||||||
// SMemRow tsdbMergeTwoRows(SMergeBuf *pBuf, SMemRow row1, SMemRow row2, STSchema *pSchema1, STSchema *pSchema2) {
|
|
||||||
// if(row2 == NULL) return row1;
|
|
||||||
// if(row1 == NULL) return row2;
|
|
||||||
// ASSERT(pSchema1->version == memRowVersion(row1));
|
|
||||||
// ASSERT(pSchema2->version == memRowVersion(row2));
|
|
||||||
|
|
||||||
// if(tsdbMergeBufMakeSureRoom(pBuf, pSchema1, pSchema2) < 0) {
|
|
||||||
// return NULL;
|
|
||||||
// }
|
|
||||||
// return mergeTwoMemRows(*pBuf, row1, row2, pSchema1, pSchema2);
|
|
||||||
// }
|
|
|
@ -13,7 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vnodeDef.h"
|
#include "vnd.h"
|
||||||
|
|
||||||
static SVArenaNode *vArenaNodeNew(uint64_t capacity);
|
static SVArenaNode *vArenaNodeNew(uint64_t capacity);
|
||||||
static void vArenaNodeFree(SVArenaNode *pNode);
|
static void vArenaNodeFree(SVArenaNode *pNode);
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vnodeDef.h"
|
#include "vnd.h"
|
||||||
|
|
||||||
/* ------------------------ STRUCTURES ------------------------ */
|
/* ------------------------ STRUCTURES ------------------------ */
|
||||||
#define VNODE_BUF_POOL_SHARDS 3
|
#define VNODE_BUF_POOL_SHARDS 3
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vnodeDef.h"
|
#include "vnd.h"
|
||||||
|
|
||||||
const SVnodeCfg defaultVnodeOptions = {
|
const SVnodeCfg defaultVnodeOptions = {
|
||||||
.wsize = 96 * 1024 * 1024, .ssize = 1 * 1024 * 1024, .lsize = 1024, .walCfg = {.level = TAOS_WAL_WRITE}}; /* TODO */
|
.wsize = 96 * 1024 * 1024, .ssize = 1 * 1024 * 1024, .lsize = 1024, .walCfg = {.level = TAOS_WAL_WRITE}}; /* TODO */
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vnodeDef.h"
|
#include "vnd.h"
|
||||||
|
|
||||||
static int vnodeStartCommit(SVnode *pVnode);
|
static int vnodeStartCommit(SVnode *pVnode);
|
||||||
static int vnodeEndCommit(SVnode *pVnode);
|
static int vnodeEndCommit(SVnode *pVnode);
|
||||||
|
|
|
@ -14,7 +14,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "vnodeInt.h"
|
#include "vnd.h"
|
||||||
|
// #include "vnodeInt.h"
|
||||||
|
|
||||||
int32_t vnodeAlter(SVnode *pVnode, const SVnodeCfg *pCfg) { return 0; }
|
int32_t vnodeAlter(SVnode *pVnode, const SVnodeCfg *pCfg) { return 0; }
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vnodeDef.h"
|
#include "vnd.h"
|
||||||
|
|
||||||
static SVnode *vnodeNew(const char *path, const SVnodeCfg *pVnodeCfg);
|
static SVnode *vnodeNew(const char *path, const SVnodeCfg *pVnodeCfg);
|
||||||
static void vnodeFree(SVnode *pVnode);
|
static void vnodeFree(SVnode *pVnode);
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vnodeDef.h"
|
#include "vnd.h"
|
||||||
|
|
||||||
SVnodeMgr vnodeMgr = {.vnodeInitFlag = TD_MOD_UNINITIALIZED};
|
SVnodeMgr vnodeMgr = {.vnodeInitFlag = TD_MOD_UNINITIALIZED};
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vnodeQuery.h"
|
#include "vnodeQuery.h"
|
||||||
#include "vnodeDef.h"
|
#include "vnd.h"
|
||||||
|
|
||||||
static int32_t vnodeGetTableList(SVnode *pVnode, SRpcMsg *pMsg);
|
static int32_t vnodeGetTableList(SVnode *pVnode, SRpcMsg *pMsg);
|
||||||
static int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp);
|
static int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp);
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "vnodeDef.h"
|
#include "vnd.h"
|
||||||
|
|
||||||
int vnodeProcessNoWalWMsgs(SVnode *pVnode, SRpcMsg *pMsg) {
|
int vnodeProcessNoWalWMsgs(SVnode *pVnode, SRpcMsg *pMsg) {
|
||||||
switch (pMsg->msgType) {
|
switch (pMsg->msgType) {
|
||||||
|
@ -84,6 +84,7 @@ int vnodeApplyWMsg(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
|
||||||
// TODO: handle error
|
// TODO: handle error
|
||||||
}
|
}
|
||||||
vTrace("vgId:%d process create table %s", pVnode->vgId, pCreateTbReq->name);
|
vTrace("vgId:%d process create table %s", pVnode->vgId, pCreateTbReq->name);
|
||||||
|
free(pCreateTbReq->name);
|
||||||
if (pCreateTbReq->type == TD_SUPER_TABLE) {
|
if (pCreateTbReq->type == TD_SUPER_TABLE) {
|
||||||
free(pCreateTbReq->stbCfg.pSchema);
|
free(pCreateTbReq->stbCfg.pSchema);
|
||||||
free(pCreateTbReq->stbCfg.pTagSchema);
|
free(pCreateTbReq->stbCfg.pTagSchema);
|
||||||
|
|
|
@ -28,11 +28,13 @@ extern "C" {
|
||||||
struct TDB {
|
struct TDB {
|
||||||
pgsize_t pageSize;
|
pgsize_t pageSize;
|
||||||
tdb_db_t type;
|
tdb_db_t type;
|
||||||
|
char * fname;
|
||||||
|
char * dbname;
|
||||||
union {
|
union {
|
||||||
TDB_BTREE *btree;
|
TDB_BTREE *btree;
|
||||||
TDB_HASH * hash;
|
TDB_HASH * hash;
|
||||||
TDB_HEAP * heap;
|
TDB_HEAP * heap;
|
||||||
} dbam; // Different access methods
|
} dbam; // db access method
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
Loading…
Reference in New Issue