dnodeSystem.c
This commit is contained in:
parent
5c738986cb
commit
4563289f94
|
@ -20,6 +20,26 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "dnode.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int sid;
|
||||||
|
int vnode;
|
||||||
|
uint32_t ip;
|
||||||
|
uint16_t port;
|
||||||
|
int32_t count; // track the number of imports
|
||||||
|
int32_t code; // track the code of imports
|
||||||
|
int32_t numOfTotalPoints; // track the total number of points imported
|
||||||
|
void *thandle; // handle from TAOS layer
|
||||||
|
void *qhandle;
|
||||||
|
} SShellObj;
|
||||||
|
|
||||||
|
int32_t dnodeInitShell();
|
||||||
|
|
||||||
|
//SDnodeStatisInfo dnodeGetStatisInfo()
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -23,16 +23,31 @@ extern "C" {
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
#include "dnode.h"
|
||||||
|
|
||||||
extern pthread_mutex_t dmutex;
|
typedef enum {
|
||||||
extern bool tsDnodeStopping;
|
TSDB_DNODE_RUN_STATUS_INITIALIZE,
|
||||||
|
TSDB_DNODE_RUN_STATUS_RUNING,
|
||||||
|
TSDB_DNODE_RUN_STATUS_STOPPED
|
||||||
|
} SDnodeRunStatus;
|
||||||
|
|
||||||
int dnodeInitSystem();
|
extern int32_t (*dnodeInitPeers)(int32_t numOfThreads);
|
||||||
|
extern int32_t (*dnodeCheckSystem)();
|
||||||
|
extern int32_t (*dnodeInitStorage)();
|
||||||
|
extern void (*dnodeCleanupStorage)();
|
||||||
|
extern void (*dnodeParseParameterK)();
|
||||||
|
extern int32_t tsMaxQueues;
|
||||||
|
|
||||||
|
|
||||||
|
int32_t dnodeInitSystem();
|
||||||
void dnodeCleanUpSystem();
|
void dnodeCleanUpSystem();
|
||||||
void dnodeCheckDbRunning(const char* dir);
|
void dnodeInitPlugins();
|
||||||
|
|
||||||
int vnodeInitStore();
|
SDnodeRunStatus dnodeGetRunStatus();
|
||||||
int vnodeInitPeer(int numOfThreads);
|
void dnodeSetRunStatus(SDnodeRunStatus status);
|
||||||
|
void dnodeCheckDataDirOpenned(const char *dir);
|
||||||
|
void dnodeLockVnodes();
|
||||||
|
void dnodeUnLockVnodes();
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ int32_t dnodeOpenVnodes();
|
||||||
/*
|
/*
|
||||||
* Close all Vnodes that have been created and opened
|
* Close all Vnodes that have been created and opened
|
||||||
*/
|
*/
|
||||||
int32_t dnodeCloseVnodes();
|
int32_t dnodeCleanupVnodes();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if vnode already exists
|
* Check if vnode already exists
|
||||||
|
@ -43,7 +43,8 @@ int32_t dnodeCheckVnodeExist(int vid);
|
||||||
/*
|
/*
|
||||||
* Create vnode with specified configuration and open it
|
* Create vnode with specified configuration and open it
|
||||||
*/
|
*/
|
||||||
tsdb_repo_t* dnodeCreateVnode(int vid, SVnodeCfg *cfg);
|
//tsdb_repo_t* dnodeCreateVnode(int vid, SVnodeCfg *cfg);
|
||||||
|
void* dnodeCreateVnode(int vid, SVnodeCfg *cfg);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Modify vnode configuration information
|
* Modify vnode configuration information
|
||||||
|
@ -53,7 +54,7 @@ int32_t dnodeConfigVnode(int vid, SVnodeCfg *cfg);
|
||||||
/*
|
/*
|
||||||
* Modify vnode replication information
|
* Modify vnode replication information
|
||||||
*/
|
*/
|
||||||
int32_t dnodeConfigVnodePeers(int vid, /*SVpeerCfgMsg *cfg*/);
|
int32_t dnodeConfigVnodePeers(int vid/*, SVpeerCfgMsg *cfg*/);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove vnode from local repository
|
* Remove vnode from local repository
|
||||||
|
@ -63,8 +64,8 @@ int32_t dnodeDropVnode(int vid);
|
||||||
/*
|
/*
|
||||||
* Get the vnode object that has been opened
|
* Get the vnode object that has been opened
|
||||||
*/
|
*/
|
||||||
tsdb_repo_t* dnodeGetVnode(int vid);
|
//tsdb_repo_t* dnodeGetVnode(int vid);
|
||||||
|
void* dnodeGetVnode(int vid);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ void dnodeCleanUpModules() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void dnodeProcessModuleStatus(uint32_t status) {
|
void dnodeProcessModuleStatus(uint32_t status) {
|
||||||
if (tsDnodeStopping) {
|
if (tsDnodeRunStatus) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,39 +15,13 @@
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
#include "tlog.h"
|
||||||
#include "tglobalcfg.h"
|
#include "tglobalcfg.h"
|
||||||
#include "vnode.h"
|
|
||||||
#include "dnodeSystem.h"
|
#include "dnodeSystem.h"
|
||||||
|
|
||||||
#ifdef CLUSTER
|
/*
|
||||||
#include "dnodeCluster.h"
|
* Termination handler
|
||||||
#include "httpAdmin.h"
|
*/
|
||||||
#include "mnodeAccount.h"
|
|
||||||
#include "mnodeBalance.h"
|
|
||||||
#include "mnodeCluster.h"
|
|
||||||
#include "sdbReplica.h"
|
|
||||||
#include "multilevelStorage.h"
|
|
||||||
#include "vnodeCluster.h"
|
|
||||||
#include "vnodeReplica.h"
|
|
||||||
#include "dnodeGrant.h"
|
|
||||||
void init() {
|
|
||||||
dnodeClusterInit();
|
|
||||||
httpAdminInit();
|
|
||||||
mnodeAccountInit();
|
|
||||||
mnodeBalanceInit();
|
|
||||||
mnodeClusterInit();
|
|
||||||
sdbReplicaInit();
|
|
||||||
multilevelStorageInit();
|
|
||||||
vnodeClusterInit();
|
|
||||||
vnodeReplicaInit();
|
|
||||||
dnodeGrantInit();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void dnodeParseParameterKImp() {}
|
|
||||||
void (*dnodeParseParameterK)() = dnodeParseParameterKImp;
|
|
||||||
|
|
||||||
/* Termination handler */
|
|
||||||
void signal_handler(int signum, siginfo_t *sigInfo, void *context) {
|
void signal_handler(int signum, siginfo_t *sigInfo, void *context) {
|
||||||
if (signum == SIGUSR1) {
|
if (signum == SIGUSR1) {
|
||||||
tsCfgDynamicOptions("debugFlag 135");
|
tsCfgDynamicOptions("debugFlag 135");
|
||||||
|
@ -70,6 +44,8 @@ void signal_handler(int signum, siginfo_t *sigInfo, void *context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
dnodeInitPlugins();
|
||||||
|
|
||||||
// Set global configuration file
|
// Set global configuration file
|
||||||
for (int i = 1; i < argc; ++i) {
|
for (int i = 1; i < argc; ++i) {
|
||||||
if (strcmp(argv[i], "-c") == 0) {
|
if (strcmp(argv[i], "-c") == 0) {
|
||||||
|
|
|
@ -15,33 +15,29 @@
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
#include "taoserror.h"
|
||||||
|
#include "taosdef.h"
|
||||||
#include "taosmsg.h"
|
#include "taosmsg.h"
|
||||||
#include "vnode.h"
|
#include "tlog.h"
|
||||||
#include "vnodeShell.h"
|
|
||||||
#include "tschemautil.h"
|
#include "tschemautil.h"
|
||||||
|
|
||||||
#include "textbuffer.h"
|
#include "textbuffer.h"
|
||||||
#include "trpc.h"
|
#include "trpc.h"
|
||||||
#include "tscJoinProcess.h"
|
#include "dnode.h"
|
||||||
#include "vnode.h"
|
#include "dnodeSystem.h"
|
||||||
#include "vnodeRead.h"
|
#include "dnodeShell.h"
|
||||||
#include "vnodeUtil.h"
|
|
||||||
#include "vnodeStore.h"
|
|
||||||
#include "vnodeStatus.h"
|
|
||||||
|
|
||||||
extern int tsMaxQueues;
|
|
||||||
|
|
||||||
void * pShellServer = NULL;
|
|
||||||
SShellObj **shellList = NULL;
|
|
||||||
|
|
||||||
int vnodeProcessRetrieveRequest(char *pMsg, int msgLen, SShellObj *pObj);
|
int32_t vnodeProcessRetrieveRequest(char *pMsg, int msgLen, SShellObj *pObj);
|
||||||
int vnodeProcessQueryRequest(char *pMsg, int msgLen, SShellObj *pObj);
|
int32_t vnodeProcessQueryRequest(char *pMsg, int msgLen, SShellObj *pObj);
|
||||||
int vnodeProcessShellSubmitRequest(char *pMsg, int msgLen, SShellObj *pObj);
|
int32_t vnodeProcessShellSubmitRequest(char *pMsg, int msgLen, SShellObj *pObj);
|
||||||
|
|
||||||
static void vnodeProcessBatchSubmitTimer(void *param, void *tmrId);
|
static void vnodeProcessBatchSubmitTimer(void *param, void *tmrId);
|
||||||
|
|
||||||
int vnodeSelectReqNum = 0;
|
static void *pShellServer = NULL;
|
||||||
int vnodeInsertReqNum = 0;
|
static SShellObj **shellList = NULL;
|
||||||
|
static int32_t dnodeSelectReqNum = 0;
|
||||||
|
static int32_t dnodeInsertReqNum = 0;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t import;
|
int32_t import;
|
||||||
|
@ -131,7 +127,7 @@ void *vnodeProcessMsgFromShell(char *msg, void *ahandle, void *thandle) {
|
||||||
return pObj;
|
return pObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
int vnodeInitShell() {
|
int32_t dnodeInitShell() {
|
||||||
int size;
|
int size;
|
||||||
SRpcInit rpcInit;
|
SRpcInit rpcInit;
|
||||||
|
|
||||||
|
@ -399,7 +395,7 @@ _query_over:
|
||||||
vnodeFreeColumnInfo(&pQueryMsg->colList[i]);
|
vnodeFreeColumnInfo(&pQueryMsg->colList[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_fetch_add_32(&vnodeSelectReqNum, 1);
|
atomic_fetch_add_32(&dnodeSelectReqNum, 1);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -700,7 +696,7 @@ _submit_over:
|
||||||
ret = vnodeSendShellSubmitRspMsg(pObj, code, pObj->numOfTotalPoints);
|
ret = vnodeSendShellSubmitRspMsg(pObj, code, pObj->numOfTotalPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_fetch_add_32(&vnodeInsertReqNum, 1);
|
atomic_fetch_add_32(&dnodeInsertReqNum, 1);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -729,3 +725,15 @@ static void vnodeProcessBatchSubmitTimer(void *param, void *tmrId) {
|
||||||
vnodeSendShellSubmitRspMsg(pShell, code, pShell->numOfTotalPoints);
|
vnodeSendShellSubmitRspMsg(pShell, code, pShell->numOfTotalPoints);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SDnodeStatisInfo dnodeGetStatisInfo() {
|
||||||
|
SDnodeStatisInfo info = {0};
|
||||||
|
if (dnodeGetRunStatus() == TSDB_DNODE_RUN_STATUS_RUNING) {
|
||||||
|
info.httpReqNum = httpGetReqCount();
|
||||||
|
info.selectReqNum = atomic_exchange_32(&dnodeSelectReqNum, 0);
|
||||||
|
info.insertReqNum = atomic_exchange_32(&dnodeInsertReqNum, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return info;
|
||||||
|
}
|
|
@ -16,43 +16,78 @@
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "taosdef.h"
|
#include "taosdef.h"
|
||||||
|
#include "taoserror.h"
|
||||||
|
#include "tcrc32c.h"
|
||||||
#include "tlog.h"
|
#include "tlog.h"
|
||||||
|
#include "ttime.h"
|
||||||
#include "ttimer.h"
|
#include "ttimer.h"
|
||||||
|
#include "tutil.h"
|
||||||
|
#include "http.h"
|
||||||
#include "dnode.h"
|
#include "dnode.h"
|
||||||
#include "dnodeMgmt.h"
|
#include "dnodeMgmt.h"
|
||||||
#include "dnodeModule.h"
|
#include "dnodeModule.h"
|
||||||
|
#include "dnodeShell.h"
|
||||||
#include "dnodeSystem.h"
|
#include "dnodeSystem.h"
|
||||||
#include "monitorSystem.h"
|
#include "dnodeVnodeMgmt.h"
|
||||||
#include "httpSystem.h"
|
|
||||||
#include "mgmtSystem.h"
|
|
||||||
|
|
||||||
#include "vnode.h"
|
#ifdef CLUSTER
|
||||||
|
#include "dnodeCluster.h"
|
||||||
|
#include "httpAdmin.h"
|
||||||
|
#include "mnodeAccount.h"
|
||||||
|
#include "mnodeBalance.h"
|
||||||
|
#include "mnodeCluster.h"
|
||||||
|
#include "sdbReplica.h"
|
||||||
|
#include "multilevelStorage.h"
|
||||||
|
#include "vnodeCluster.h"
|
||||||
|
#include "vnodeReplica.h"
|
||||||
|
#include "dnodeGrant.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static pthread_mutex_t tsDnodeMutex;
|
||||||
|
static SDnodeRunStatus tsDnodeRunStatus = TSDB_DNODE_RUN_STATUS_STOPPED;
|
||||||
|
|
||||||
|
static int32_t dnodeInitRpcQHandle();
|
||||||
|
static int32_t dnodeInitQueryQHandle();
|
||||||
|
static int32_t dnodeInitTmrCtl();
|
||||||
|
|
||||||
pthread_mutex_t dmutex;
|
|
||||||
extern int vnodeSelectReqNum;
|
|
||||||
extern int vnodeInsertReqNum;
|
|
||||||
void *tsStatusTimer = NULL;
|
void *tsStatusTimer = NULL;
|
||||||
bool tsDnodeStopping = false;
|
|
||||||
|
|
||||||
// internal global, not configurable
|
|
||||||
void *vnodeTmrCtrl;
|
void *vnodeTmrCtrl;
|
||||||
void **rpcQhandle;
|
void **rpcQhandle;
|
||||||
void *dmQhandle;
|
void *dmQhandle;
|
||||||
void *queryQhandle;
|
void *queryQhandle;
|
||||||
int tsVnodePeers = TSDB_VNODES_SUPPORT - 1;
|
int32_t tsVnodePeers = TSDB_VNODES_SUPPORT - 1;
|
||||||
int tsMaxQueues;
|
int32_t tsMaxQueues;
|
||||||
uint32_t tsRebootTime;
|
uint32_t tsRebootTime;
|
||||||
|
|
||||||
int32_t dnodeInitRpcQHandle();
|
static void dnodeInitVnodesLock() {
|
||||||
int32_t dnodeInitQueryQHandle();
|
pthread_mutex_init(&tsDnodeMutex, NULL);
|
||||||
int32_t dnodeInitTmrCtl();
|
}
|
||||||
void dnodeCountRequestImp(SCountInfo *info);
|
|
||||||
|
void dnodeLockVnodes() {
|
||||||
|
pthread_mutex_lock(&tsDnodeMutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
void dnodeUnLockVnodes() {
|
||||||
|
pthread_mutex_unlock(&tsDnodeMutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void dnodeCleanVnodesLock() {
|
||||||
|
pthread_mutex_destroy(&tsDnodeMutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
SDnodeRunStatus dnodeGetRunStatus() {
|
||||||
|
return tsDnodeRunStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
void dnodeSetRunStatus(SDnodeRunStatus status) {
|
||||||
|
tsDnodeRunStatus = status;
|
||||||
|
}
|
||||||
|
|
||||||
void dnodeCleanUpSystem() {
|
void dnodeCleanUpSystem() {
|
||||||
if (tsDnodeStopping) {
|
if (dnodeGetRunStatus() == TSDB_DNODE_RUN_STATUS_STOPPED) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
tsDnodeStopping = true;
|
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_STOPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tsStatusTimer != NULL) {
|
if (tsStatusTimer != NULL) {
|
||||||
|
@ -61,29 +96,44 @@ void dnodeCleanUpSystem() {
|
||||||
}
|
}
|
||||||
|
|
||||||
dnodeCleanUpModules();
|
dnodeCleanUpModules();
|
||||||
|
dnodeCleanupVnodes();
|
||||||
vnodeCleanUpVnodes();
|
|
||||||
|
|
||||||
taosCloseLogger();
|
taosCloseLogger();
|
||||||
|
|
||||||
dnodeCleanupStorage();
|
dnodeCleanupStorage();
|
||||||
|
dnodeCleanVnodesLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void dnodeCheckDbRunning(const char* dir) {
|
void dnodeCheckDataDirOpenned(const char *dir) {
|
||||||
char filepath[256] = {0};
|
char filepath[256] = {0};
|
||||||
sprintf(filepath, "%s/.running", dir);
|
sprintf(filepath, "%s/.running", dir);
|
||||||
int fd = open(filepath, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU | S_IRWXG | S_IRWXO);
|
int32_t fd = open(filepath, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||||
int ret = flock(fd, LOCK_EX | LOCK_NB);
|
int32_t ret = flock(fd, LOCK_EX | LOCK_NB);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
dError("failed to lock file:%s ret:%d, database may be running, quit", filepath, ret);
|
dError("failed to lock file:%s ret:%d, database may be running, quit", filepath, ret);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int dnodeInitSystem() {
|
void dnodeInitPlugins() {
|
||||||
|
#ifdef CLUSTER
|
||||||
|
dnodeClusterInit();
|
||||||
|
httpAdminInit();
|
||||||
|
mnodeAccountInit();
|
||||||
|
mnodeBalanceInit();
|
||||||
|
mnodeClusterInit();
|
||||||
|
sdbReplicaInit();
|
||||||
|
multilevelStorageInit();
|
||||||
|
vnodeClusterInit();
|
||||||
|
vnodeReplicaInit();
|
||||||
|
dnodeGrantInit();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t dnodeInitSystem() {
|
||||||
char temp[128];
|
char temp[128];
|
||||||
struct stat dirstat;
|
struct stat dirstat;
|
||||||
|
|
||||||
|
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_INITIALIZE);
|
||||||
|
|
||||||
taosResolveCRC();
|
taosResolveCRC();
|
||||||
|
|
||||||
tsRebootTime = taosGetTimestampSec();
|
tsRebootTime = taosGetTimestampSec();
|
||||||
|
@ -124,7 +174,7 @@ int dnodeInitSystem() {
|
||||||
|
|
||||||
dnodeAllocModules();
|
dnodeAllocModules();
|
||||||
|
|
||||||
pthread_mutex_init(&dmutex, NULL);
|
dnodeInitVnodesLock();
|
||||||
|
|
||||||
dPrint("starting to initialize TDengine ...");
|
dPrint("starting to initialize TDengine ...");
|
||||||
|
|
||||||
|
@ -151,14 +201,14 @@ int dnodeInitSystem() {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vnodeInitStore() < 0) {
|
if (dnodeOpenVnodes() < 0) {
|
||||||
dError("failed to init vnode storage");
|
dError("failed to init vnode storage");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int numOfThreads = (1.0 - tsRatioOfQueryThreads) * tsNumOfCores * tsNumOfThreadsPerCore / 2.0;
|
int32_t numOfThreads = (1.0 - tsRatioOfQueryThreads) * tsNumOfCores * tsNumOfThreadsPerCore / 2.0;
|
||||||
if (numOfThreads < 1) numOfThreads = 1;
|
if (numOfThreads < 1) numOfThreads = 1;
|
||||||
if (vnodeInitPeer(numOfThreads) < 0) {
|
if (dnodeInitPeers(numOfThreads) < 0) {
|
||||||
dError("failed to init vnode peer communication");
|
dError("failed to init vnode peer communication");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -168,40 +218,21 @@ int dnodeInitSystem() {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vnodeInitShell() < 0) {
|
if (dnodeInitShell() < 0) {
|
||||||
dError("failed to init communication to shell");
|
dError("failed to init communication to shell");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vnodeInitVnodes() < 0) {
|
|
||||||
dError("failed to init store");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
mnodeCountRequestFp = dnodeCountRequestImp;
|
|
||||||
|
|
||||||
dnodeStartModules();
|
dnodeStartModules();
|
||||||
|
|
||||||
|
dnodeSetRunStatus(TSDB_DNODE_RUN_STATUS_RUNING);
|
||||||
|
|
||||||
dPrint("TDengine is initialized successfully");
|
dPrint("TDengine is initialized successfully");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void dnodeResetSystem() {
|
int32_t dnodeInitStorageImp() {
|
||||||
dPrint("reset the system ...");
|
|
||||||
for (int vnode = 0; vnode < TSDB_MAX_VNODES; ++vnode) {
|
|
||||||
vnodeRemoveVnode(vnode);
|
|
||||||
}
|
|
||||||
mgmtStopSystem();
|
|
||||||
}
|
|
||||||
|
|
||||||
void dnodeCountRequestImp(SCountInfo *info) {
|
|
||||||
httpGetReqCount(&info->httpReqNum);
|
|
||||||
info->selectReqNum = atomic_exchange_32(&vnodeSelectReqNum, 0);
|
|
||||||
info->insertReqNum = atomic_exchange_32(&vnodeInsertReqNum, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int dnodeInitStorageImp() {
|
|
||||||
struct stat dirstat;
|
struct stat dirstat;
|
||||||
strcpy(tsDirectory, dataDir);
|
strcpy(tsDirectory, dataDir);
|
||||||
if (stat(dataDir, &dirstat) < 0) {
|
if (stat(dataDir, &dirstat) < 0) {
|
||||||
|
@ -218,17 +249,19 @@ int dnodeInitStorageImp() {
|
||||||
|
|
||||||
sprintf(mgmtDirectory, "%s/mgmt", tsDirectory);
|
sprintf(mgmtDirectory, "%s/mgmt", tsDirectory);
|
||||||
sprintf(tsDirectory, "%s/tsdb", dataDir);
|
sprintf(tsDirectory, "%s/tsdb", dataDir);
|
||||||
dnodeCheckDbRunning(dataDir);
|
dnodeCheckDataDirOpenned(dataDir);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t (*dnodeInitStorage)() = dnodeInitStorageImp;
|
int32_t (*dnodeInitStorage)() = dnodeInitStorageImp;
|
||||||
|
|
||||||
void dnodeCleanupStorageImp() {}
|
void dnodeCleanupStorageImp() {}
|
||||||
|
|
||||||
void (*dnodeCleanupStorage)() = dnodeCleanupStorageImp;
|
void (*dnodeCleanupStorage)() = dnodeCleanupStorageImp;
|
||||||
|
|
||||||
int32_t dnodeInitQueryQHandle() {
|
static int32_t dnodeInitQueryQHandle() {
|
||||||
int numOfThreads = tsRatioOfQueryThreads * tsNumOfCores * tsNumOfThreadsPerCore;
|
int32_t numOfThreads = tsRatioOfQueryThreads * tsNumOfCores * tsNumOfThreadsPerCore;
|
||||||
if (numOfThreads < 1) {
|
if (numOfThreads < 1) {
|
||||||
numOfThreads = 1;
|
numOfThreads = 1;
|
||||||
}
|
}
|
||||||
|
@ -241,8 +274,9 @@ int32_t dnodeInitQueryQHandle() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t dnodeInitTmrCtl() {
|
static int32_t dnodeInitTmrCtl() {
|
||||||
vnodeTmrCtrl = taosTmrInit(TSDB_MAX_VNODES * (tsVnodePeers + 10) + tsSessionsPerVnode + 1000, 200, 60000, "DND-vnode");
|
vnodeTmrCtrl = taosTmrInit(TSDB_MAX_VNODES * (tsVnodePeers + 10) + tsSessionsPerVnode + 1000, 200, 60000,
|
||||||
|
"DND-vnode");
|
||||||
if (vnodeTmrCtrl == NULL) {
|
if (vnodeTmrCtrl == NULL) {
|
||||||
dError("failed to init timer, exit");
|
dError("failed to init timer, exit");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -251,22 +285,39 @@ int32_t dnodeInitTmrCtl() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t dnodeInitRpcQHandle() {
|
static int32_t dnodeInitRpcQHandle() {
|
||||||
tsMaxQueues = (1.0 - tsRatioOfQueryThreads) * tsNumOfCores * tsNumOfThreadsPerCore / 2.0;
|
tsMaxQueues = (1.0 - tsRatioOfQueryThreads) * tsNumOfCores * tsNumOfThreadsPerCore / 2.0;
|
||||||
if (tsMaxQueues < 1) tsMaxQueues = 1;
|
if (tsMaxQueues < 1) {
|
||||||
|
tsMaxQueues = 1;
|
||||||
|
}
|
||||||
|
|
||||||
rpcQhandle = malloc(tsMaxQueues * sizeof(void *));
|
rpcQhandle = malloc(tsMaxQueues * sizeof(void *));
|
||||||
|
|
||||||
for (int i=0; i< tsMaxQueues; ++i )
|
for (int32_t i = 0; i < tsMaxQueues; ++i) {
|
||||||
rpcQhandle[i] = taosInitScheduler(tsSessionsPerVnode, 1, "dnode");
|
rpcQhandle[i] = taosInitScheduler(tsSessionsPerVnode, 1, "dnode");
|
||||||
|
}
|
||||||
|
|
||||||
dmQhandle = taosInitScheduler(tsSessionsPerVnode, 1, "mgmt");
|
dmQhandle = taosInitScheduler(tsSessionsPerVnode, 1, "mgmt");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t dnodeCheckSystemImp() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t (*dnodeCheckSystem)() = dnodeCheckSystemImp;
|
||||||
|
|
||||||
|
void dnodeParseParameterKImp() {}
|
||||||
|
|
||||||
|
void (*dnodeParseParameterK)() = dnodeParseParameterKImp;
|
||||||
|
|
||||||
|
int32_t dnodeInitPeersImp(int32_t numOfThreads) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t (*dnodeInitPeers)(int32_t numOfThreads) = dnodeInitPeersImp;
|
||||||
|
|
||||||
|
|
||||||
int dnodeCheckSystemImp() { return 0; }
|
|
||||||
int (*dnodeCheckSystem)() = dnodeCheckSystemImp;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "dnodeWrite.h"
|
#include "dnodeWrite.h"
|
||||||
|
|
||||||
#include "taoserror.h"
|
#include "taoserror.h"
|
||||||
|
|
||||||
int32_t dnodeCheckTableExist(char *tableId) {
|
int32_t dnodeCheckTableExist(char *tableId) {
|
||||||
|
@ -26,7 +25,7 @@ int32_t dnodeWriteData(SShellSubmitMsg *msg) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t dnodeCreateNormalTable(SCreateNormalTableMsg *table); {
|
int32_t dnodeCreateNormalTable(SCreateNormalTableMsg *table) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,13 @@ extern "C" {
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
#include "tsched.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int32_t selectReqNum;
|
||||||
|
int32_t insertReqNum;
|
||||||
|
int32_t httpReqNum;
|
||||||
|
} SDnodeStatisInfo;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char id[20];
|
char id[20];
|
||||||
|
@ -32,7 +39,7 @@ typedef struct {
|
||||||
} SMgmtObj;
|
} SMgmtObj;
|
||||||
|
|
||||||
// global variables
|
// global variables
|
||||||
extern pthread_mutex_t dmutex;
|
extern uint32_t tsRebootTime;
|
||||||
|
|
||||||
// dnodeCluster
|
// dnodeCluster
|
||||||
extern void (*dnodeStartModules)();
|
extern void (*dnodeStartModules)();
|
||||||
|
@ -52,11 +59,15 @@ extern int (*dnodeInitMgmt)();
|
||||||
extern int32_t (*dnodeInitStorage)();
|
extern int32_t (*dnodeInitStorage)();
|
||||||
extern void (*dnodeCleanupStorage)();
|
extern void (*dnodeCleanupStorage)();
|
||||||
|
|
||||||
void dnodeCheckDbRunning(const char* dir);
|
void dnodeCheckDataDirOpenned(const char* dir);
|
||||||
|
|
||||||
|
|
||||||
void dnodeProcessMsgFromMgmtImp(SSchedMsg *sched);
|
void dnodeProcessMsgFromMgmtImp(SSchedMsg *sched);
|
||||||
|
|
||||||
|
|
||||||
|
void dnodeLockVnodes();
|
||||||
|
void dnodeUnLockVnodes();
|
||||||
|
SDnodeStatisInfo dnodeGetStatisInfo();
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -42,4 +42,6 @@
|
||||||
#define httpLWarn(...) taosLogWarn(__VA_ARGS__) httpWarn(__VA_ARGS__)
|
#define httpLWarn(...) taosLogWarn(__VA_ARGS__) httpWarn(__VA_ARGS__)
|
||||||
#define httpLPrint(...) taosLogPrint(__VA_ARGS__) httpPrint(__VA_ARGS__)
|
#define httpLPrint(...) taosLogPrint(__VA_ARGS__) httpPrint(__VA_ARGS__)
|
||||||
|
|
||||||
|
int32_t httpGetReqCount();
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -20,6 +20,5 @@ int httpInitSystem();
|
||||||
int httpStartSystem();
|
int httpStartSystem();
|
||||||
void httpStopSystem();
|
void httpStopSystem();
|
||||||
void httpCleanUpSystem();
|
void httpCleanUpSystem();
|
||||||
void httpGetReqCount(int32_t *httpConns);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -146,10 +146,9 @@ void httpCleanUpSystem() {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void httpGetReqCount(int32_t *httpReqestNum) {
|
int32_t httpGetReqCount() {
|
||||||
if (httpServer != NULL) {
|
if (httpServer != NULL) {
|
||||||
*httpReqestNum = atomic_exchange_32(&httpServer->requestNum, 0);
|
return atomic_exchange_32(&httpServer->requestNum, 0);
|
||||||
} else {
|
|
||||||
*httpReqestNum = 0;
|
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,12 +23,6 @@ int monitorStartSystem();
|
||||||
void monitorStopSystem();
|
void monitorStopSystem();
|
||||||
void monitorCleanUpSystem();
|
void monitorCleanUpSystem();
|
||||||
|
|
||||||
typedef struct {
|
extern void (*mnodeCountRequestFp)(SDnodeStatisInfo *info);
|
||||||
int selectReqNum;
|
|
||||||
int insertReqNum;
|
|
||||||
int httpReqNum;
|
|
||||||
} SCountInfo;
|
|
||||||
|
|
||||||
extern void (*mnodeCountRequestFp)(SCountInfo *info);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -77,7 +77,7 @@ void monitorSaveAcctLog(char *acctId, int64_t currentPointsPerSecond, int64_t ma
|
||||||
int64_t totalOutbound, int64_t maxOutbound, int64_t totalDbs, int64_t maxDbs,
|
int64_t totalOutbound, int64_t maxOutbound, int64_t totalDbs, int64_t maxDbs,
|
||||||
int64_t totalUsers, int64_t maxUsers, int64_t totalStreams, int64_t maxStreams,
|
int64_t totalUsers, int64_t maxUsers, int64_t totalStreams, int64_t maxStreams,
|
||||||
int64_t totalConns, int64_t maxConns, int8_t accessState);
|
int64_t totalConns, int64_t maxConns, int8_t accessState);
|
||||||
void (*mnodeCountRequestFp)(SCountInfo *info) = NULL;
|
void (*mnodeCountRequestFp)(SDnodeStatisInfo *info) = NULL;
|
||||||
void monitorExecuteSQL(char *sql);
|
void monitorExecuteSQL(char *sql);
|
||||||
|
|
||||||
void monitorCheckDiskUsage(void *para, void *unused) {
|
void monitorCheckDiskUsage(void *para, void *unused) {
|
||||||
|
@ -333,7 +333,7 @@ int monitorBuildBandSql(char *sql) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int monitorBuildReqSql(char *sql) {
|
int monitorBuildReqSql(char *sql) {
|
||||||
SCountInfo info;
|
SDnodeStatisInfo info;
|
||||||
info.httpReqNum = info.insertReqNum = info.selectReqNum = 0;
|
info.httpReqNum = info.insertReqNum = info.selectReqNum = 0;
|
||||||
(*mnodeCountRequestFp)(&info);
|
(*mnodeCountRequestFp)(&info);
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
|
||||||
PROJECT(TDengine)
|
|
||||||
|
|
||||||
ADD_SUBDIRECTORY(detail)
|
|
||||||
|
|
||||||
IF (TD_EDGE)
|
|
||||||
ADD_SUBDIRECTORY(lite)
|
|
||||||
ENDIF ()
|
|
|
@ -1,46 +0,0 @@
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
|
||||||
PROJECT(TDengine)
|
|
||||||
|
|
||||||
IF ((TD_LINUX_64) OR (TD_LINUX_32 AND TD_ARM))
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/modules/http/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/modules/monitor/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_ENTERPRISE_DIR}/src/util/cluster/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_OS_DIR}/inc)
|
|
||||||
INCLUDE_DIRECTORIES(inc)
|
|
||||||
AUX_SOURCE_DIRECTORY(./src SRC)
|
|
||||||
LIST(REMOVE_ITEM SRC ./src/vnodeFileUtil.c)
|
|
||||||
LIST(REMOVE_ITEM SRC ./src/taosGrant.c)
|
|
||||||
|
|
||||||
ADD_EXECUTABLE(taosd ${SRC})
|
|
||||||
|
|
||||||
IF (TD_PAGMODE_LITE)
|
|
||||||
TARGET_LINK_LIBRARIES(taosd taos trpc tutil sdb monitor pthread http)
|
|
||||||
ELSE ()
|
|
||||||
TARGET_LINK_LIBRARIES(taosd taos_static trpc tutil sdb monitor pthread http)
|
|
||||||
ENDIF ()
|
|
||||||
|
|
||||||
IF (TD_EDGE)
|
|
||||||
TARGET_LINK_LIBRARIES(taosd taosd_edge)
|
|
||||||
ELSE ()
|
|
||||||
TARGET_LINK_LIBRARIES(taosd taosd_cluster)
|
|
||||||
ENDIF ()
|
|
||||||
|
|
||||||
SET(PREPARE_ENV_CMD "prepare_env_cmd")
|
|
||||||
SET(PREPARE_ENV_TARGET "prepare_env_target")
|
|
||||||
ADD_CUSTOM_COMMAND(OUTPUT ${PREPARE_ENV_CMD}
|
|
||||||
POST_BUILD
|
|
||||||
COMMAND echo "make test directory"
|
|
||||||
DEPENDS taosd
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${TD_TESTS_OUTPUT_DIR}/cfg/
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${TD_TESTS_OUTPUT_DIR}/log/
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${TD_TESTS_OUTPUT_DIR}/data/
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo dataDir ${TD_TESTS_OUTPUT_DIR}/data > ${TD_TESTS_OUTPUT_DIR}/cfg/taos.cfg
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo logDir ${TD_TESTS_OUTPUT_DIR}/log >> ${TD_TESTS_OUTPUT_DIR}/cfg/taos.cfg
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo charset UTF-8 >> ${TD_TESTS_OUTPUT_DIR}/cfg/taos.cfg
|
|
||||||
COMMENT "prepare taosd environment")
|
|
||||||
ADD_CUSTOM_TARGET(${PREPARE_ENV_TARGET} ALL WORKING_DIRECTORY ${TD_EXECUTABLE_OUTPUT_PATH} DEPENDS ${PREPARE_ENV_CMD})
|
|
||||||
|
|
||||||
ENDIF ()
|
|
|
@ -1,17 +0,0 @@
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
|
||||||
PROJECT(TDengine)
|
|
||||||
|
|
||||||
IF ((TD_LINUX_64) OR (TD_LINUX_32 AND TD_ARM))
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/client/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/modules/http/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/modules/monitor/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/src/system/detail/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_COMMUNITY_DIR}/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_ENTERPRISE_DIR}/src/util/cluster/inc)
|
|
||||||
INCLUDE_DIRECTORIES(${TD_OS_DIR}/inc)
|
|
||||||
INCLUDE_DIRECTORIES(inc)
|
|
||||||
|
|
||||||
AUX_SOURCE_DIRECTORY(./src SRC)
|
|
||||||
ADD_LIBRARY(taosd_edge ${SRC})
|
|
||||||
ENDIF ()
|
|
|
@ -27,7 +27,7 @@ extern "C" {
|
||||||
/*
|
/*
|
||||||
* Initialize the resources
|
* Initialize the resources
|
||||||
*/
|
*/
|
||||||
int32_t vnodeInitPeer(int numOfThreads);
|
int32_t vnodeInitPeers(int numOfThreads);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free the resources
|
* Free the resources
|
||||||
|
|
|
@ -302,7 +302,6 @@ typedef struct {
|
||||||
|
|
||||||
// internal globals
|
// internal globals
|
||||||
extern int tsMeterSizeOnFile;
|
extern int tsMeterSizeOnFile;
|
||||||
extern uint32_t tsRebootTime;
|
|
||||||
extern void ** rpcQhandle;
|
extern void ** rpcQhandle;
|
||||||
|
|
||||||
extern void * queryQhandle;
|
extern void * queryQhandle;
|
||||||
|
|
|
@ -22,18 +22,6 @@ extern "C" {
|
||||||
|
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
int sid;
|
|
||||||
int vnode;
|
|
||||||
uint32_t ip;
|
|
||||||
uint16_t port;
|
|
||||||
int count; // track the number of imports
|
|
||||||
int code; // track the code of imports
|
|
||||||
int numOfTotalPoints; // track the total number of points imported
|
|
||||||
void * thandle; // handle from TAOS layer
|
|
||||||
void * qhandle;
|
|
||||||
} SShellObj;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue