feat: support uniq active code
This commit is contained in:
parent
70006bb711
commit
1f5384ad40
|
@ -62,6 +62,7 @@ typedef struct {
|
||||||
} SGrantedInfo;
|
} SGrantedInfo;
|
||||||
|
|
||||||
int32_t grantCheck(EGrantType grant);
|
int32_t grantCheck(EGrantType grant);
|
||||||
|
int32_t grantAlterActiveCode(const char* active);
|
||||||
char* grantGetMachineId();
|
char* grantGetMachineId();
|
||||||
|
|
||||||
#ifndef GRANTS_CFG
|
#ifndef GRANTS_CFG
|
||||||
|
|
|
@ -1600,6 +1600,7 @@ typedef struct {
|
||||||
SEp ep;
|
SEp ep;
|
||||||
char active[TSDB_ACTIVE_KEY_LEN];
|
char active[TSDB_ACTIVE_KEY_LEN];
|
||||||
char connActive[TSDB_CONN_ACTIVE_KEY_LEN];
|
char connActive[TSDB_CONN_ACTIVE_KEY_LEN];
|
||||||
|
char machineId[TSDB_MACHINE_ID_LEN + 1];
|
||||||
} SDnodeInfo;
|
} SDnodeInfo;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -74,111 +74,111 @@
|
||||||
#define TK_NK_IPTOKEN 55
|
#define TK_NK_IPTOKEN 55
|
||||||
#define TK_FORCE 56
|
#define TK_FORCE 56
|
||||||
#define TK_UNSAFE 57
|
#define TK_UNSAFE 57
|
||||||
#define TK_LOCAL 58
|
#define TK_CLUSTER 58
|
||||||
#define TK_QNODE 59
|
#define TK_LOCAL 59
|
||||||
#define TK_BNODE 60
|
#define TK_QNODE 60
|
||||||
#define TK_SNODE 61
|
#define TK_BNODE 61
|
||||||
#define TK_MNODE 62
|
#define TK_SNODE 62
|
||||||
#define TK_VNODE 63
|
#define TK_MNODE 63
|
||||||
#define TK_DATABASE 64
|
#define TK_VNODE 64
|
||||||
#define TK_USE 65
|
#define TK_DATABASE 65
|
||||||
#define TK_FLUSH 66
|
#define TK_USE 66
|
||||||
#define TK_TRIM 67
|
#define TK_FLUSH 67
|
||||||
#define TK_COMPACT 68
|
#define TK_TRIM 68
|
||||||
#define TK_IF 69
|
#define TK_COMPACT 69
|
||||||
#define TK_NOT 70
|
#define TK_IF 70
|
||||||
#define TK_EXISTS 71
|
#define TK_NOT 71
|
||||||
#define TK_BUFFER 72
|
#define TK_EXISTS 72
|
||||||
#define TK_CACHEMODEL 73
|
#define TK_BUFFER 73
|
||||||
#define TK_CACHESIZE 74
|
#define TK_CACHEMODEL 74
|
||||||
#define TK_COMP 75
|
#define TK_CACHESIZE 75
|
||||||
#define TK_DURATION 76
|
#define TK_COMP 76
|
||||||
#define TK_NK_VARIABLE 77
|
#define TK_DURATION 77
|
||||||
#define TK_MAXROWS 78
|
#define TK_NK_VARIABLE 78
|
||||||
#define TK_MINROWS 79
|
#define TK_MAXROWS 79
|
||||||
#define TK_KEEP 80
|
#define TK_MINROWS 80
|
||||||
#define TK_PAGES 81
|
#define TK_KEEP 81
|
||||||
#define TK_PAGESIZE 82
|
#define TK_PAGES 82
|
||||||
#define TK_TSDB_PAGESIZE 83
|
#define TK_PAGESIZE 83
|
||||||
#define TK_PRECISION 84
|
#define TK_TSDB_PAGESIZE 84
|
||||||
#define TK_REPLICA 85
|
#define TK_PRECISION 85
|
||||||
#define TK_VGROUPS 86
|
#define TK_REPLICA 86
|
||||||
#define TK_SINGLE_STABLE 87
|
#define TK_VGROUPS 87
|
||||||
#define TK_RETENTIONS 88
|
#define TK_SINGLE_STABLE 88
|
||||||
#define TK_SCHEMALESS 89
|
#define TK_RETENTIONS 89
|
||||||
#define TK_WAL_LEVEL 90
|
#define TK_SCHEMALESS 90
|
||||||
#define TK_WAL_FSYNC_PERIOD 91
|
#define TK_WAL_LEVEL 91
|
||||||
#define TK_WAL_RETENTION_PERIOD 92
|
#define TK_WAL_FSYNC_PERIOD 92
|
||||||
#define TK_WAL_RETENTION_SIZE 93
|
#define TK_WAL_RETENTION_PERIOD 93
|
||||||
#define TK_WAL_ROLL_PERIOD 94
|
#define TK_WAL_RETENTION_SIZE 94
|
||||||
#define TK_WAL_SEGMENT_SIZE 95
|
#define TK_WAL_ROLL_PERIOD 95
|
||||||
#define TK_STT_TRIGGER 96
|
#define TK_WAL_SEGMENT_SIZE 96
|
||||||
#define TK_TABLE_PREFIX 97
|
#define TK_STT_TRIGGER 97
|
||||||
#define TK_TABLE_SUFFIX 98
|
#define TK_TABLE_PREFIX 98
|
||||||
#define TK_KEEP_TIME_OFFSET 99
|
#define TK_TABLE_SUFFIX 99
|
||||||
#define TK_NK_COLON 100
|
#define TK_KEEP_TIME_OFFSET 100
|
||||||
#define TK_BWLIMIT 101
|
#define TK_NK_COLON 101
|
||||||
#define TK_START 102
|
#define TK_BWLIMIT 102
|
||||||
#define TK_TIMESTAMP 103
|
#define TK_START 103
|
||||||
#define TK_END 104
|
#define TK_TIMESTAMP 104
|
||||||
#define TK_TABLE 105
|
#define TK_END 105
|
||||||
#define TK_NK_LP 106
|
#define TK_TABLE 106
|
||||||
#define TK_NK_RP 107
|
#define TK_NK_LP 107
|
||||||
#define TK_STABLE 108
|
#define TK_NK_RP 108
|
||||||
#define TK_COLUMN 109
|
#define TK_STABLE 109
|
||||||
#define TK_MODIFY 110
|
#define TK_COLUMN 110
|
||||||
#define TK_RENAME 111
|
#define TK_MODIFY 111
|
||||||
#define TK_TAG 112
|
#define TK_RENAME 112
|
||||||
#define TK_SET 113
|
#define TK_TAG 113
|
||||||
#define TK_NK_EQ 114
|
#define TK_SET 114
|
||||||
#define TK_USING 115
|
#define TK_NK_EQ 115
|
||||||
#define TK_TAGS 116
|
#define TK_USING 116
|
||||||
#define TK_BOOL 117
|
#define TK_TAGS 117
|
||||||
#define TK_TINYINT 118
|
#define TK_BOOL 118
|
||||||
#define TK_SMALLINT 119
|
#define TK_TINYINT 119
|
||||||
#define TK_INT 120
|
#define TK_SMALLINT 120
|
||||||
#define TK_INTEGER 121
|
#define TK_INT 121
|
||||||
#define TK_BIGINT 122
|
#define TK_INTEGER 122
|
||||||
#define TK_FLOAT 123
|
#define TK_BIGINT 123
|
||||||
#define TK_DOUBLE 124
|
#define TK_FLOAT 124
|
||||||
#define TK_BINARY 125
|
#define TK_DOUBLE 125
|
||||||
#define TK_NCHAR 126
|
#define TK_BINARY 126
|
||||||
#define TK_UNSIGNED 127
|
#define TK_NCHAR 127
|
||||||
#define TK_JSON 128
|
#define TK_UNSIGNED 128
|
||||||
#define TK_VARCHAR 129
|
#define TK_JSON 129
|
||||||
#define TK_MEDIUMBLOB 130
|
#define TK_VARCHAR 130
|
||||||
#define TK_BLOB 131
|
#define TK_MEDIUMBLOB 131
|
||||||
#define TK_VARBINARY 132
|
#define TK_BLOB 132
|
||||||
#define TK_GEOMETRY 133
|
#define TK_VARBINARY 133
|
||||||
#define TK_DECIMAL 134
|
#define TK_GEOMETRY 134
|
||||||
#define TK_COMMENT 135
|
#define TK_DECIMAL 135
|
||||||
#define TK_MAX_DELAY 136
|
#define TK_COMMENT 136
|
||||||
#define TK_WATERMARK 137
|
#define TK_MAX_DELAY 137
|
||||||
#define TK_ROLLUP 138
|
#define TK_WATERMARK 138
|
||||||
#define TK_TTL 139
|
#define TK_ROLLUP 139
|
||||||
#define TK_SMA 140
|
#define TK_TTL 140
|
||||||
#define TK_DELETE_MARK 141
|
#define TK_SMA 141
|
||||||
#define TK_FIRST 142
|
#define TK_DELETE_MARK 142
|
||||||
#define TK_LAST 143
|
#define TK_FIRST 143
|
||||||
#define TK_SHOW 144
|
#define TK_LAST 144
|
||||||
#define TK_PRIVILEGES 145
|
#define TK_SHOW 145
|
||||||
#define TK_DATABASES 146
|
#define TK_PRIVILEGES 146
|
||||||
#define TK_TABLES 147
|
#define TK_DATABASES 147
|
||||||
#define TK_STABLES 148
|
#define TK_TABLES 148
|
||||||
#define TK_MNODES 149
|
#define TK_STABLES 149
|
||||||
#define TK_QNODES 150
|
#define TK_MNODES 150
|
||||||
#define TK_FUNCTIONS 151
|
#define TK_QNODES 151
|
||||||
#define TK_INDEXES 152
|
#define TK_FUNCTIONS 152
|
||||||
#define TK_ACCOUNTS 153
|
#define TK_INDEXES 153
|
||||||
#define TK_APPS 154
|
#define TK_ACCOUNTS 154
|
||||||
#define TK_CONNECTIONS 155
|
#define TK_APPS 155
|
||||||
#define TK_LICENCES 156
|
#define TK_CONNECTIONS 156
|
||||||
#define TK_GRANTS 157
|
#define TK_LICENCES 157
|
||||||
#define TK_QUERIES 158
|
#define TK_GRANTS 158
|
||||||
#define TK_SCORES 159
|
#define TK_QUERIES 159
|
||||||
#define TK_TOPICS 160
|
#define TK_SCORES 160
|
||||||
#define TK_VARIABLES 161
|
#define TK_TOPICS 161
|
||||||
#define TK_CLUSTER 162
|
#define TK_VARIABLES 162
|
||||||
#define TK_BNODES 163
|
#define TK_BNODES 163
|
||||||
#define TK_SNODES 164
|
#define TK_SNODES 164
|
||||||
#define TK_TRANSACTIONS 165
|
#define TK_TRANSACTIONS 165
|
||||||
|
|
|
@ -562,6 +562,7 @@ int32_t* taosGetErrno();
|
||||||
#define TSDB_CODE_GRANT_GEN_APP_LIMIT TAOS_DEF_ERROR_CODE(0, 0x0813)
|
#define TSDB_CODE_GRANT_GEN_APP_LIMIT TAOS_DEF_ERROR_CODE(0, 0x0813)
|
||||||
#define TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN TAOS_DEF_ERROR_CODE(0, 0x0814)
|
#define TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN TAOS_DEF_ERROR_CODE(0, 0x0814)
|
||||||
#define TSDB_CODE_GRANT_PAR_IVLD_DIST TAOS_DEF_ERROR_CODE(0, 0x0815)
|
#define TSDB_CODE_GRANT_PAR_IVLD_DIST TAOS_DEF_ERROR_CODE(0, 0x0815)
|
||||||
|
#define TSDB_CODE_GRANT_INVALID_HW TAOS_DEF_ERROR_CODE(0, 0x0816)
|
||||||
|
|
||||||
// sync
|
// sync
|
||||||
// #define TSDB_CODE_SYN_INVALID_CONFIG TAOS_DEF_ERROR_CODE(0, 0x0900) // 2.x
|
// #define TSDB_CODE_SYN_INVALID_CONFIG TAOS_DEF_ERROR_CODE(0, 0x0900) // 2.x
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "tglobal.h"
|
#include "tglobal.h"
|
||||||
#include "tgrant.h"
|
#include "tgrant.h"
|
||||||
#include "tqueue.h"
|
#include "tqueue.h"
|
||||||
|
#include "tref.h"
|
||||||
#include "ttime.h"
|
#include "ttime.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "wal.h"
|
#include "wal.h"
|
||||||
|
@ -106,6 +107,7 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct SMnode {
|
typedef struct SMnode {
|
||||||
int32_t selfDnodeId;
|
int32_t selfDnodeId;
|
||||||
|
int32_t refMgmt;
|
||||||
int64_t clusterId;
|
int64_t clusterId;
|
||||||
TdThread thread;
|
TdThread thread;
|
||||||
TdThreadRwlock lock;
|
TdThreadRwlock lock;
|
||||||
|
@ -133,6 +135,10 @@ typedef struct SMnode {
|
||||||
int64_t ipWhiteVer;
|
int64_t ipWhiteVer;
|
||||||
} SMnode;
|
} SMnode;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
RefFp freeFp;
|
||||||
|
} SMnodeRefInfo;
|
||||||
|
|
||||||
void mndSetMsgHandle(SMnode *pMnode, tmsg_t msgType, MndMsgFp fp);
|
void mndSetMsgHandle(SMnode *pMnode, tmsg_t msgType, MndMsgFp fp);
|
||||||
int64_t mndGenerateUid(const char *name, int32_t len);
|
int64_t mndGenerateUid(const char *name, int32_t len);
|
||||||
|
|
||||||
|
|
|
@ -434,6 +434,7 @@ static int32_t mndProcessConfigClusterReq(SRpcMsg *pReq) {
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
// code = xxx;
|
// code = xxx;
|
||||||
|
code = grantAlterActiveCode(cfgReq.value);
|
||||||
#else
|
#else
|
||||||
code = TSDB_CODE_OPS_NOT_SUPPORT;
|
code = TSDB_CODE_OPS_NOT_SUPPORT;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
|
@ -447,11 +448,11 @@ _exit:
|
||||||
tFreeSMCfgClusterReq(&cfgReq);
|
tFreeSMCfgClusterReq(&cfgReq);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
terrno = code;
|
terrno = code;
|
||||||
mError("cluster: failed to config:%s, %s since %s", cfgReq.config, cfgReq.value, terrstr());
|
mError("cluster: failed to config:%s %s since %s", cfgReq.config, cfgReq.value, terrstr());
|
||||||
} else {
|
} else {
|
||||||
mError("cluster: success to config:%s, %s", cfgReq.config, cfgReq.value);
|
mInfo("cluster: success to config:%s %s", cfgReq.config, cfgReq.value);
|
||||||
}
|
}
|
||||||
return -1;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mndProcessConfigClusterRsp(SRpcMsg *pRsp) {
|
static int32_t mndProcessConfigClusterRsp(SRpcMsg *pRsp) {
|
||||||
|
|
|
@ -59,8 +59,10 @@ enum {
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char machineId[TSDB_MACHINE_ID_LEN + 1];
|
SMnodeRefInfo refInfo;
|
||||||
tsem_t sem;
|
int64_t refId;
|
||||||
|
tsem_t sem;
|
||||||
|
char machineId[TSDB_MACHINE_ID_LEN + 1];
|
||||||
} SMachineInfo;
|
} SMachineInfo;
|
||||||
|
|
||||||
static int32_t mndCreateDefaultDnode(SMnode *pMnode);
|
static int32_t mndCreateDefaultDnode(SMnode *pMnode);
|
||||||
|
@ -416,6 +418,7 @@ void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeInfo) {
|
||||||
tstrncpy(dInfo.ep.fqdn, pDnode->fqdn, TSDB_FQDN_LEN);
|
tstrncpy(dInfo.ep.fqdn, pDnode->fqdn, TSDB_FQDN_LEN);
|
||||||
tstrncpy(dInfo.active, pDnode->active, TSDB_ACTIVE_KEY_LEN);
|
tstrncpy(dInfo.active, pDnode->active, TSDB_ACTIVE_KEY_LEN);
|
||||||
tstrncpy(dInfo.connActive, pDnode->connActive, TSDB_CONN_ACTIVE_KEY_LEN);
|
tstrncpy(dInfo.connActive, pDnode->connActive, TSDB_CONN_ACTIVE_KEY_LEN);
|
||||||
|
tstrncpy(dInfo.machineId, pDnode->machineId, TSDB_MACHINE_ID_LEN + 1);
|
||||||
sdbRelease(pSdb, pDnode);
|
sdbRelease(pSdb, pDnode);
|
||||||
if (mndIsMnode(pMnode, pDnode->id)) {
|
if (mndIsMnode(pMnode, pDnode->id)) {
|
||||||
dInfo.isMnode = 1;
|
dInfo.isMnode = 1;
|
||||||
|
@ -743,13 +746,19 @@ _OVER:
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mndSendGetMachineToDnode(SMnode *pMnode, SDnodeObj *pObj, SMachineInfo *pInfo) {
|
static int32_t mndSendGetMachineToDnode(SMnode *pMnode, SDnodeObj *pObj, SMachineInfo *pInfo) {
|
||||||
SRpcMsg rpcMsg = {.pCont = NULL, .contLen = 0, .msgType = TDMT_MND_GET_MACHINE, .info.ahandle = pInfo};
|
SRpcMsg rpcMsg = {.pCont = NULL, .contLen = 0, .msgType = TDMT_MND_GET_MACHINE, .info.ahandle = (void*)pInfo->refId};
|
||||||
SEpSet epSet = {.numOfEps = 1};
|
SEpSet epSet = {.numOfEps = 1};
|
||||||
strncpy(epSet.eps[0].fqdn, pObj->fqdn, TSDB_FQDN_LEN);
|
strncpy(epSet.eps[0].fqdn, pObj->fqdn, TSDB_FQDN_LEN);
|
||||||
epSet.eps[0].port = pObj->port;
|
epSet.eps[0].port = pObj->port;
|
||||||
return tmsgSendReq(&epSet, &rpcMsg);
|
return tmsgSendReq(&epSet, &rpcMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mndDestroyMachineInfo(void *pInfo) {
|
||||||
|
if (pInfo) {
|
||||||
|
tsem_destroy(&((SMachineInfo *)pInfo)->sem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t mndCreateDnode(SMnode *pMnode, SRpcMsg *pReq, SCreateDnodeReq *pCreate) {
|
static int32_t mndCreateDnode(SMnode *pMnode, SRpcMsg *pReq, SCreateDnodeReq *pCreate) {
|
||||||
int32_t code = -1;
|
int32_t code = -1;
|
||||||
SSdbRaw *pRaw = NULL;
|
SSdbRaw *pRaw = NULL;
|
||||||
|
@ -767,7 +776,11 @@ static int32_t mndCreateDnode(SMnode *pMnode, SRpcMsg *pReq, SCreateDnodeReq *pC
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto _OVER;
|
goto _OVER;
|
||||||
}
|
}
|
||||||
|
pInfo->refInfo.freeFp = mndDestroyMachineInfo;
|
||||||
tsem_init(&pInfo->sem, 0, 0);
|
tsem_init(&pInfo->sem, 0, 0);
|
||||||
|
if((pInfo->refId = taosAddRef(pMnode->refMgmt, pInfo)) < 0) {
|
||||||
|
goto _OVER;
|
||||||
|
}
|
||||||
if ((terrno = mndSendGetMachineToDnode(pMnode, &dnodeObj, pInfo)) != 0) {
|
if ((terrno = mndSendGetMachineToDnode(pMnode, &dnodeObj, pInfo)) != 0) {
|
||||||
goto _OVER;
|
goto _OVER;
|
||||||
}
|
}
|
||||||
|
@ -798,8 +811,7 @@ _OVER:
|
||||||
mndTransDrop(pTrans);
|
mndTransDrop(pTrans);
|
||||||
sdbFreeRaw(pRaw);
|
sdbFreeRaw(pRaw);
|
||||||
if (pInfo) {
|
if (pInfo) {
|
||||||
tsem_destroy(&pInfo->sem);
|
taosRemoveRef(pMnode->refMgmt, pInfo->refId);
|
||||||
taosMemoryFree(pInfo);
|
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -1280,10 +1292,16 @@ static int32_t mndProcessGetMachineRsp(SRpcMsg *pRsp) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SMachineInfo *pInfo = pRsp->info.ahandle;
|
SMnode *pMnode = pRsp->info.node;
|
||||||
if (pInfo) {
|
int64_t refId = (int64_t)pRsp->info.ahandle;
|
||||||
memcpy(pInfo->machineId, pRsp->pCont, TSDB_MACHINE_ID_LEN);
|
|
||||||
tsem_post(&pInfo->sem);
|
if (pMnode) {
|
||||||
|
SMachineInfo *pInfo = taosAcquireRef(pMnode->refMgmt, refId);
|
||||||
|
if (pInfo) {
|
||||||
|
memcpy(pInfo->machineId, pRsp->pCont, TSDB_MACHINE_ID_LEN);
|
||||||
|
tsem_post(&pInfo->sem);
|
||||||
|
taosReleaseRef(pMnode->refMgmt, refId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -543,6 +543,14 @@ static void mndSetOptions(SMnode *pMnode, const SMnodeOpt *pOption) {
|
||||||
memcpy(pMnode->syncMgmt.nodeRoles, pOption->nodeRoles, sizeof(pOption->nodeRoles));
|
memcpy(pMnode->syncMgmt.nodeRoles, pOption->nodeRoles, sizeof(pOption->nodeRoles));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mndDestroyRefInfo(void *pInfo) {
|
||||||
|
SMnodeRefInfo *pRefInfo = pInfo;
|
||||||
|
if (pRefInfo && pRefInfo->freeFp) {
|
||||||
|
(*pRefInfo->freeFp)(pInfo);
|
||||||
|
}
|
||||||
|
taosMemoryFree(pInfo);
|
||||||
|
}
|
||||||
|
|
||||||
SMnode *mndOpen(const char *path, const SMnodeOpt *pOption) {
|
SMnode *mndOpen(const char *path, const SMnodeOpt *pOption) {
|
||||||
mInfo("start to open mnode in %s", path);
|
mInfo("start to open mnode in %s", path);
|
||||||
|
|
||||||
|
@ -567,7 +575,16 @@ SMnode *mndOpen(const char *path, const SMnodeOpt *pOption) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t code = mndCreateDir(pMnode, path);
|
int32_t code = 0;
|
||||||
|
if ((pMnode->refMgmt = taosOpenRef(200, mndDestroyRefInfo)) < 0) {
|
||||||
|
code = terrno;
|
||||||
|
mError("failed to open mnode since %s", terrstr());
|
||||||
|
mndClose(pMnode);
|
||||||
|
terrno = code;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
code = mndCreateDir(pMnode, path);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
code = terrno;
|
code = terrno;
|
||||||
mError("failed to open mnode since %s", terrstr());
|
mError("failed to open mnode since %s", terrstr());
|
||||||
|
@ -610,6 +627,7 @@ void mndClose(SMnode *pMnode) {
|
||||||
if (pMnode != NULL) {
|
if (pMnode != NULL) {
|
||||||
mInfo("start to close mnode");
|
mInfo("start to close mnode");
|
||||||
mndCleanupSteps(pMnode, -1);
|
mndCleanupSteps(pMnode, -1);
|
||||||
|
taosCloseRef(pMnode->refMgmt);
|
||||||
taosMemoryFreeClear(pMnode->path);
|
taosMemoryFreeClear(pMnode->path);
|
||||||
taosMemoryFreeClear(pMnode);
|
taosMemoryFreeClear(pMnode);
|
||||||
mInfo("mnode is closed");
|
mInfo("mnode is closed");
|
||||||
|
|
|
@ -449,6 +449,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_GEN_IVLD_KEY, "Invalid key to gen ac
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_GEN_APP_LIMIT, "Limited app num to gen active code")
|
TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_GEN_APP_LIMIT, "Limited app num to gen active code")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN, "Invalid klen to encode active code")
|
TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN, "Invalid klen to encode active code")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_PAR_IVLD_DIST, "Invalid dist to parse active code")
|
TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_PAR_IVLD_DIST, "Invalid dist to parse active code")
|
||||||
|
TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_INVALID_HW, "Invalid hardware")
|
||||||
|
|
||||||
// sync
|
// sync
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_SYN_TIMEOUT, "Sync timeout")
|
TAOS_DEFINE_ERROR(TSDB_CODE_SYN_TIMEOUT, "Sync timeout")
|
||||||
|
|
Loading…
Reference in New Issue