diff --git a/include/common/tmsg.h b/include/common/tmsg.h
index 19897ecb24a3a30db5fa6c1bf730c568b295b21a..affab8903cc502d225ff1452266a0f574d995157 100644
--- a/include/common/tmsg.h
+++ b/include/common/tmsg.h
@@ -345,18 +345,18 @@ typedef struct {
int32_t maxStreams;
int32_t accessState; // Configured only by command
int64_t maxStorage; // In unit of GB
-} SCreateAcctMsg, SAlterAcctMsg;
+} SCreateAcctReq, SAlterAcctReq;
typedef struct {
char user[TSDB_USER_LEN];
-} SDropUserMsg, SDropAcctMsg;
+} SDropUserReq, SDropAcctReq;
typedef struct {
int8_t type;
char user[TSDB_USER_LEN];
char pass[TSDB_PASSWORD_LEN];
int8_t superUser; // denote if it is a super user or not
-} SCreateUserMsg, SAlterUserMsg;
+} SCreateUserReq, SAlterUserReq;
typedef struct {
int32_t contLen;
@@ -851,15 +851,15 @@ typedef struct {
typedef struct {
int32_t dnodeId;
-} SMCreateQnodeMsg, SMDropQnodeMsg, SDCreateQnodeMsg, SDDropQnodeMsg;
+} SMCreateQnodeReq, SMDropQnodeReq, SDCreateQnodeReq, SDDropQnodeReq;
typedef struct {
int32_t dnodeId;
-} SMCreateSnodeMsg, SMDropSnodeMsg, SDCreateSnodeMsg, SDDropSnodeMsg;
+} SMCreateSnodeReq, SMDropSnodeReq, SDCreateSnodeReq, SDDropSnodeReq;
typedef struct {
int32_t dnodeId;
-} SMCreateBnodeMsg, SMDropBnodeMsg, SDCreateBnodeMsg, SDDropBnodeMsg;
+} SMCreateBnodeReq, SMDropBnodeReq, SDCreateBnodeReq, SDDropBnodeReq;
typedef struct {
int32_t dnodeId;
diff --git a/include/dnode/bnode/bnode.h b/include/dnode/bnode/bnode.h
index 23cc3ca6176eb9bd5ff88b48bc62befb56687f2d..3cc26861aba988856a2e951116765222adb4b8c8 100644
--- a/include/dnode/bnode/bnode.h
+++ b/include/dnode/bnode/bnode.h
@@ -23,9 +23,9 @@ extern "C" {
/* ------------------------ TYPES EXPOSED ------------------------ */
typedef struct SDnode SDnode;
typedef struct SBnode SBnode;
-typedef void (*SendMsgToDnodeFp)(SDnode *pDnode, struct SEpSet *epSet, struct SRpcMsg *rpcMsg);
-typedef void (*SendMsgToMnodeFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
-typedef void (*SendRedirectMsgFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef int32_t (*SendReqToDnodeFp)(SDnode *pDnode, struct SEpSet *epSet, struct SRpcMsg *rpcMsg);
+typedef int32_t (*SendReqToMnodeFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef void (*SendRedirectRspFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
typedef struct {
int64_t numOfErrors;
@@ -40,9 +40,9 @@ typedef struct {
int64_t clusterId;
SBnodeCfg cfg;
SDnode *pDnode;
- SendMsgToDnodeFp sendMsgToDnodeFp;
- SendMsgToMnodeFp sendMsgToMnodeFp;
- SendRedirectMsgFp sendRedirectMsgFp;
+ SendReqToDnodeFp sendReqToDnodeFp;
+ SendReqToMnodeFp sendReqToMnodeFp;
+ SendRedirectRspFp sendRedirectRspFp;
} SBnodeOpt;
/* ------------------------ SBnode ------------------------ */
diff --git a/include/dnode/mnode/mnode.h b/include/dnode/mnode/mnode.h
index a288e3e6309ee64cd64579c5d72b7a43e447c72d..de4b4e4e89d1418391aa6daf519c77bea8013c72 100644
--- a/include/dnode/mnode/mnode.h
+++ b/include/dnode/mnode/mnode.h
@@ -24,9 +24,10 @@ extern "C" {
typedef struct SDnode SDnode;
typedef struct SMnode SMnode;
typedef struct SMnodeMsg SMnodeMsg;
-typedef void (*SendMsgToDnodeFp)(SDnode *pDnode, struct SEpSet *epSet, struct SRpcMsg *rpcMsg);
-typedef void (*SendMsgToMnodeFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
-typedef void (*SendRedirectMsgFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef int32_t (*SendReqToDnodeFp)(SDnode *pDnode, struct SEpSet *epSet, struct SRpcMsg *rpcMsg);
+typedef int32_t (*SendReqToMnodeFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef int32_t (*PutReqToMWriteQFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef void (*SendRedirectRspFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
typedef struct SMnodeLoad {
int64_t numOfDnode;
@@ -62,9 +63,10 @@ typedef struct {
SReplica replicas[TSDB_MAX_REPLICA];
SMnodeCfg cfg;
SDnode *pDnode;
- SendMsgToDnodeFp sendMsgToDnodeFp;
- SendMsgToMnodeFp sendMsgToMnodeFp;
- SendRedirectMsgFp sendRedirectMsgFp;
+ PutReqToMWriteQFp putReqToMWriteQFp;
+ SendReqToDnodeFp sendReqToDnodeFp;
+ SendReqToMnodeFp sendReqToMnodeFp;
+ SendRedirectRspFp sendRedirectRspFp;
} SMnodeOpt;
/* ------------------------ SMnode ------------------------ */
diff --git a/include/dnode/qnode/qnode.h b/include/dnode/qnode/qnode.h
index 8084175a907ff4c98b52a5f343956b8fbcc834fd..554c57a045436f9df54338a79bbb8d69ef4e3e7a 100644
--- a/include/dnode/qnode/qnode.h
+++ b/include/dnode/qnode/qnode.h
@@ -23,9 +23,9 @@ extern "C" {
/* ------------------------ TYPES EXPOSED ------------------------ */
typedef struct SDnode SDnode;
typedef struct SQnode SQnode;
-typedef void (*SendMsgToDnodeFp)(SDnode *pDnode, struct SEpSet *epSet, struct SRpcMsg *rpcMsg);
-typedef void (*SendMsgToMnodeFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
-typedef void (*SendRedirectMsgFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef int32_t (*SendReqToDnodeFp)(SDnode *pDnode, struct SEpSet *epSet, struct SRpcMsg *rpcMsg);
+typedef int32_t (*SendReqToMnodeFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef void (*SendRedirectRspFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
typedef struct {
int64_t numOfStartTask;
@@ -47,9 +47,9 @@ typedef struct {
int64_t clusterId;
SQnodeCfg cfg;
SDnode *pDnode;
- SendMsgToDnodeFp sendMsgToDnodeFp;
- SendMsgToMnodeFp sendMsgToMnodeFp;
- SendRedirectMsgFp sendRedirectMsgFp;
+ SendReqToDnodeFp sendReqToDnodeFp;
+ SendReqToMnodeFp sendReqToMnodeFp;
+ SendRedirectRspFp sendRedirectRspFp;
} SQnodeOpt;
/* ------------------------ SQnode ------------------------ */
diff --git a/include/dnode/snode/snode.h b/include/dnode/snode/snode.h
index 4913d2572fa201b23df12195e0004f55b8c4b866..43d3dd9b4b377fbee57f9cf9fd02c9f14699f77d 100644
--- a/include/dnode/snode/snode.h
+++ b/include/dnode/snode/snode.h
@@ -23,9 +23,9 @@ extern "C" {
/* ------------------------ TYPES EXPOSED ------------------------ */
typedef struct SDnode SDnode;
typedef struct SSnode SSnode;
-typedef void (*SendMsgToDnodeFp)(SDnode *pDnode, struct SEpSet *epSet, struct SRpcMsg *rpcMsg);
-typedef void (*SendMsgToMnodeFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
-typedef void (*SendRedirectMsgFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef int32_t (*SendReqToDnodeFp)(SDnode *pDnode, struct SEpSet *epSet, struct SRpcMsg *rpcMsg);
+typedef int32_t (*SendReqToMnodeFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
+typedef void (*SendRedirectRspFp)(SDnode *pDnode, struct SRpcMsg *rpcMsg);
typedef struct {
int64_t numOfErrors;
@@ -40,9 +40,9 @@ typedef struct {
int64_t clusterId;
SSnodeCfg cfg;
SDnode *pDnode;
- SendMsgToDnodeFp sendMsgToDnodeFp;
- SendMsgToMnodeFp sendMsgToMnodeFp;
- SendRedirectMsgFp sendRedirectMsgFp;
+ SendReqToDnodeFp sendReqToDnodeFp;
+ SendReqToMnodeFp sendReqToMnodeFp;
+ SendRedirectRspFp sendRedirectRspFp;
} SSnodeOpt;
/* ------------------------ SSnode ------------------------ */
diff --git a/include/libs/catalog/catalog.h b/include/libs/catalog/catalog.h
index 6250bbbe9ed68bc3638f85ad63090ec672712679..391689882962ca84dbaf5a9c4811094a0ea36ce7 100644
--- a/include/libs/catalog/catalog.h
+++ b/include/libs/catalog/catalog.h
@@ -100,13 +100,13 @@ int32_t catalogRenewTableMeta(struct SCatalog* pCatalog, void * pTransporter, co
/**
* Force renew a table's local cached meta data and get the new one.
* @param pCatalog (input, got with catalogGetHandle)
- * @param pRpc (input, rpc object)
+ * @param pTransporter (input, rpc object)
* @param pMgmtEps (input, mnode EPs)
* @param pTableName (input, table name, NOT including db name)
* @param pTableMeta(output, table meta data, NEED to free it by calller)
* @return error code
*/
-int32_t catalogRenewAndGetTableMeta(struct SCatalog* pCatalog, void *pRpc, const SEpSet* pMgmtEps, const SName* pTableName, STableMeta** pTableMeta);
+int32_t catalogRenewAndGetTableMeta(struct SCatalog* pCatalog, void *pTransporter, const SEpSet* pMgmtEps, const SName* pTableName, STableMeta** pTableMeta);
/**
diff --git a/include/os/osSysinfo.h b/include/os/osSysinfo.h
index b410255ea441369579821393119b12d8dc42dfa5..36ff4194d8c2db46292ed64fc658c3ad33d409fd 100644
--- a/include/os/osSysinfo.h
+++ b/include/os/osSysinfo.h
@@ -54,7 +54,7 @@ bool taosGetSysMemory(float *memoryUsedMB);
void taosPrintOsInfo();
int taosSystem(const char *cmd);
void taosKillSystem();
-int32_t taosGetSystemUid(char *uid, int32_t uidlen);
+int32_t taosGetSystemUUID(char *uid, int32_t uidlen);
char * taosGetCmdlineByPID(int pid);
void taosSetCoreDump(bool enable);
diff --git a/include/util/taoserror.h b/include/util/taoserror.h
index 2dcc74213c1db6e6917e9a205d50488c3a88773b..03054049377e80e87fdc2dc1e0f47848b236762d 100644
--- a/include/util/taoserror.h
+++ b/include/util/taoserror.h
@@ -253,7 +253,7 @@ int32_t* taosGetErrno();
// dnode
#define TSDB_CODE_DND_ACTION_IN_PROGRESS TAOS_DEF_ERROR_CODE(0, 0x0400)
-#define TSDB_CODE_DND_EXITING TAOS_DEF_ERROR_CODE(0, 0x0401)
+#define TSDB_CODE_DND_OFFLINE TAOS_DEF_ERROR_CODE(0, 0x0401)
#define TSDB_CODE_DND_INVALID_MSG_LEN TAOS_DEF_ERROR_CODE(0, 0x0402)
#define TSDB_CODE_DND_DNODE_READ_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0410)
#define TSDB_CODE_DND_DNODE_WRITE_FILE_ERROR TAOS_DEF_ERROR_CODE(0, 0x0411)
diff --git a/source/client/src/clientEnv.c b/source/client/src/clientEnv.c
index 1c7354b4459e11eb2e0122e38a8ce9720c82f394..47d0e517d5dfa3011b97b3857b2b9380ec0f3916 100644
--- a/source/client/src/clientEnv.c
+++ b/source/client/src/clientEnv.c
@@ -419,17 +419,20 @@ int taos_options_imp(TSDB_OPTION option, const char *str) {
*+------------+-----+-----------+---------------+
* @return
*/
-static int32_t requestSerialId = 0;
uint64_t generateRequestId() {
- uint64_t hashId = 0;
-
- char uid[64] = {0};
- int32_t code = taosGetSystemUid(uid, tListLen(uid));
- if (code != TSDB_CODE_SUCCESS) {
- tscError("Failed to get the system uid to generated request id, reason:%s. use ip address instead", tstrerror(TAOS_SYSTEM_ERROR(errno)));
-
- } else {
- hashId = MurmurHash3_32(uid, strlen(uid));
+ static uint64_t hashId = 0;
+ static int32_t requestSerialId = 0;
+
+ if (hashId == 0) {
+ char uid[64] = {0};
+ int32_t code = taosGetSystemUUID(uid, tListLen(uid));
+ if (code != TSDB_CODE_SUCCESS) {
+ tscError("Failed to get the system uid to generated request id, reason:%s. use ip address instead",
+ tstrerror(TAOS_SYSTEM_ERROR(errno)));
+
+ } else {
+ hashId = MurmurHash3_32(uid, strlen(uid));
+ }
}
int64_t ts = taosGetTimestampUs();
diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c
index 71fd8462af43f194bc3fb22fa15e71264b9d7357..a967a65c44d7c4c1318b64a34a21e29fee378953 100644
--- a/source/client/src/clientImpl.c
+++ b/source/client/src/clientImpl.c
@@ -140,7 +140,7 @@ int32_t buildRequest(STscObj *pTscObj, const char *sql, int sqlLen, SRequestObj*
(*pRequest)->sqlstr[sqlLen] = 0;
(*pRequest)->sqlLen = sqlLen;
- tscDebugL("0x%"PRIx64" SQL: %s", (*pRequest)->requestId, (*pRequest)->sqlstr);
+ tscDebugL("0x%"PRIx64" SQL: %s, reqId:0x"PRIx64, (*pRequest)->self, (*pRequest)->sqlstr, (*pRequest)->requestId);
return TSDB_CODE_SUCCESS;
}
@@ -203,7 +203,10 @@ int32_t getPlan(SRequestObj* pRequest, SQueryNode* pQuery, SQueryDag** pDag) {
int32_t scheduleQuery(SRequestObj* pRequest, SQueryDag* pDag, void** pJob) {
if (TSDB_SQL_INSERT == pRequest->type || TSDB_SQL_CREATE_TABLE == pRequest->type) {
- return scheduleExecJob(pRequest->pTscObj->pTransporter, NULL/*todo appInfo.xxx*/, pDag, pJob, &pRequest->affectedRows);
+ SQueryResult res = {.code = 0, .numOfRows = 0, .msgSize = ERROR_MSG_BUF_DEFAULT_SIZE, .msg = pRequest->msgBuf};
+ int32_t code = scheduleExecJob(pRequest->pTscObj->pTransporter, NULL, pDag, pJob, &res);
+ pRequest->affectedRows = res.numOfRows;
+ return res.code;
}
return scheduleAsyncExecJob(pRequest->pTscObj->pTransporter, NULL/*todo appInfo.xxx*/, pDag, pJob);
@@ -443,10 +446,10 @@ void processMsgFromServer(void* parent, SRpcMsg* pMsg, SEpSet* pEpSet) {
*/
int32_t elapsed = pRequest->metric.rsp - pRequest->metric.start;
if (pMsg->code == TSDB_CODE_SUCCESS) {
- tscDebug("0x%" PRIx64 " message:%s, code:%s rspLen:%d, elapsed:%d ms, reqId:0x%"PRIx64, pRequest->requestId,
+ tscDebug("0x%" PRIx64 " message:%s, code:%s rspLen:%d, elapsed:%d ms, reqId:0x%"PRIx64, pRequest->self,
TMSG_INFO(pMsg->msgType), tstrerror(pMsg->code), pMsg->contLen, elapsed, pRequest->requestId);
} else {
- tscError("reqId:0x%" PRIx64 " SQL cmd:%s, code:%s rspLen:%d, elapsed time:%d ms, reqId:0x"PRIx64, pRequest->requestId,
+ tscError("0x%" PRIx64 " SQL cmd:%s, code:%s rspLen:%d, elapsed time:%d ms, reqId:0x%"PRIx64, pRequest->self,
TMSG_INFO(pMsg->msgType), tstrerror(pMsg->code), pMsg->contLen, elapsed, pRequest->requestId);
}
diff --git a/source/client/src/clientMain.c b/source/client/src/clientMain.c
index e5f3eba5c283b87fc74072aa913f035cc4fac1ac..2b875b3eb54de4a7d333ff8d257a4fee2d7a60c8 100644
--- a/source/client/src/clientMain.c
+++ b/source/client/src/clientMain.c
@@ -262,6 +262,8 @@ const char *taos_data_type(int type) {
const char *taos_get_client_info() { return version; }
-int taos_affected_rows(TAOS_RES *res) { return 1; }
+int taos_affected_rows(TAOS_RES *res) {
+ return ((SRequestObj*)res)->affectedRows;
+}
int taos_result_precision(TAOS_RES *res) { return TSDB_TIME_PRECISION_MILLI; }
diff --git a/source/client/test/clientTests.cpp b/source/client/test/clientTests.cpp
index 193f436734efb56e9ec382e796ddaab2aa8c1243..26f1141cc05b5a1d9368282e3682b02a54e67f7a 100644
--- a/source/client/test/clientTests.cpp
+++ b/source/client/test/clientTests.cpp
@@ -496,6 +496,17 @@ TEST(testCase, create_multiple_tables) {
}
taos_free_result(pRes);
+
+// for(int32_t i = 0; i < 10000; ++i) {
+// char sql[512] = {0};
+// snprintf(sql, tListLen(sql), "create table t_x_%d using st1 tags(2)", i);
+// TAOS_RES* pres = taos_query(pConn, sql);
+// if (taos_errno(pres) != 0) {
+// printf("failed to create table %d\n, reason:%s", i, taos_errstr(pres));
+// }
+// taos_free_result(pres);
+// }
+
taos_close(pConn);
}
@@ -506,7 +517,6 @@ TEST(testCase, generated_request_id_test) {
uint64_t v = generateRequestId();
void* result = taosHashGet(phash, &v, sizeof(v));
ASSERT_EQ(result, nullptr);
-
taosHashPut(phash, &v, sizeof(v), NULL, 0);
}
diff --git a/source/dnode/bnode/inc/bndInt.h b/source/dnode/bnode/inc/bndInt.h
index d44c520a26e426bc5ea5f39441576e687bf50946..cddb1e50f14526df43e7e2234950a71ac74be864 100644
--- a/source/dnode/bnode/inc/bndInt.h
+++ b/source/dnode/bnode/inc/bndInt.h
@@ -33,9 +33,9 @@ typedef struct SBnode {
int32_t dnodeId;
int64_t clusterId;
SBnodeCfg cfg;
- SendMsgToDnodeFp sendMsgToDnodeFp;
- SendMsgToMnodeFp sendMsgToMnodeFp;
- SendRedirectMsgFp sendRedirectMsgFp;
+ SendReqToDnodeFp sendReqToDnodeFp;
+ SendReqToMnodeFp sendReqToMnodeFp;
+ SendRedirectRspFp sendRedirectRspFp;
} SBnode;
#ifdef __cplusplus
diff --git a/source/dnode/mgmt/impl/inc/dndDnode.h b/source/dnode/mgmt/impl/inc/dndDnode.h
index a2015913a7680789e81df4ee0e598547af755252..69c2aa1fbf39be66d066732c401192f7bd9eb016 100644
--- a/source/dnode/mgmt/impl/inc/dndDnode.h
+++ b/source/dnode/mgmt/impl/inc/dndDnode.h
@@ -29,8 +29,8 @@ int64_t dndGetClusterId(SDnode *pDnode);
void dndGetDnodeEp(SDnode *pDnode, int32_t dnodeId, char *pEp, char *pFqdn, uint16_t *pPort);
void dndGetMnodeEpSet(SDnode *pDnode, SEpSet *pEpSet);
-void dndSendRedirectMsg(SDnode *pDnode, SRpcMsg *pMsg);
-void dndSendStatusMsg(SDnode *pDnode);
+void dndSendRedirectRsp(SDnode *pDnode, SRpcMsg *pMsg);
+void dndSendStatusReq(SDnode *pDnode);
void dndProcessMgmtMsg(SDnode *pDnode, SRpcMsg *pRpcMsg, SEpSet *pEpSet);
void dndProcessStartupReq(SDnode *pDnode, SRpcMsg *pMsg);
diff --git a/source/dnode/mgmt/impl/inc/dndTransport.h b/source/dnode/mgmt/impl/inc/dndTransport.h
index 312da69fa23d6accc7057965ad3e97e86a737e21..42fb379fc1bf201ec617ce6b7b3236a5eff23782 100644
--- a/source/dnode/mgmt/impl/inc/dndTransport.h
+++ b/source/dnode/mgmt/impl/inc/dndTransport.h
@@ -23,8 +23,8 @@ extern "C" {
int32_t dndInitTrans(SDnode *pDnode);
void dndCleanupTrans(SDnode *pDnode);
-void dndSendMsgToMnode(SDnode *pDnode, SRpcMsg *pRpcMsg);
-void dndSendMsgToDnode(SDnode *pDnode, SEpSet *pEpSet, SRpcMsg *pRpcMsg);
+int32_t dndSendReqToMnode(SDnode *pDnode, SRpcMsg *pRpcMsg);
+int32_t dndSendReqToDnode(SDnode *pDnode, SEpSet *pEpSet, SRpcMsg *pRpcMsg);
#ifdef __cplusplus
}
diff --git a/source/dnode/mgmt/impl/src/dndBnode.c b/source/dnode/mgmt/impl/src/dndBnode.c
index c12d449517adcf5fbeafe1a5f727177000ab10b3..1b2e56edfe19437c241655b834a37e86eb995759 100644
--- a/source/dnode/mgmt/impl/src/dndBnode.c
+++ b/source/dnode/mgmt/impl/src/dndBnode.c
@@ -27,7 +27,7 @@ static SBnode *dndAcquireBnode(SDnode *pDnode) {
int32_t refCount = 0;
taosRLockLatch(&pMgmt->latch);
- if (pMgmt->deployed && !pMgmt->dropped) {
+ if (pMgmt->deployed && !pMgmt->dropped && pMgmt->pBnode != NULL) {
refCount = atomic_add_fetch_32(&pMgmt->refCount, 1);
pBnode = pMgmt->pBnode;
} else {
@@ -60,7 +60,7 @@ static int32_t dndReadBnodeFile(SDnode *pDnode) {
SBnodeMgmt *pMgmt = &pDnode->bmgmt;
int32_t code = TSDB_CODE_DND_BNODE_READ_FILE_ERROR;
int32_t len = 0;
- int32_t maxLen = 4096;
+ int32_t maxLen = 1024;
char *content = calloc(1, maxLen + 1);
cJSON *root = NULL;
@@ -127,7 +127,7 @@ static int32_t dndWriteBnodeFile(SDnode *pDnode) {
}
int32_t len = 0;
- int32_t maxLen = 4096;
+ int32_t maxLen = 1024;
char *content = calloc(1, maxLen + 1);
len += snprintf(content + len, maxLen - len, "{\n");
@@ -170,7 +170,7 @@ static void dndStopBnodeWorker(SDnode *pDnode) {
pMgmt->deployed = 0;
taosWUnLockLatch(&pMgmt->latch);
- while (pMgmt->refCount > 1) {
+ while (pMgmt->refCount > 0) {
taosMsleep(10);
}
@@ -179,9 +179,9 @@ static void dndStopBnodeWorker(SDnode *pDnode) {
static void dndBuildBnodeOption(SDnode *pDnode, SBnodeOpt *pOption) {
pOption->pDnode = pDnode;
- pOption->sendMsgToDnodeFp = dndSendMsgToDnode;
- pOption->sendMsgToMnodeFp = dndSendMsgToMnode;
- pOption->sendRedirectMsgFp = dndSendRedirectMsg;
+ pOption->sendReqToDnodeFp = dndSendReqToDnode;
+ pOption->sendReqToMnodeFp = dndSendReqToMnode;
+ pOption->sendRedirectRspFp = dndSendRedirectRsp;
pOption->dnodeId = dndGetDnodeId(pDnode);
pOption->clusterId = dndGetClusterId(pDnode);
pOption->cfg.sver = pDnode->opt.sver;
@@ -189,10 +189,18 @@ static void dndBuildBnodeOption(SDnode *pDnode, SBnodeOpt *pOption) {
static int32_t dndOpenBnode(SDnode *pDnode) {
SBnodeMgmt *pMgmt = &pDnode->bmgmt;
- SBnodeOpt option = {0};
+ SBnode *pBnode = dndAcquireBnode(pDnode);
+ if (pBnode != NULL) {
+ dndReleaseBnode(pDnode, pBnode);
+ terrno = TSDB_CODE_DND_BNODE_ALREADY_DEPLOYED;
+ dError("failed to create bnode since %s", terrstr());
+ return -1;
+ }
+
+ SBnodeOpt option = {0};
dndBuildBnodeOption(pDnode, &option);
- SBnode *pBnode = bndOpen(pDnode->dir.bnode, &option);
+ pBnode = bndOpen(pDnode->dir.bnode, &option);
if (pBnode == NULL) {
dError("failed to open bnode since %s", terrstr());
return -1;
@@ -256,11 +264,12 @@ static int32_t dndDropBnode(SDnode *pDnode) {
}
int32_t dndProcessCreateBnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
- SDCreateBnodeMsg *pMsg = pRpcMsg->pCont;
+ SDCreateBnodeReq *pMsg = pRpcMsg->pCont;
pMsg->dnodeId = htonl(pMsg->dnodeId);
if (pMsg->dnodeId != dndGetDnodeId(pDnode)) {
terrno = TSDB_CODE_DND_BNODE_ID_INVALID;
+ dError("failed to create bnode since %s", terrstr());
return -1;
} else {
return dndOpenBnode(pDnode);
@@ -268,11 +277,12 @@ int32_t dndProcessCreateBnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
}
int32_t dndProcessDropBnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
- SDDropBnodeMsg *pMsg = pRpcMsg->pCont;
+ SDDropBnodeReq *pMsg = pRpcMsg->pCont;
pMsg->dnodeId = htonl(pMsg->dnodeId);
if (pMsg->dnodeId != dndGetDnodeId(pDnode)) {
terrno = TSDB_CODE_DND_BNODE_ID_INVALID;
+ dError("failed to drop bnode since %s", terrstr());
return -1;
} else {
return dndDropBnode(pDnode);
diff --git a/source/dnode/mgmt/impl/src/dndDnode.c b/source/dnode/mgmt/impl/src/dndDnode.c
index 30b069f349c4e3cb3f33e31bd0d93df42df3fce2..f5f9bbf1b84367100b07e4c3216cbb3361a941c9 100644
--- a/source/dnode/mgmt/impl/src/dndDnode.c
+++ b/source/dnode/mgmt/impl/src/dndDnode.c
@@ -80,7 +80,7 @@ void dndGetMnodeEpSet(SDnode *pDnode, SEpSet *pEpSet) {
taosRUnLockLatch(&pMgmt->latch);
}
-void dndSendRedirectMsg(SDnode *pDnode, SRpcMsg *pMsg) {
+void dndSendRedirectRsp(SDnode *pDnode, SRpcMsg *pMsg) {
tmsg_t msgType = pMsg->msgType;
SEpSet epSet = {0};
@@ -354,7 +354,7 @@ static int32_t dndWriteDnodes(SDnode *pDnode) {
return 0;
}
-void dndSendStatusMsg(SDnode *pDnode) {
+void dndSendStatusReq(SDnode *pDnode) {
int32_t contLen = sizeof(SStatusMsg) + TSDB_MAX_VNODES * sizeof(SVnodeLoad);
SStatusMsg *pStatus = rpcMallocCont(contLen);
@@ -391,7 +391,7 @@ void dndSendStatusMsg(SDnode *pDnode) {
pMgmt->statusSent = 1;
dTrace("pDnode:%p, send status msg to mnode", pDnode);
- dndSendMsgToMnode(pDnode, &rpcMsg);
+ dndSendReqToMnode(pDnode, &rpcMsg);
}
static void dndUpdateDnodeCfg(SDnode *pDnode, SDnodeCfg *pCfg) {
@@ -491,7 +491,7 @@ static void *dnodeThreadRoutine(void *param) {
taosMsleep(ms);
if (dndGetStat(pDnode) == DND_STAT_RUNNING && !pMgmt->statusSent && !pMgmt->dropped) {
- dndSendStatusMsg(pDnode);
+ dndSendStatusReq(pDnode);
}
}
}
diff --git a/source/dnode/mgmt/impl/src/dndMnode.c b/source/dnode/mgmt/impl/src/dndMnode.c
index 577cb0c3b07115a1d4f3eb0932430a9671ebaa0d..a8bf26f133a3cd76a6e6b5d688b2598db04865b8 100644
--- a/source/dnode/mgmt/impl/src/dndMnode.c
+++ b/source/dnode/mgmt/impl/src/dndMnode.c
@@ -19,6 +19,7 @@
#include "dndTransport.h"
#include "dndWorker.h"
+static void dndWriteMnodeMsgToWorker(SDnode *pDnode, SDnodeWorker *pWorker, SRpcMsg *pRpcMsg);
static void dndProcessMnodeQueue(SDnode *pDnode, SMnodeMsg *pMsg);
static SMnode *dndAcquireMnode(SDnode *pDnode) {
@@ -258,11 +259,16 @@ static bool dndNeedDeployMnode(SDnode *pDnode) {
return true;
}
+static int32_t dndPutMsgToMWriteQ(SDnode *pDnode, SRpcMsg *pRpcMsg) {
+ dndWriteMnodeMsgToWorker(pDnode, &pDnode->mmgmt.writeWorker, pRpcMsg);
+}
+
static void dndInitMnodeOption(SDnode *pDnode, SMnodeOpt *pOption) {
pOption->pDnode = pDnode;
- pOption->sendMsgToDnodeFp = dndSendMsgToDnode;
- pOption->sendMsgToMnodeFp = dndSendMsgToMnode;
- pOption->sendRedirectMsgFp = dndSendRedirectMsg;
+ pOption->sendReqToDnodeFp = dndSendReqToDnode;
+ pOption->sendReqToMnodeFp = dndSendReqToMnode;
+ pOption->sendRedirectRspFp = dndSendRedirectRsp;
+ pOption->putReqToMWriteQFp = dndPutMsgToMWriteQ;
pOption->dnodeId = dndGetDnodeId(pDnode);
pOption->clusterId = dndGetClusterId(pDnode);
pOption->cfg.sver = pDnode->opt.sver;
diff --git a/source/dnode/mgmt/impl/src/dndQnode.c b/source/dnode/mgmt/impl/src/dndQnode.c
index 1f3d6ee371a41279b83bc52233ab30ce369e48a8..7dd3e168ce892d243a555dbb9a5bc2d5bbc66a2f 100644
--- a/source/dnode/mgmt/impl/src/dndQnode.c
+++ b/source/dnode/mgmt/impl/src/dndQnode.c
@@ -27,7 +27,7 @@ static SQnode *dndAcquireQnode(SDnode *pDnode) {
int32_t refCount = 0;
taosRLockLatch(&pMgmt->latch);
- if (pMgmt->deployed && !pMgmt->dropped) {
+ if (pMgmt->deployed && !pMgmt->dropped && pMgmt->pQnode != NULL) {
refCount = atomic_add_fetch_32(&pMgmt->refCount, 1);
pQnode = pMgmt->pQnode;
} else {
@@ -60,7 +60,7 @@ static int32_t dndReadQnodeFile(SDnode *pDnode) {
SQnodeMgmt *pMgmt = &pDnode->qmgmt;
int32_t code = TSDB_CODE_DND_QNODE_READ_FILE_ERROR;
int32_t len = 0;
- int32_t maxLen = 4096;
+ int32_t maxLen = 1024;
char *content = calloc(1, maxLen + 1);
cJSON *root = NULL;
@@ -127,7 +127,7 @@ static int32_t dndWriteQnodeFile(SDnode *pDnode) {
}
int32_t len = 0;
- int32_t maxLen = 4096;
+ int32_t maxLen = 1024;
char *content = calloc(1, maxLen + 1);
len += snprintf(content + len, maxLen - len, "{\n");
@@ -175,7 +175,7 @@ static void dndStopQnodeWorker(SDnode *pDnode) {
pMgmt->deployed = 0;
taosWUnLockLatch(&pMgmt->latch);
- while (pMgmt->refCount > 1) {
+ while (pMgmt->refCount > 0) {
taosMsleep(10);
}
@@ -185,9 +185,9 @@ static void dndStopQnodeWorker(SDnode *pDnode) {
static void dndBuildQnodeOption(SDnode *pDnode, SQnodeOpt *pOption) {
pOption->pDnode = pDnode;
- pOption->sendMsgToDnodeFp = dndSendMsgToDnode;
- pOption->sendMsgToMnodeFp = dndSendMsgToMnode;
- pOption->sendRedirectMsgFp = dndSendRedirectMsg;
+ pOption->sendReqToDnodeFp = dndSendReqToDnode;
+ pOption->sendReqToMnodeFp = dndSendReqToMnode;
+ pOption->sendRedirectRspFp = dndSendRedirectRsp;
pOption->dnodeId = dndGetDnodeId(pDnode);
pOption->clusterId = dndGetClusterId(pDnode);
pOption->cfg.sver = pDnode->opt.sver;
@@ -195,10 +195,19 @@ static void dndBuildQnodeOption(SDnode *pDnode, SQnodeOpt *pOption) {
static int32_t dndOpenQnode(SDnode *pDnode) {
SQnodeMgmt *pMgmt = &pDnode->qmgmt;
- SQnodeOpt option = {0};
+
+ SQnode *pQnode = dndAcquireQnode(pDnode);
+ if (pQnode != NULL) {
+ dndReleaseQnode(pDnode, pQnode);
+ terrno = TSDB_CODE_DND_QNODE_ALREADY_DEPLOYED;
+ dError("failed to create qnode since %s", terrstr());
+ return -1;
+ }
+
+ SQnodeOpt option = {0};
dndBuildQnodeOption(pDnode, &option);
- SQnode *pQnode = qndOpen(&option);
+ pQnode = qndOpen(&option);
if (pQnode == NULL) {
dError("failed to open qnode since %s", terrstr());
return -1;
@@ -261,11 +270,12 @@ static int32_t dndDropQnode(SDnode *pDnode) {
}
int32_t dndProcessCreateQnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
- SDCreateQnodeMsg *pMsg = pRpcMsg->pCont;
+ SDCreateQnodeReq *pMsg = pRpcMsg->pCont;
pMsg->dnodeId = htonl(pMsg->dnodeId);
if (pMsg->dnodeId != dndGetDnodeId(pDnode)) {
terrno = TSDB_CODE_DND_QNODE_ID_INVALID;
+ dError("failed to create qnode since %s", terrstr());
return -1;
} else {
return dndOpenQnode(pDnode);
@@ -273,11 +283,12 @@ int32_t dndProcessCreateQnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
}
int32_t dndProcessDropQnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
- SDDropQnodeMsg *pMsg = pRpcMsg->pCont;
+ SDDropQnodeReq *pMsg = pRpcMsg->pCont;
pMsg->dnodeId = htonl(pMsg->dnodeId);
if (pMsg->dnodeId != dndGetDnodeId(pDnode)) {
terrno = TSDB_CODE_DND_QNODE_ID_INVALID;
+ dError("failed to drop qnode since %s", terrstr());
return -1;
} else {
return dndDropQnode(pDnode);
@@ -293,6 +304,7 @@ static void dndProcessQnodeQueue(SDnode *pDnode, SRpcMsg *pMsg) {
if (pQnode != NULL) {
code = qndProcessMsg(pQnode, pMsg, &pRsp);
}
+ dndReleaseQnode(pDnode, pQnode);
if (pRsp != NULL) {
pRsp->ahandle = pMsg->ahandle;
diff --git a/source/dnode/mgmt/impl/src/dndSnode.c b/source/dnode/mgmt/impl/src/dndSnode.c
index ab4ca191a9e74d63ba7f8d441009f5c5e8f0187c..567c7dcdb09c4ab81e50151c26fb627507706c28 100644
--- a/source/dnode/mgmt/impl/src/dndSnode.c
+++ b/source/dnode/mgmt/impl/src/dndSnode.c
@@ -27,7 +27,7 @@ static SSnode *dndAcquireSnode(SDnode *pDnode) {
int32_t refCount = 0;
taosRLockLatch(&pMgmt->latch);
- if (pMgmt->deployed && !pMgmt->dropped) {
+ if (pMgmt->deployed && !pMgmt->dropped && pMgmt->pSnode != NULL) {
refCount = atomic_add_fetch_32(&pMgmt->refCount, 1);
pSnode = pMgmt->pSnode;
} else {
@@ -60,7 +60,7 @@ static int32_t dndReadSnodeFile(SDnode *pDnode) {
SSnodeMgmt *pMgmt = &pDnode->smgmt;
int32_t code = TSDB_CODE_DND_SNODE_READ_FILE_ERROR;
int32_t len = 0;
- int32_t maxLen = 4096;
+ int32_t maxLen = 1024;
char *content = calloc(1, maxLen + 1);
cJSON *root = NULL;
@@ -127,7 +127,7 @@ static int32_t dndWriteSnodeFile(SDnode *pDnode) {
}
int32_t len = 0;
- int32_t maxLen = 4096;
+ int32_t maxLen = 1024;
char *content = calloc(1, maxLen + 1);
len += snprintf(content + len, maxLen - len, "{\n");
@@ -170,18 +170,18 @@ static void dndStopSnodeWorker(SDnode *pDnode) {
pMgmt->deployed = 0;
taosWUnLockLatch(&pMgmt->latch);
- while (pMgmt->refCount > 1) {
+ while (pMgmt->refCount > 0) {
taosMsleep(10);
- }
+ }
dndCleanupWorker(&pMgmt->writeWorker);
}
static void dndBuildSnodeOption(SDnode *pDnode, SSnodeOpt *pOption) {
pOption->pDnode = pDnode;
- pOption->sendMsgToDnodeFp = dndSendMsgToDnode;
- pOption->sendMsgToMnodeFp = dndSendMsgToMnode;
- pOption->sendRedirectMsgFp = dndSendRedirectMsg;
+ pOption->sendReqToDnodeFp = dndSendReqToDnode;
+ pOption->sendReqToMnodeFp = dndSendReqToMnode;
+ pOption->sendRedirectRspFp = dndSendRedirectRsp;
pOption->dnodeId = dndGetDnodeId(pDnode);
pOption->clusterId = dndGetClusterId(pDnode);
pOption->cfg.sver = pDnode->opt.sver;
@@ -189,10 +189,18 @@ static void dndBuildSnodeOption(SDnode *pDnode, SSnodeOpt *pOption) {
static int32_t dndOpenSnode(SDnode *pDnode) {
SSnodeMgmt *pMgmt = &pDnode->smgmt;
- SSnodeOpt option = {0};
+ SSnode *pSnode = dndAcquireSnode(pDnode);
+ if (pSnode != NULL) {
+ dndReleaseSnode(pDnode, pSnode);
+ terrno = TSDB_CODE_DND_SNODE_ALREADY_DEPLOYED;
+ dError("failed to create snode since %s", terrstr());
+ return -1;
+ }
+
+ SSnodeOpt option = {0};
dndBuildSnodeOption(pDnode, &option);
- SSnode *pSnode = sndOpen(pDnode->dir.snode, &option);
+ pSnode = sndOpen(pDnode->dir.snode, &option);
if (pSnode == NULL) {
dError("failed to open snode since %s", terrstr());
return -1;
@@ -256,11 +264,12 @@ static int32_t dndDropSnode(SDnode *pDnode) {
}
int32_t dndProcessCreateSnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
- SDCreateSnodeMsg *pMsg = pRpcMsg->pCont;
+ SDCreateSnodeReq *pMsg = pRpcMsg->pCont;
pMsg->dnodeId = htonl(pMsg->dnodeId);
if (pMsg->dnodeId != dndGetDnodeId(pDnode)) {
terrno = TSDB_CODE_DND_SNODE_ID_INVALID;
+ dError("failed to create snode since %s", terrstr());
return -1;
} else {
return dndOpenSnode(pDnode);
@@ -268,11 +277,12 @@ int32_t dndProcessCreateSnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
}
int32_t dndProcessDropSnodeReq(SDnode *pDnode, SRpcMsg *pRpcMsg) {
- SDDropSnodeMsg *pMsg = pRpcMsg->pCont;
+ SDDropSnodeReq *pMsg = pRpcMsg->pCont;
pMsg->dnodeId = htonl(pMsg->dnodeId);
if (pMsg->dnodeId != dndGetDnodeId(pDnode)) {
terrno = TSDB_CODE_DND_SNODE_ID_INVALID;
+ dError("failed to drop snode since %s", terrstr());
return -1;
} else {
return dndDropSnode(pDnode);
@@ -288,6 +298,7 @@ static void dndProcessSnodeQueue(SDnode *pDnode, SRpcMsg *pMsg) {
if (pSnode != NULL) {
code = sndProcessMsg(pSnode, pMsg, &pRsp);
}
+ dndReleaseSnode(pDnode, pSnode);
if (pRsp != NULL) {
pRsp->ahandle = pMsg->ahandle;
diff --git a/source/dnode/mgmt/impl/src/dndTransport.c b/source/dnode/mgmt/impl/src/dndTransport.c
index bb16ef0b77bc4021f7a060e19cd99e36a5ad46ae..cf0f5616096df39b020f401b3e76106bc4aac32e 100644
--- a/source/dnode/mgmt/impl/src/dndTransport.c
+++ b/source/dnode/mgmt/impl/src/dndTransport.c
@@ -105,8 +105,6 @@ static void dndInitMsgFp(STransMgmt *pMgmt) {
pMgmt->msgFp[TMSG_INDEX(TDMT_MND_SHOW_RETRIEVE)] = dndProcessMnodeReadMsg;
pMgmt->msgFp[TMSG_INDEX(TDMT_MND_STATUS)] = dndProcessMnodeReadMsg;
pMgmt->msgFp[TMSG_INDEX(TDMT_MND_STATUS_RSP)] = dndProcessMgmtMsg;
- pMgmt->msgFp[TMSG_INDEX(TDMT_MND_TRANS)] = dndProcessMnodeWriteMsg;
- pMgmt->msgFp[TMSG_INDEX(TDMT_MND_TRANS_RSP)] = dndProcessMnodeWriteMsg;
pMgmt->msgFp[TMSG_INDEX(TDMT_MND_GRANT)] = dndProcessMnodeWriteMsg;
pMgmt->msgFp[TMSG_INDEX(TDMT_MND_GRANT_RSP)] = dndProcessMgmtMsg;
pMgmt->msgFp[TMSG_INDEX(TDMT_MND_AUTH)] = dndProcessMnodeReadMsg;
@@ -216,7 +214,7 @@ static void dndProcessRequest(void *param, SRpcMsg *pMsg, SEpSet *pEpSet) {
if (dndGetStat(pDnode) == DND_STAT_STOPPED) {
dError("RPC %p, req:%s app:%p is ignored since dnode exiting", pMsg->handle, TMSG_INFO(msgType), pMsg->ahandle);
- SRpcMsg rspMsg = {.handle = pMsg->handle, .code = TSDB_CODE_DND_EXITING};
+ SRpcMsg rspMsg = {.handle = pMsg->handle, .code = TSDB_CODE_DND_OFFLINE};
rpcSendResponse(&rspMsg);
rpcFreeCont(pMsg->pCont);
return;
@@ -383,14 +381,19 @@ void dndCleanupTrans(SDnode *pDnode) {
dInfo("dnode-transport is cleaned up");
}
-void dndSendMsgToDnode(SDnode *pDnode, SEpSet *pEpSet, SRpcMsg *pMsg) {
+int32_t dndSendReqToDnode(SDnode *pDnode, SEpSet *pEpSet, SRpcMsg *pMsg) {
STransMgmt *pMgmt = &pDnode->tmgmt;
- if (pMgmt->clientRpc == NULL) return;
+ if (pMgmt->clientRpc == NULL) {
+ terrno = TSDB_CODE_DND_OFFLINE;
+ return -1;
+ }
+
rpcSendRequest(pMgmt->clientRpc, pEpSet, pMsg, NULL);
+ return 0;
}
-void dndSendMsgToMnode(SDnode *pDnode, SRpcMsg *pMsg) {
+int32_t dndSendReqToMnode(SDnode *pDnode, SRpcMsg *pMsg) {
SEpSet epSet = {0};
dndGetMnodeEpSet(pDnode, &epSet);
- dndSendMsgToDnode(pDnode, &epSet, pMsg);
+ return dndSendReqToDnode(pDnode, &epSet, pMsg);
}
diff --git a/source/dnode/mgmt/impl/src/dnode.c b/source/dnode/mgmt/impl/src/dnode.c
index 88a96dadc4bd50f04c45c5960334b63bd211e422..ef5c15743c67f7bfabe81dd9de760bb907489df7 100644
--- a/source/dnode/mgmt/impl/src/dnode.c
+++ b/source/dnode/mgmt/impl/src/dnode.c
@@ -14,8 +14,11 @@
*/
#define _DEFAULT_SOURCE
+#include "dndBnode.h"
#include "dndDnode.h"
#include "dndMnode.h"
+#include "dndQnode.h"
+#include "dndSnode.h"
#include "dndTransport.h"
#include "dndVnodes.h"
#include "sync.h"
@@ -200,6 +203,24 @@ SDnode *dndInit(SDnodeOpt *pOption) {
return NULL;
}
+ if (dndInitQnode(pDnode) != 0) {
+ dError("failed to init qnode");
+ dndCleanup(pDnode);
+ return NULL;
+ }
+
+ if (dndInitSnode(pDnode) != 0) {
+ dError("failed to init snode");
+ dndCleanup(pDnode);
+ return NULL;
+ }
+
+ if (dndInitBnode(pDnode) != 0) {
+ dError("failed to init bnode");
+ dndCleanup(pDnode);
+ return NULL;
+ }
+
if (dndInitMnode(pDnode) != 0) {
dError("failed to init mnode");
dndCleanup(pDnode);
@@ -213,7 +234,7 @@ SDnode *dndInit(SDnodeOpt *pOption) {
}
dndSetStat(pDnode, DND_STAT_RUNNING);
- dndSendStatusMsg(pDnode);
+ dndSendStatusReq(pDnode);
dndReportStartup(pDnode, "TDengine", "initialized successfully");
dInfo("TDengine is initialized successfully, pDnode:%p", pDnode);
@@ -232,6 +253,9 @@ void dndCleanup(SDnode *pDnode) {
dndSetStat(pDnode, DND_STAT_STOPPED);
dndCleanupTrans(pDnode);
dndCleanupMnode(pDnode);
+ dndCleanupBnode(pDnode);
+ dndCleanupSnode(pDnode);
+ dndCleanupQnode(pDnode);
dndCleanupVnodes(pDnode);
dndCleanupDnode(pDnode);
vnodeClear();
diff --git a/source/dnode/mgmt/impl/test/CMakeLists.txt b/source/dnode/mgmt/impl/test/CMakeLists.txt
index b36cdbd690f6922366dfe80c0266528b5429429a..6e6015b5f41d30fbeb0c61fcd98f63eeb608998c 100644
--- a/source/dnode/mgmt/impl/test/CMakeLists.txt
+++ b/source/dnode/mgmt/impl/test/CMakeLists.txt
@@ -1,5 +1,7 @@
enable_testing()
+add_subdirectory(qnode)
+
# add_subdirectory(auth)
# add_subdirectory(balance)
add_subdirectory(cluster)
@@ -7,9 +9,6 @@ add_subdirectory(db)
add_subdirectory(dnode)
# add_subdirectory(func)
add_subdirectory(mnode)
-add_subdirectory(qnode)
-add_subdirectory(snode)
-add_subdirectory(bnode)
add_subdirectory(profile)
add_subdirectory(show)
add_subdirectory(stb)
diff --git a/source/dnode/mgmt/impl/test/bnode/CMakeLists.txt b/source/dnode/mgmt/impl/test/bnode/CMakeLists.txt
deleted file mode 100644
index ea769a701c4136b9839445154abb413f7e10b594..0000000000000000000000000000000000000000
--- a/source/dnode/mgmt/impl/test/bnode/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-aux_source_directory(. STEST_SRC)
-add_executable(dnode_test_bnode ${STEST_SRC})
-target_link_libraries(
- dnode_test_bnode
- PUBLIC sut
-)
-
-add_test(
- NAME dnode_test_bnode
- COMMAND dnode_test_bnode
-)
diff --git a/source/dnode/mgmt/impl/test/bnode/bnode.cpp b/source/dnode/mgmt/impl/test/bnode/bnode.cpp
index b1a85522c45da91268b4a5617ea53f2b87612af3..7777d60550c58c526efc7944d2ca130458653b31 100644
--- a/source/dnode/mgmt/impl/test/bnode/bnode.cpp
+++ b/source/dnode/mgmt/impl/test/bnode/bnode.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestBnode : public ::testing::Test {
public:
@@ -52,9 +52,9 @@ TEST_F(DndTestBnode, 01_ShowBnode) {
TEST_F(DndTestBnode, 02_Create_Bnode_Invalid_Id) {
{
- int32_t contLen = sizeof(SMCreateBnodeMsg);
+ int32_t contLen = sizeof(SMCreateBnodeReq);
- SMCreateBnodeMsg* pReq = (SMCreateBnodeMsg*)rpcMallocCont(contLen);
+ SMCreateBnodeReq* pReq = (SMCreateBnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(1);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_BNODE, pReq, contLen);
@@ -79,9 +79,9 @@ TEST_F(DndTestBnode, 02_Create_Bnode_Invalid_Id) {
TEST_F(DndTestBnode, 03_Create_Bnode_Invalid_Id) {
{
- int32_t contLen = sizeof(SMCreateBnodeMsg);
+ int32_t contLen = sizeof(SMCreateBnodeReq);
- SMCreateBnodeMsg* pReq = (SMCreateBnodeMsg*)rpcMallocCont(contLen);
+ SMCreateBnodeReq* pReq = (SMCreateBnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_BNODE, pReq, contLen);
@@ -111,9 +111,9 @@ TEST_F(DndTestBnode, 04_Create_Bnode) {
{
// create bnode
- int32_t contLen = sizeof(SMCreateBnodeMsg);
+ int32_t contLen = sizeof(SMCreateBnodeReq);
- SMCreateBnodeMsg* pReq = (SMCreateBnodeMsg*)rpcMallocCont(contLen);
+ SMCreateBnodeReq* pReq = (SMCreateBnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_BNODE, pReq, contLen);
@@ -134,9 +134,9 @@ TEST_F(DndTestBnode, 04_Create_Bnode) {
{
// drop bnode
- int32_t contLen = sizeof(SMDropBnodeMsg);
+ int32_t contLen = sizeof(SMDropBnodeReq);
- SMDropBnodeMsg* pReq = (SMDropBnodeMsg*)rpcMallocCont(contLen);
+ SMDropBnodeReq* pReq = (SMDropBnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_BNODE, pReq, contLen);
diff --git a/source/dnode/mgmt/impl/test/cluster/cluster.cpp b/source/dnode/mgmt/impl/test/cluster/cluster.cpp
index 773482678977a7096b5469d141fa21d2568dae25..7d9bff7b23cba4196fffc27da2ae16c3e23028bc 100644
--- a/source/dnode/mgmt/impl/test/cluster/cluster.cpp
+++ b/source/dnode/mgmt/impl/test/cluster/cluster.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestCluster : public ::testing::Test {
protected:
diff --git a/source/dnode/mgmt/impl/test/db/db.cpp b/source/dnode/mgmt/impl/test/db/db.cpp
index 7ba19677fd38e2ca182495268a56be240d928bee..a78b8388c62f151601cef59896c6951506cf280c 100644
--- a/source/dnode/mgmt/impl/test/db/db.cpp
+++ b/source/dnode/mgmt/impl/test/db/db.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestDb : public ::testing::Test {
protected:
diff --git a/source/dnode/mgmt/impl/test/dnode/dnode.cpp b/source/dnode/mgmt/impl/test/dnode/dnode.cpp
index 54d7e73be6542d8391dfdfddaf5f3f7857a7db1d..9041098d71c9acb570c1dd59662b298fd21024f0 100644
--- a/source/dnode/mgmt/impl/test/dnode/dnode.cpp
+++ b/source/dnode/mgmt/impl/test/dnode/dnode.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestDnode : public ::testing::Test {
public:
diff --git a/source/dnode/mgmt/impl/test/mnode/mnode.cpp b/source/dnode/mgmt/impl/test/mnode/mnode.cpp
index e9b1ef45bdd419f17aa97b0f60cb43d9837efebe..3d4844c3f6044b0dd3fa9da5ad4df0d5ac645b8f 100644
--- a/source/dnode/mgmt/impl/test/mnode/mnode.cpp
+++ b/source/dnode/mgmt/impl/test/mnode/mnode.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestMnode : public ::testing::Test {
public:
diff --git a/source/dnode/mgmt/impl/test/profile/profile.cpp b/source/dnode/mgmt/impl/test/profile/profile.cpp
index 87e6bfde747926e58cc5b4257ca1ea9ca9e025bb..77122d1bb9e95fd33e0d9e9580cc7d6ae40a11aa 100644
--- a/source/dnode/mgmt/impl/test/profile/profile.cpp
+++ b/source/dnode/mgmt/impl/test/profile/profile.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestProfile : public ::testing::Test {
protected:
diff --git a/source/dnode/mgmt/impl/test/qnode/CMakeLists.txt b/source/dnode/mgmt/impl/test/qnode/CMakeLists.txt
index 2edb6de8b8c7433cfa76ff214a6f13c26557ea70..2536001231c82537d64735ce14ada91f45501d07 100644
--- a/source/dnode/mgmt/impl/test/qnode/CMakeLists.txt
+++ b/source/dnode/mgmt/impl/test/qnode/CMakeLists.txt
@@ -1,5 +1,5 @@
-aux_source_directory(. QTEST_SRC)
-add_executable(dnode_test_qnode ${QTEST_SRC})
+aux_source_directory(. DQTEST_SRC)
+add_executable(dnode_test_qnode ${DQTEST_SRC})
target_link_libraries(
dnode_test_qnode
PUBLIC sut
diff --git a/source/dnode/mgmt/impl/test/qnode/dqnode.cpp b/source/dnode/mgmt/impl/test/qnode/dqnode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7c8b502a58c0e762c9cd7b4927f28134475710c6
--- /dev/null
+++ b/source/dnode/mgmt/impl/test/qnode/dqnode.cpp
@@ -0,0 +1,74 @@
+/**
+ * @file dqnode.cpp
+ * @author slguan (slguan@taosdata.com)
+ * @brief DNODE module qnode tests
+ * @version 1.0
+ * @date 2022-01-05
+ *
+ * @copyright Copyright (c) 2022
+ *
+ */
+
+#include "sut.h"
+
+class DndTestQnode : public ::testing::Test {
+ protected:
+ static void SetUpTestSuite() { test.Init("/tmp/dnode_test_qnode", 9111); }
+ static void TearDownTestSuite() { test.Cleanup(); }
+
+ static Testbase test;
+
+ public:
+ void SetUp() override {}
+ void TearDown() override {}
+};
+
+Testbase DndTestQnode::test;
+
+TEST_F(DndTestQnode, 01_Create_Qnode_Invalid) {
+ {
+ int32_t contLen = sizeof(SDCreateQnodeReq);
+
+ SDCreateQnodeReq* pReq = (SDCreateQnodeReq*)rpcMallocCont(contLen);
+ pReq->dnodeId = htonl(2);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_DND_CREATE_QNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, TSDB_CODE_DND_QNODE_ID_INVALID);
+ }
+
+ {
+ int32_t contLen = sizeof(SDCreateQnodeReq);
+
+ SDCreateQnodeReq* pReq = (SDCreateQnodeReq*)rpcMallocCont(contLen);
+ pReq->dnodeId = htonl(1);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_DND_CREATE_QNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, 0);
+ }
+
+ {
+ int32_t contLen = sizeof(SDCreateQnodeReq);
+
+ SDCreateQnodeReq* pReq = (SDCreateQnodeReq*)rpcMallocCont(contLen);
+ pReq->dnodeId = htonl(1);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_DND_CREATE_QNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, TSDB_CODE_DND_QNODE_ALREADY_DEPLOYED);
+ }
+
+ test.Restart();
+
+ {
+ int32_t contLen = sizeof(SDCreateQnodeReq);
+
+ SDCreateQnodeReq* pReq = (SDCreateQnodeReq*)rpcMallocCont(contLen);
+ pReq->dnodeId = htonl(1);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_DND_CREATE_QNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, TSDB_CODE_DND_QNODE_ALREADY_DEPLOYED);
+ }
+}
\ No newline at end of file
diff --git a/source/dnode/mgmt/impl/test/show/show.cpp b/source/dnode/mgmt/impl/test/show/show.cpp
index a0df0f29218a63e5141adaa9244605c569802353..8622672758a40593a602aa5efe046f375c04163a 100644
--- a/source/dnode/mgmt/impl/test/show/show.cpp
+++ b/source/dnode/mgmt/impl/test/show/show.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestShow : public ::testing::Test {
protected:
diff --git a/source/dnode/mgmt/impl/test/snode/CMakeLists.txt b/source/dnode/mgmt/impl/test/snode/CMakeLists.txt
deleted file mode 100644
index 180b1ec163b7caa84538b8eec656c2f588b12c68..0000000000000000000000000000000000000000
--- a/source/dnode/mgmt/impl/test/snode/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-aux_source_directory(. STEST_SRC)
-add_executable(dnode_test_snode ${STEST_SRC})
-target_link_libraries(
- dnode_test_snode
- PUBLIC sut
-)
-
-add_test(
- NAME dnode_test_snode
- COMMAND dnode_test_snode
-)
diff --git a/source/dnode/mgmt/impl/test/stb/stb.cpp b/source/dnode/mgmt/impl/test/stb/stb.cpp
index dca0f4851658caa57ec264a9ce9c896e5e44fc45..40af751e3335e8ba1362ef279d6f04490d4cc136 100644
--- a/source/dnode/mgmt/impl/test/stb/stb.cpp
+++ b/source/dnode/mgmt/impl/test/stb/stb.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestStb : public ::testing::Test {
protected:
diff --git a/source/dnode/mgmt/impl/test/sut/inc/server.h b/source/dnode/mgmt/impl/test/sut/inc/server.h
index aa7b37f22118ca0ca4081235624903dc010f85af..5f9e4846a7063826d89ed217833afdd4a55095cc 100644
--- a/source/dnode/mgmt/impl/test/sut/inc/server.h
+++ b/source/dnode/mgmt/impl/test/sut/inc/server.h
@@ -21,10 +21,10 @@ class TestServer {
bool Start(const char* path, const char* fqdn, uint16_t port, const char* firstEp);
void Stop();
void Restart();
+ bool DoStart();
private:
SDnodeOpt BuildOption(const char* path, const char* fqdn, uint16_t port, const char* firstEp);
- bool DoStart();
private:
SDnode* pDnode;
diff --git a/source/dnode/mgmt/impl/test/sut/inc/base.h b/source/dnode/mgmt/impl/test/sut/inc/sut.h
similarity index 97%
rename from source/dnode/mgmt/impl/test/sut/inc/base.h
rename to source/dnode/mgmt/impl/test/sut/inc/sut.h
index 41382fbab5cdfba3f14417e51ba7cef3ed0a8dad..24278a73f7c2a07ccfb68fd5f096df6559338e7b 100644
--- a/source/dnode/mgmt/impl/test/sut/inc/base.h
+++ b/source/dnode/mgmt/impl/test/sut/inc/sut.h
@@ -37,6 +37,8 @@ class Testbase {
void Init(const char* path, int16_t port);
void Cleanup();
void Restart();
+ void ServerStop();
+ void ServerStart();
SRpcMsg* SendMsg(tmsg_t msgType, void* pCont, int32_t contLen);
private:
diff --git a/source/dnode/mgmt/impl/test/sut/src/client.cpp b/source/dnode/mgmt/impl/test/sut/src/client.cpp
index 13429cec28217886cdb44e5fe8672b43746402f8..086ba7bb0f7e4c6a63f5c7e32823014608a986a0 100644
--- a/source/dnode/mgmt/impl/test/sut/src/client.cpp
+++ b/source/dnode/mgmt/impl/test/sut/src/client.cpp
@@ -13,7 +13,7 @@
* along with this program. If not, see .
*/
-#include "base.h"
+#include "sut.h"
static void processClientRsp(void* parent, SRpcMsg* pMsg, SEpSet* pEpSet) {
TestClient* client = (TestClient*)parent;
diff --git a/source/dnode/mgmt/impl/test/sut/src/server.cpp b/source/dnode/mgmt/impl/test/sut/src/server.cpp
index 8ac5f6214430a1e46f757f755e97b2fca28c4119..fb2974294cf24b4ae944e844f865571ad26c6bfd 100644
--- a/source/dnode/mgmt/impl/test/sut/src/server.cpp
+++ b/source/dnode/mgmt/impl/test/sut/src/server.cpp
@@ -13,7 +13,7 @@
* along with this program. If not, see .
*/
-#include "base.h"
+#include "sut.h"
void* serverLoop(void* param) {
while (1) {
diff --git a/source/dnode/mgmt/impl/test/sut/src/base.cpp b/source/dnode/mgmt/impl/test/sut/src/sut.cpp
similarity index 96%
rename from source/dnode/mgmt/impl/test/sut/src/base.cpp
rename to source/dnode/mgmt/impl/test/sut/src/sut.cpp
index 429d5a6976b02cc8c4344b149703f7cd3f44497f..46ced254c60230bf4726f82e09f00183b7aea021 100644
--- a/source/dnode/mgmt/impl/test/sut/src/base.cpp
+++ b/source/dnode/mgmt/impl/test/sut/src/sut.cpp
@@ -13,16 +13,16 @@
* along with this program. If not, see .
*/
-#include "base.h"
+#include "sut.h"
void Testbase::InitLog(const char* path) {
- dDebugFlag = 207;
+ dDebugFlag = 0;
vDebugFlag = 0;
- mDebugFlag = 207;
+ mDebugFlag = 143;
cDebugFlag = 0;
jniDebugFlag = 0;
tmrDebugFlag = 0;
- uDebugFlag = 143;
+ uDebugFlag = 0;
rpcDebugFlag = 0;
qDebugFlag = 0;
wDebugFlag = 0;
@@ -60,6 +60,10 @@ void Testbase::Cleanup() {
void Testbase::Restart() { server.Restart(); }
+void Testbase::ServerStop() { server.Stop(); }
+
+void Testbase::ServerStart() { server.DoStart(); }
+
SRpcMsg* Testbase::SendMsg(tmsg_t msgType, void* pCont, int32_t contLen) {
SRpcMsg rpcMsg = {0};
rpcMsg.pCont = pCont;
diff --git a/source/dnode/mgmt/impl/test/vgroup/vgroup.cpp b/source/dnode/mgmt/impl/test/vgroup/vgroup.cpp
index 718fbea50d9f880e4d61b469fd750a0c878b7cca..15a0c8087caaf7770b04787c8ffef87659623ce1 100644
--- a/source/dnode/mgmt/impl/test/vgroup/vgroup.cpp
+++ b/source/dnode/mgmt/impl/test/vgroup/vgroup.cpp
@@ -9,7 +9,7 @@
*
*/
-#include "base.h"
+#include "sut.h"
class DndTestVgroup : public ::testing::Test {
protected:
diff --git a/source/dnode/mnode/impl/inc/mndInt.h b/source/dnode/mnode/impl/inc/mndInt.h
index 5c8d409d90cd7b43465fe555e272a2b9134174d1..89fb2e318929d050cd3c58346edd058211798e68 100644
--- a/source/dnode/mnode/impl/inc/mndInt.h
+++ b/source/dnode/mnode/impl/inc/mndInt.h
@@ -91,15 +91,16 @@ typedef struct SMnode {
STelemMgmt telemMgmt;
SSyncMgmt syncMgmt;
MndMsgFp msgFp[TDMT_MAX];
- SendMsgToDnodeFp sendMsgToDnodeFp;
- SendMsgToMnodeFp sendMsgToMnodeFp;
- SendRedirectMsgFp sendRedirectMsgFp;
+ SendReqToDnodeFp sendReqToDnodeFp;
+ SendReqToMnodeFp sendReqToMnodeFp;
+ SendRedirectRspFp sendRedirectRspFp;
+ PutReqToMWriteQFp putReqToMWriteQFp;
} SMnode;
-void mndSendMsgToDnode(SMnode *pMnode, SEpSet *pEpSet, SRpcMsg *rpcMsg);
-void mndSendMsgToMnode(SMnode *pMnode, SRpcMsg *pMsg);
-void mndSendRedirectMsg(SMnode *pMnode, SRpcMsg *pMsg);
-void mndSetMsgHandle(SMnode *pMnode, tmsg_t msgType, MndMsgFp fp);
+int32_t mndSendReqToDnode(SMnode *pMnode, SEpSet *pEpSet, SRpcMsg *rpcMsg);
+int32_t mndSendReqToMnode(SMnode *pMnode, SRpcMsg *pMsg);
+void mndSendRedirectRsp(SMnode *pMnode, SRpcMsg *pMsg);
+void mndSetMsgHandle(SMnode *pMnode, tmsg_t msgType, MndMsgFp fp);
uint64_t mndGenerateUid(char *name, int32_t len) ;
diff --git a/source/dnode/mnode/impl/inc/mndTrans.h b/source/dnode/mnode/impl/inc/mndTrans.h
index 201fcde1a932b2ff6da777ceb15a733b4f32cb0a..bd053d91b6743310fc7075d44a9f12be5efa69e3 100644
--- a/source/dnode/mnode/impl/inc/mndTrans.h
+++ b/source/dnode/mnode/impl/inc/mndTrans.h
@@ -45,6 +45,7 @@ int32_t mndTransAppendUndoAction(STrans *pTrans, STransAction *pAction);
int32_t mndTransPrepare(SMnode *pMnode, STrans *pTrans);
void mndTransProcessRsp(SMnodeMsg *pMsg);
+void mndTransPullup(SMnode *pMnode);
#ifdef __cplusplus
}
diff --git a/source/dnode/mnode/impl/src/mndAcct.c b/source/dnode/mnode/impl/src/mndAcct.c
index 2847d19beaa3a4bb449fc04e760f6cbd71fb46d2..0cf940b987e2f9f72137e93ec9c94c045901866a 100644
--- a/source/dnode/mnode/impl/src/mndAcct.c
+++ b/source/dnode/mnode/impl/src/mndAcct.c
@@ -25,10 +25,10 @@ static SSdbRaw *mndAcctActionEncode(SAcctObj *pAcct);
static SSdbRow *mndAcctActionDecode(SSdbRaw *pRaw);
static int32_t mndAcctActionInsert(SSdb *pSdb, SAcctObj *pAcct);
static int32_t mndAcctActionDelete(SSdb *pSdb, SAcctObj *pAcct);
-static int32_t mndAcctActionUpdate(SSdb *pSdb, SAcctObj *pOldAcct, SAcctObj *pNewAcct);
-static int32_t mndProcessCreateAcctMsg(SMnodeMsg *pMnodeMsg);
-static int32_t mndProcessAlterAcctMsg(SMnodeMsg *pMnodeMsg);
-static int32_t mndProcessDropAcctMsg(SMnodeMsg *pMnodeMsg);
+static int32_t mndAcctActionUpdate(SSdb *pSdb, SAcctObj *pOld, SAcctObj *pNew);
+static int32_t mndProcessCreateAcctReq(SMnodeMsg *pMsg);
+static int32_t mndProcessAlterAcctReq(SMnodeMsg *pMsg);
+static int32_t mndProcessDropAcctReq(SMnodeMsg *pMsg);
int32_t mndInitAcct(SMnode *pMnode) {
SSdbTable table = {.sdbType = SDB_ACCT,
@@ -40,9 +40,9 @@ int32_t mndInitAcct(SMnode *pMnode) {
.updateFp = (SdbUpdateFp)mndAcctActionUpdate,
.deleteFp = (SdbDeleteFp)mndAcctActionDelete};
- mndSetMsgHandle(pMnode, TDMT_MND_CREATE_ACCT, mndProcessCreateAcctMsg);
- mndSetMsgHandle(pMnode, TDMT_MND_ALTER_ACCT, mndProcessAlterAcctMsg);
- mndSetMsgHandle(pMnode, TDMT_MND_DROP_ACCT, mndProcessDropAcctMsg);
+ mndSetMsgHandle(pMnode, TDMT_MND_CREATE_ACCT, mndProcessCreateAcctReq);
+ mndSetMsgHandle(pMnode, TDMT_MND_ALTER_ACCT, mndProcessAlterAcctReq);
+ mndSetMsgHandle(pMnode, TDMT_MND_DROP_ACCT, mndProcessDropAcctReq);
return sdbSetTable(pMnode->pSdb, table);
}
@@ -176,29 +176,29 @@ static int32_t mndAcctActionDelete(SSdb *pSdb, SAcctObj *pAcct) {
return 0;
}
-static int32_t mndAcctActionUpdate(SSdb *pSdb, SAcctObj *pOldAcct, SAcctObj *pNewAcct) {
- mTrace("acct:%s, perform update action, old_row:%p new_row:%p", pOldAcct->acct, pOldAcct, pNewAcct);
+static int32_t mndAcctActionUpdate(SSdb *pSdb, SAcctObj *pOld, SAcctObj *pNew) {
+ mTrace("acct:%s, perform update action, old_row:%p new_row:%p", pOld->acct, pOld, pNew);
- pOldAcct->updateTime = pNewAcct->updateTime;
- pOldAcct->status = pNewAcct->status;
- memcpy(&pOldAcct->cfg, &pNewAcct->cfg, sizeof(SAcctCfg));
+ pOld->updateTime = pNew->updateTime;
+ pOld->status = pNew->status;
+ memcpy(&pOld->cfg, &pNew->cfg, sizeof(SAcctCfg));
return 0;
}
-static int32_t mndProcessCreateAcctMsg(SMnodeMsg *pMnodeMsg) {
+static int32_t mndProcessCreateAcctReq(SMnodeMsg *pMsg) {
terrno = TSDB_CODE_MND_MSG_NOT_PROCESSED;
- mError("failed to process create acct msg since %s", terrstr());
+ mError("failed to process create acct request since %s", terrstr());
return -1;
}
-static int32_t mndProcessAlterAcctMsg(SMnodeMsg *pMnodeMsg) {
+static int32_t mndProcessAlterAcctReq(SMnodeMsg *pMsg) {
terrno = TSDB_CODE_MND_MSG_NOT_PROCESSED;
- mError("failed to process create acct msg since %s", terrstr());
+ mError("failed to process create acct request since %s", terrstr());
return -1;
}
-static int32_t mndProcessDropAcctMsg(SMnodeMsg *pMnodeMsg) {
+static int32_t mndProcessDropAcctReq(SMnodeMsg *pMsg) {
terrno = TSDB_CODE_MND_MSG_NOT_PROCESSED;
- mError("failed to process create acct msg since %s", terrstr());
+ mError("failed to process create acct request since %s", terrstr());
return -1;
}
\ No newline at end of file
diff --git a/source/dnode/mnode/impl/src/mndBnode.c b/source/dnode/mnode/impl/src/mndBnode.c
index ceaebe3f6df67a716919946bf301a3139a223809..886784805ed5626b345427f8014503401ffcd04f 100644
--- a/source/dnode/mnode/impl/src/mndBnode.c
+++ b/source/dnode/mnode/impl/src/mndBnode.c
@@ -178,7 +178,7 @@ static int32_t mndSetCreateBnodeCommitLogs(STrans *pTrans, SBnodeObj *pObj) {
}
static int32_t mndSetCreateBnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SBnodeObj *pObj) {
- SDCreateBnodeMsg *pMsg = malloc(sizeof(SDCreateBnodeMsg));
+ SDCreateBnodeReq *pMsg = malloc(sizeof(SDCreateBnodeReq));
if (pMsg == NULL) {
terrno = TSDB_CODE_OUT_OF_MEMORY;
return -1;
@@ -188,7 +188,7 @@ static int32_t mndSetCreateBnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, S
STransAction action = {0};
action.epSet = mndGetDnodeEpset(pDnode);
action.pCont = pMsg;
- action.contLen = sizeof(SDCreateBnodeMsg);
+ action.contLen = sizeof(SDCreateBnodeReq);
action.msgType = TDMT_DND_CREATE_BNODE;
if (mndTransAppendRedoAction(pTrans, &action) != 0) {
@@ -199,7 +199,7 @@ static int32_t mndSetCreateBnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, S
return 0;
}
-static int32_t mndCreateBnode(SMnode *pMnode, SMnodeMsg *pMsg, SDnodeObj *pDnode, SMCreateBnodeMsg *pCreate) {
+static int32_t mndCreateBnode(SMnode *pMnode, SMnodeMsg *pMsg, SDnodeObj *pDnode, SMCreateBnodeReq *pCreate) {
SBnodeObj bnodeObj = {0};
bnodeObj.id = pDnode->id;
bnodeObj.createdTime = taosGetTimestampMs();
@@ -242,7 +242,7 @@ CREATE_BNODE_OVER:
static int32_t mndProcessCreateBnodeReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SMCreateBnodeMsg *pCreate = pMsg->rpcMsg.pCont;
+ SMCreateBnodeReq *pCreate = pMsg->rpcMsg.pCont;
pCreate->dnodeId = htonl(pCreate->dnodeId);
@@ -290,7 +290,7 @@ static int32_t mndSetDropBnodeCommitLogs(STrans *pTrans, SBnodeObj *pObj) {
}
static int32_t mndSetDropBnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SBnodeObj *pObj) {
- SDDropBnodeMsg *pMsg = malloc(sizeof(SDDropBnodeMsg));
+ SDDropBnodeReq *pMsg = malloc(sizeof(SDDropBnodeReq));
if (pMsg == NULL) {
terrno = TSDB_CODE_OUT_OF_MEMORY;
return -1;
@@ -300,7 +300,7 @@ static int32_t mndSetDropBnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SBn
STransAction action = {0};
action.epSet = mndGetDnodeEpset(pDnode);
action.pCont = pMsg;
- action.contLen = sizeof(SDDropBnodeMsg);
+ action.contLen = sizeof(SDDropBnodeReq);
action.msgType = TDMT_DND_DROP_BNODE;
if (mndTransAppendRedoAction(pTrans, &action) != 0) {
@@ -350,7 +350,7 @@ DROP_BNODE_OVER:
static int32_t mndProcessDropBnodeReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SMDropBnodeMsg *pDrop = pMsg->rpcMsg.pCont;
+ SMDropBnodeReq *pDrop = pMsg->rpcMsg.pCont;
pDrop->dnodeId = htonl(pDrop->dnodeId);
mDebug("bnode:%d, start to drop", pDrop->dnodeId);
diff --git a/source/dnode/mnode/impl/src/mndCluster.c b/source/dnode/mnode/impl/src/mndCluster.c
index 00cfa6b4132c7ffe771f3c511dbbbbe564af6ce1..b29f8276fe77c17d57f1cf4f943e09b06da5e9c7 100644
--- a/source/dnode/mnode/impl/src/mndCluster.c
+++ b/source/dnode/mnode/impl/src/mndCluster.c
@@ -145,7 +145,7 @@ static int32_t mndCreateDefaultCluster(SMnode *pMnode) {
clusterObj.createdTime = taosGetTimestampMs();
clusterObj.updateTime = clusterObj.createdTime;
- int32_t code = taosGetSystemUid(clusterObj.name, TSDB_CLUSTER_ID_LEN);
+ int32_t code = taosGetSystemUUID(clusterObj.name, TSDB_CLUSTER_ID_LEN);
if (code != 0) {
strcpy(clusterObj.name, "tdengine2.0");
mError("failed to get name from system, set to default val %s", clusterObj.name);
diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c
index 1d78359015d8ec7fd4a9e59582695b5f74f0e671..2cca70b04ecb10ec4dc3cf43f2044fbd9dc2b41c 100644
--- a/source/dnode/mnode/impl/src/mndDnode.c
+++ b/source/dnode/mnode/impl/src/mndDnode.c
@@ -557,7 +557,7 @@ static int32_t mndProcessConfigDnodeMsg(SMnodeMsg *pMsg) {
.ahandle = pMsg->rpcMsg.ahandle};
mInfo("dnode:%d, app:%p config:%s req send to dnode", pCfg->dnodeId, rpcMsg.ahandle, pCfg->config);
- mndSendMsgToDnode(pMnode, &epSet, &rpcMsg);
+ mndSendReqToDnode(pMnode, &epSet, &rpcMsg);
return 0;
}
diff --git a/source/dnode/mnode/impl/src/mndQnode.c b/source/dnode/mnode/impl/src/mndQnode.c
index a0c4ff8218df144b60a56b287245288c5d7c8993..ea4cfa41c84548b7a29e4fa6340c2c6e24bd9c23 100644
--- a/source/dnode/mnode/impl/src/mndQnode.c
+++ b/source/dnode/mnode/impl/src/mndQnode.c
@@ -178,7 +178,7 @@ static int32_t mndSetCreateQnodeCommitLogs(STrans *pTrans, SQnodeObj *pObj) {
}
static int32_t mndSetCreateQnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SQnodeObj *pObj) {
- SDCreateQnodeMsg *pMsg = malloc(sizeof(SDCreateQnodeMsg));
+ SDCreateQnodeReq *pMsg = malloc(sizeof(SDCreateQnodeReq));
if (pMsg == NULL) {
terrno = TSDB_CODE_OUT_OF_MEMORY;
return -1;
@@ -188,7 +188,7 @@ static int32_t mndSetCreateQnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, S
STransAction action = {0};
action.epSet = mndGetDnodeEpset(pDnode);
action.pCont = pMsg;
- action.contLen = sizeof(SDCreateQnodeMsg);
+ action.contLen = sizeof(SDCreateQnodeReq);
action.msgType = TDMT_DND_CREATE_QNODE;
if (mndTransAppendRedoAction(pTrans, &action) != 0) {
@@ -199,7 +199,7 @@ static int32_t mndSetCreateQnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, S
return 0;
}
-static int32_t mndCreateQnode(SMnode *pMnode, SMnodeMsg *pMsg, SDnodeObj *pDnode, SMCreateQnodeMsg *pCreate) {
+static int32_t mndCreateQnode(SMnode *pMnode, SMnodeMsg *pMsg, SDnodeObj *pDnode, SMCreateQnodeReq *pCreate) {
SQnodeObj qnodeObj = {0};
qnodeObj.id = pDnode->id;
qnodeObj.createdTime = taosGetTimestampMs();
@@ -242,7 +242,7 @@ CREATE_QNODE_OVER:
static int32_t mndProcessCreateQnodeReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SMCreateQnodeMsg *pCreate = pMsg->rpcMsg.pCont;
+ SMCreateQnodeReq *pCreate = pMsg->rpcMsg.pCont;
pCreate->dnodeId = htonl(pCreate->dnodeId);
@@ -290,7 +290,7 @@ static int32_t mndSetDropQnodeCommitLogs(STrans *pTrans, SQnodeObj *pObj) {
}
static int32_t mndSetDropQnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SQnodeObj *pObj) {
- SDDropQnodeMsg *pMsg = malloc(sizeof(SDDropQnodeMsg));
+ SDDropQnodeReq *pMsg = malloc(sizeof(SDDropQnodeReq));
if (pMsg == NULL) {
terrno = TSDB_CODE_OUT_OF_MEMORY;
return -1;
@@ -300,7 +300,7 @@ static int32_t mndSetDropQnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SQn
STransAction action = {0};
action.epSet = mndGetDnodeEpset(pDnode);
action.pCont = pMsg;
- action.contLen = sizeof(SDDropQnodeMsg);
+ action.contLen = sizeof(SDDropQnodeReq);
action.msgType = TDMT_DND_DROP_QNODE;
if (mndTransAppendRedoAction(pTrans, &action) != 0) {
@@ -350,7 +350,7 @@ DROP_QNODE_OVER:
static int32_t mndProcessDropQnodeReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SMDropQnodeMsg *pDrop = pMsg->rpcMsg.pCont;
+ SMDropQnodeReq *pDrop = pMsg->rpcMsg.pCont;
pDrop->dnodeId = htonl(pDrop->dnodeId);
mDebug("qnode:%d, start to drop", pDrop->dnodeId);
diff --git a/source/dnode/mnode/impl/src/mndSnode.c b/source/dnode/mnode/impl/src/mndSnode.c
index ac03e1659cb041f3743af4813dd08f954cdeccd6..3ab1ad4eaf118e03ad6e7105d06a7481b0512afd 100644
--- a/source/dnode/mnode/impl/src/mndSnode.c
+++ b/source/dnode/mnode/impl/src/mndSnode.c
@@ -178,7 +178,7 @@ static int32_t mndSetCreateSnodeCommitLogs(STrans *pTrans, SSnodeObj *pObj) {
}
static int32_t mndSetCreateSnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SSnodeObj *pObj) {
- SDCreateSnodeMsg *pMsg = malloc(sizeof(SDCreateSnodeMsg));
+ SDCreateSnodeReq *pMsg = malloc(sizeof(SDCreateSnodeReq));
if (pMsg == NULL) {
terrno = TSDB_CODE_OUT_OF_MEMORY;
return -1;
@@ -188,7 +188,7 @@ static int32_t mndSetCreateSnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, S
STransAction action = {0};
action.epSet = mndGetDnodeEpset(pDnode);
action.pCont = pMsg;
- action.contLen = sizeof(SDCreateSnodeMsg);
+ action.contLen = sizeof(SDCreateSnodeReq);
action.msgType = TDMT_DND_CREATE_SNODE;
if (mndTransAppendRedoAction(pTrans, &action) != 0) {
@@ -199,7 +199,7 @@ static int32_t mndSetCreateSnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, S
return 0;
}
-static int32_t mndCreateSnode(SMnode *pMnode, SMnodeMsg *pMsg, SDnodeObj *pDnode, SMCreateSnodeMsg *pCreate) {
+static int32_t mndCreateSnode(SMnode *pMnode, SMnodeMsg *pMsg, SDnodeObj *pDnode, SMCreateSnodeReq *pCreate) {
SSnodeObj snodeObj = {0};
snodeObj.id = pDnode->id;
snodeObj.createdTime = taosGetTimestampMs();
@@ -242,7 +242,7 @@ CREATE_SNODE_OVER:
static int32_t mndProcessCreateSnodeReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SMCreateSnodeMsg *pCreate = pMsg->rpcMsg.pCont;
+ SMCreateSnodeReq *pCreate = pMsg->rpcMsg.pCont;
pCreate->dnodeId = htonl(pCreate->dnodeId);
@@ -290,7 +290,7 @@ static int32_t mndSetDropSnodeCommitLogs(STrans *pTrans, SSnodeObj *pObj) {
}
static int32_t mndSetDropSnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SSnodeObj *pObj) {
- SDDropSnodeMsg *pMsg = malloc(sizeof(SDDropSnodeMsg));
+ SDDropSnodeReq *pMsg = malloc(sizeof(SDDropSnodeReq));
if (pMsg == NULL) {
terrno = TSDB_CODE_OUT_OF_MEMORY;
return -1;
@@ -300,7 +300,7 @@ static int32_t mndSetDropSnodeRedoActions(STrans *pTrans, SDnodeObj *pDnode, SSn
STransAction action = {0};
action.epSet = mndGetDnodeEpset(pDnode);
action.pCont = pMsg;
- action.contLen = sizeof(SDDropSnodeMsg);
+ action.contLen = sizeof(SDDropSnodeReq);
action.msgType = TDMT_DND_DROP_SNODE;
if (mndTransAppendRedoAction(pTrans, &action) != 0) {
@@ -350,7 +350,7 @@ DROP_SNODE_OVER:
static int32_t mndProcessDropSnodeReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SMDropSnodeMsg *pDrop = pMsg->rpcMsg.pCont;
+ SMDropSnodeReq *pDrop = pMsg->rpcMsg.pCont;
pDrop->dnodeId = htonl(pDrop->dnodeId);
mDebug("snode:%d, start to drop", pDrop->dnodeId);
diff --git a/source/dnode/mnode/impl/src/mndSync.c b/source/dnode/mnode/impl/src/mndSync.c
index 19fb89454e136528639553f0005b95960f83e71f..bf1697fb19016803096f87aae367240f167f6eb2 100644
--- a/source/dnode/mnode/impl/src/mndSync.c
+++ b/source/dnode/mnode/impl/src/mndSync.c
@@ -83,6 +83,8 @@ static int32_t mndRestoreWal(SMnode *pMnode) {
int64_t sdbVer = sdbUpdateVer(pSdb, 0);
mDebug("restore sdb wal finished, sdb ver:%" PRId64, sdbVer);
+ mndTransPullup(pMnode);
+
if (walBeginSnapshot(pWal, sdbVer) < 0) {
goto WAL_RESTORE_OVER;
}
diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c
index bf472a504c01efec09dc5d71a4134b1914b0d9ad..ee4a49ffdc981b4c4e6194ccd0a6c06806d9637d 100644
--- a/source/dnode/mnode/impl/src/mndTrans.c
+++ b/source/dnode/mnode/impl/src/mndTrans.c
@@ -52,7 +52,6 @@ static bool mndTransPerfromFinishedStage(SMnode *pMnode, STrans *pTrans);
static void mndTransExecute(SMnode *pMnode, STrans *pTrans);
static void mndTransSendRpcRsp(STrans *pTrans);
static int32_t mndProcessTransMsg(SMnodeMsg *pMsg);
-static int32_t mndProcessTransRsp(SMnodeMsg *pMsg);
int32_t mndInitTrans(SMnode *pMnode) {
SSdbTable table = {.sdbType = SDB_TRANS,
@@ -64,7 +63,6 @@ int32_t mndInitTrans(SMnode *pMnode) {
.deleteFp = (SdbDeleteFp)mndTransActionDelete};
mndSetMsgHandle(pMnode, TDMT_MND_TRANS, mndProcessTransMsg);
- mndSetMsgHandle(pMnode, TDMT_MND_TRANS_RSP, mndProcessTransRsp);
return sdbSetTable(pMnode->pSdb, table);
}
@@ -615,12 +613,15 @@ static int32_t mndTransSendActionMsg(SMnode *pMnode, STrans *pTrans, SArray *pAr
}
memcpy(rpcMsg.pCont, pAction->pCont, pAction->contLen);
- pAction->msgSent = 1;
- pAction->msgReceived = 0;
- pAction->errCode = 0;
-
- mDebug("trans:%d, action:%d is sent", pTrans->id, action);
- mndSendMsgToDnode(pMnode, &pAction->epSet, &rpcMsg);
+ if (mndSendReqToDnode(pMnode, &pAction->epSet, &rpcMsg) == 0) {
+ mDebug("trans:%d, action:%d is sent", pTrans->id, action);
+ pAction->msgSent = 1;
+ pAction->msgReceived = 0;
+ pAction->errCode = 0;
+ } else {
+ mDebug("trans:%d, action:%d not sent since %s", pTrans->id, action, terrstr());
+ return -1;
+ }
}
return 0;
@@ -885,7 +886,11 @@ static void mndTransExecute(SMnode *pMnode, STrans *pTrans) {
}
static int32_t mndProcessTransMsg(SMnodeMsg *pMsg) {
- SMnode *pMnode = pMsg->pMnode;
+ mndTransPullup(pMsg->pMnode);
+ return 0;
+}
+
+void mndTransPullup(SMnode *pMnode) {
STrans *pTrans = NULL;
void *pIter = NULL;
@@ -897,5 +902,3 @@ static int32_t mndProcessTransMsg(SMnodeMsg *pMsg) {
sdbRelease(pMnode->pSdb, pTrans);
}
}
-
-static int32_t mndProcessTransRsp(SMnodeMsg *pMsg) { return 0; }
\ No newline at end of file
diff --git a/source/dnode/mnode/impl/src/mndUser.c b/source/dnode/mnode/impl/src/mndUser.c
index 6311d3e8da2c82576e4f226dc9d26a5f9b1e956d..3ffb979ed1ce1aee5e3b583d4db5bc0a01d5a97f 100644
--- a/source/dnode/mnode/impl/src/mndUser.c
+++ b/source/dnode/mnode/impl/src/mndUser.c
@@ -28,11 +28,11 @@ static SSdbRaw *mndUserActionEncode(SUserObj *pUser);
static SSdbRow *mndUserActionDecode(SSdbRaw *pRaw);
static int32_t mndUserActionInsert(SSdb *pSdb, SUserObj *pUser);
static int32_t mndUserActionDelete(SSdb *pSdb, SUserObj *pUser);
-static int32_t mndUserActionUpdate(SSdb *pSdb, SUserObj *pOldUser, SUserObj *pNewUser);
+static int32_t mndUserActionUpdate(SSdb *pSdb, SUserObj *pOld, SUserObj *pNew);
static int32_t mndCreateUser(SMnode *pMnode, char *acct, char *user, char *pass, SMnodeMsg *pMsg);
-static int32_t mndProcessCreateUserMsg(SMnodeMsg *pMsg);
-static int32_t mndProcessAlterUserMsg(SMnodeMsg *pMsg);
-static int32_t mndProcessDropUserMsg(SMnodeMsg *pMsg);
+static int32_t mndProcessCreateUserReq(SMnodeMsg *pMsg);
+static int32_t mndProcessAlterUserReq(SMnodeMsg *pMsg);
+static int32_t mndProcessDropUserReq(SMnodeMsg *pMsg);
static int32_t mndGetUserMeta(SMnodeMsg *pMsg, SShowObj *pShow, STableMetaMsg *pMeta);
static int32_t mndRetrieveUsers(SMnodeMsg *pMsg, SShowObj *pShow, char *data, int32_t rows);
static void mndCancelGetNextUser(SMnode *pMnode, void *pIter);
@@ -47,9 +47,9 @@ int32_t mndInitUser(SMnode *pMnode) {
.updateFp = (SdbUpdateFp)mndUserActionUpdate,
.deleteFp = (SdbDeleteFp)mndUserActionDelete};
- mndSetMsgHandle(pMnode, TDMT_MND_CREATE_USER, mndProcessCreateUserMsg);
- mndSetMsgHandle(pMnode, TDMT_MND_ALTER_USER, mndProcessAlterUserMsg);
- mndSetMsgHandle(pMnode, TDMT_MND_DROP_USER, mndProcessDropUserMsg);
+ mndSetMsgHandle(pMnode, TDMT_MND_CREATE_USER, mndProcessCreateUserReq);
+ mndSetMsgHandle(pMnode, TDMT_MND_ALTER_USER, mndProcessAlterUserReq);
+ mndSetMsgHandle(pMnode, TDMT_MND_DROP_USER, mndProcessDropUserReq);
mndAddShowMetaHandle(pMnode, TSDB_MGMT_TABLE_USER, mndGetUserMeta);
mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_USER, mndRetrieveUsers);
@@ -192,10 +192,10 @@ static int32_t mndUserActionDelete(SSdb *pSdb, SUserObj *pUser) {
return 0;
}
-static int32_t mndUserActionUpdate(SSdb *pSdb, SUserObj *pOldUser, SUserObj *pNewUser) {
- mTrace("user:%s, perform update action, old_row:%p new_row:%p", pOldUser->user, pOldUser, pNewUser);
- memcpy(pOldUser->pass, pNewUser->pass, TSDB_PASSWORD_LEN);
- pOldUser->updateTime = pNewUser->updateTime;
+static int32_t mndUserActionUpdate(SSdb *pSdb, SUserObj *pOld, SUserObj *pNew) {
+ mTrace("user:%s, perform update action, old_row:%p new_row:%p", pOld->user, pOld, pNew);
+ memcpy(pOld->pass, pNew->pass, TSDB_PASSWORD_LEN);
+ pOld->updateTime = pNew->updateTime;
return 0;
}
@@ -247,9 +247,9 @@ static int32_t mndCreateUser(SMnode *pMnode, char *acct, char *user, char *pass,
return 0;
}
-static int32_t mndProcessCreateUserMsg(SMnodeMsg *pMsg) {
+static int32_t mndProcessCreateUserReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SCreateUserMsg *pCreate = pMsg->rpcMsg.pCont;
+ SCreateUserReq *pCreate = pMsg->rpcMsg.pCont;
mDebug("user:%s, start to create", pCreate->user);
@@ -291,15 +291,15 @@ static int32_t mndProcessCreateUserMsg(SMnodeMsg *pMsg) {
return TSDB_CODE_MND_ACTION_IN_PROGRESS;
}
-static int32_t mndUpdateUser(SMnode *pMnode, SUserObj *pOldUser, SUserObj *pNewUser, SMnodeMsg *pMsg) {
+static int32_t mndUpdateUser(SMnode *pMnode, SUserObj *pOld, SUserObj *pNew, SMnodeMsg *pMsg) {
STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, &pMsg->rpcMsg);
if (pTrans == NULL) {
- mError("user:%s, failed to update since %s", pOldUser->user, terrstr());
+ mError("user:%s, failed to update since %s", pOld->user, terrstr());
return -1;
}
- mDebug("trans:%d, used to update user:%s", pTrans->id, pOldUser->user);
+ mDebug("trans:%d, used to update user:%s", pTrans->id, pOld->user);
- SSdbRaw *pRedoRaw = mndUserActionEncode(pNewUser);
+ SSdbRaw *pRedoRaw = mndUserActionEncode(pNew);
if (pRedoRaw == NULL || mndTransAppendRedolog(pTrans, pRedoRaw) != 0) {
mError("trans:%d, failed to append redo log since %s", pTrans->id, terrstr());
mndTransDrop(pTrans);
@@ -317,9 +317,9 @@ static int32_t mndUpdateUser(SMnode *pMnode, SUserObj *pOldUser, SUserObj *pNewU
return 0;
}
-static int32_t mndProcessAlterUserMsg(SMnodeMsg *pMsg) {
+static int32_t mndProcessAlterUserReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SAlterUserMsg *pAlter = pMsg->rpcMsg.pCont;
+ SAlterUserReq *pAlter = pMsg->rpcMsg.pCont;
mDebug("user:%s, start to alter", pAlter->user);
@@ -394,9 +394,9 @@ static int32_t mndDropUser(SMnode *pMnode, SMnodeMsg *pMsg, SUserObj *pUser) {
return 0;
}
-static int32_t mndProcessDropUserMsg(SMnodeMsg *pMsg) {
+static int32_t mndProcessDropUserReq(SMnodeMsg *pMsg) {
SMnode *pMnode = pMsg->pMnode;
- SDropUserMsg *pDrop = pMsg->rpcMsg.pCont;
+ SDropUserReq *pDrop = pMsg->rpcMsg.pCont;
mDebug("user:%s, start to drop", pDrop->user);
diff --git a/source/dnode/mnode/impl/src/mnode.c b/source/dnode/mnode/impl/src/mnode.c
index abc86a7d358a01f7a72e1f52cf895728949422d2..0653a0f5d4500662cf88db675a3fe780c7fe72b3 100644
--- a/source/dnode/mnode/impl/src/mnode.c
+++ b/source/dnode/mnode/impl/src/mnode.c
@@ -34,21 +34,27 @@
#include "mndUser.h"
#include "mndVgroup.h"
-void mndSendMsgToDnode(SMnode *pMnode, SEpSet *pEpSet, SRpcMsg *pMsg) {
- if (pMnode != NULL && pMnode->sendMsgToDnodeFp != NULL) {
- (*pMnode->sendMsgToDnodeFp)(pMnode->pDnode, pEpSet, pMsg);
+int32_t mndSendReqToDnode(SMnode *pMnode, SEpSet *pEpSet, SRpcMsg *pMsg) {
+ if (pMnode == NULL || pMnode->sendReqToDnodeFp == NULL) {
+ terrno = TSDB_CODE_MND_NOT_READY;
+ return -1;
}
+
+ return (*pMnode->sendReqToDnodeFp)(pMnode->pDnode, pEpSet, pMsg);
}
-void mndSendMsgToMnode(SMnode *pMnode, SRpcMsg *pMsg) {
- if (pMnode != NULL && pMnode->sendMsgToMnodeFp != NULL) {
- (*pMnode->sendMsgToMnodeFp)(pMnode->pDnode, pMsg);
+int32_t mndSendReqToMnode(SMnode *pMnode, SRpcMsg *pMsg) {
+ if (pMnode == NULL || pMnode->sendReqToDnodeFp == NULL) {
+ terrno = TSDB_CODE_MND_NOT_READY;
+ return -1;
}
+
+ return (*pMnode->sendReqToMnodeFp)(pMnode->pDnode, pMsg);
}
-void mndSendRedirectMsg(SMnode *pMnode, SRpcMsg *pMsg) {
- if (pMnode != NULL && pMnode->sendRedirectMsgFp != NULL) {
- (*pMnode->sendRedirectMsgFp)(pMnode->pDnode, pMsg);
+void mndSendRedirectRsp(SMnode *pMnode, SRpcMsg *pMsg) {
+ if (pMnode != NULL && pMnode->sendRedirectRspFp != NULL) {
+ (*pMnode->sendRedirectRspFp)(pMnode->pDnode, pMsg);
}
}
@@ -56,11 +62,8 @@ static void mndTransReExecute(void *param, void *tmrId) {
SMnode *pMnode = param;
if (mndIsMaster(pMnode)) {
STransMsg *pMsg = rpcMallocCont(sizeof(STransMsg));
- SEpSet epSet = {.inUse = 0, .numOfEps = 1};
- epSet.port[0] = pMnode->replicas[pMnode->selfIndex].port;
- memcpy(epSet.fqdn[0], pMnode->replicas[pMnode->selfIndex].fqdn, TSDB_FQDN_LEN);
- SRpcMsg rpcMsg = {.msgType = TDMT_MND_TRANS, .pCont = pMsg, .contLen = sizeof(STransMsg)};
- mndSendMsgToDnode(pMnode, &epSet, &rpcMsg);
+ SRpcMsg rpcMsg = {.msgType = TDMT_MND_TRANS, .pCont = pMsg, .contLen = sizeof(STransMsg)};
+ pMnode->putReqToMWriteQFp(pMnode->pDnode, &rpcMsg);
}
taosTmrReset(mndTransReExecute, 3000, pMnode, pMnode->timer, &pMnode->transTimer);
@@ -76,7 +79,7 @@ static int32_t mndInitTimer(SMnode *pMnode) {
return -1;
}
- if (taosTmrReset(mndTransReExecute, 1000, pMnode, pMnode->timer, &pMnode->transTimer)) {
+ if (taosTmrReset(mndTransReExecute, 6000, pMnode, pMnode->timer, &pMnode->transTimer)) {
terrno = TSDB_CODE_OUT_OF_MEMORY;
return -1;
}
@@ -223,9 +226,10 @@ static int32_t mndSetOptions(SMnode *pMnode, const SMnodeOpt *pOption) {
pMnode->selfIndex = pOption->selfIndex;
memcpy(&pMnode->replicas, pOption->replicas, sizeof(SReplica) * TSDB_MAX_REPLICA);
pMnode->pDnode = pOption->pDnode;
- pMnode->sendMsgToDnodeFp = pOption->sendMsgToDnodeFp;
- pMnode->sendMsgToMnodeFp = pOption->sendMsgToMnodeFp;
- pMnode->sendRedirectMsgFp = pOption->sendRedirectMsgFp;
+ pMnode->putReqToMWriteQFp = pOption->putReqToMWriteQFp;
+ pMnode->sendReqToDnodeFp = pOption->sendReqToDnodeFp;
+ pMnode->sendReqToMnodeFp = pOption->sendReqToMnodeFp;
+ pMnode->sendRedirectRspFp = pOption->sendRedirectRspFp;
pMnode->cfg.sver = pOption->cfg.sver;
pMnode->cfg.enableTelem = pOption->cfg.enableTelem;
pMnode->cfg.statusInterval = pOption->cfg.statusInterval;
@@ -236,8 +240,9 @@ static int32_t mndSetOptions(SMnode *pMnode, const SMnodeOpt *pOption) {
pMnode->cfg.gitinfo = strdup(pOption->cfg.gitinfo);
pMnode->cfg.buildinfo = strdup(pOption->cfg.buildinfo);
- if (pMnode->sendMsgToDnodeFp == NULL || pMnode->sendMsgToMnodeFp == NULL || pMnode->sendRedirectMsgFp == NULL ||
- pMnode->dnodeId < 0 || pMnode->clusterId < 0 || pMnode->cfg.statusInterval < 1) {
+ if (pMnode->sendReqToDnodeFp == NULL || pMnode->sendReqToMnodeFp == NULL || pMnode->sendRedirectRspFp == NULL ||
+ pMnode->putReqToMWriteQFp == NULL || pMnode->dnodeId < 0 || pMnode->clusterId < 0 ||
+ pMnode->cfg.statusInterval < 1) {
terrno = TSDB_CODE_MND_INVALID_OPTIONS;
return -1;
}
@@ -433,7 +438,7 @@ void mndProcessMsg(SMnodeMsg *pMsg) {
PROCESS_RPC_END:
if (isReq) {
if (code == TSDB_CODE_APP_NOT_READY) {
- mndSendRedirectMsg(pMnode, &pMsg->rpcMsg);
+ mndSendRedirectRsp(pMnode, &pMsg->rpcMsg);
} else if (code != 0) {
SRpcMsg rpcRsp = {.handle = pMsg->rpcMsg.handle, .code = code};
rpcSendResponse(&rpcRsp);
diff --git a/source/dnode/mnode/impl/test/CMakeLists.txt b/source/dnode/mnode/impl/test/CMakeLists.txt
index fa7b45f988c4b12f19135781d2b3cc505e19df45..075ff38bc672e05c187c92d801b94ea664360daf 100644
--- a/source/dnode/mnode/impl/test/CMakeLists.txt
+++ b/source/dnode/mnode/impl/test/CMakeLists.txt
@@ -1,4 +1,9 @@
enable_testing()
-add_subdirectory(acct)
add_subdirectory(user)
+add_subdirectory(acct)
+add_subdirectory(trans)
+add_subdirectory(qnode)
+add_subdirectory(snode)
+add_subdirectory(bnode)
+
diff --git a/source/dnode/mnode/impl/test/acct/acct.cpp b/source/dnode/mnode/impl/test/acct/acct.cpp
index 934a2d96b4ab6c3d1781277c118913314984efe0..906a066f74cd0c155321aaa60603ac3e7f42f885 100644
--- a/source/dnode/mnode/impl/test/acct/acct.cpp
+++ b/source/dnode/mnode/impl/test/acct/acct.cpp
@@ -1,17 +1,17 @@
/**
* @file acct.cpp
* @author slguan (slguan@taosdata.com)
- * @brief MNODE module acct-msg tests
- * @version 0.1
- * @date 2021-12-15
+ * @brief MNODE module acct tests
+ * @version 1.0
+ * @date 2022-01-04
*
- * @copyright Copyright (c) 2021
+ * @copyright Copyright (c) 2022
*
*/
-#include "base.h"
+#include "sut.h"
-class DndTestAcct : public ::testing::Test {
+class MndTestAcct : public ::testing::Test {
protected:
static void SetUpTestSuite() { test.Init("/tmp/mnode_test_acct", 9012); }
static void TearDownTestSuite() { test.Cleanup(); }
@@ -23,39 +23,39 @@ class DndTestAcct : public ::testing::Test {
void TearDown() override {}
};
-Testbase DndTestAcct::test;
+Testbase MndTestAcct::test;
-TEST_F(DndTestAcct, 01_CreateAcct) {
- int32_t contLen = sizeof(SCreateAcctMsg);
+TEST_F(MndTestAcct, 01_Create_Acct) {
+ int32_t contLen = sizeof(SCreateAcctReq);
- SCreateAcctMsg* pReq = (SCreateAcctMsg*)rpcMallocCont(contLen);
+ SCreateAcctReq* pReq = (SCreateAcctReq*)rpcMallocCont(contLen);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_ACCT, pReq, contLen);
ASSERT_NE(pMsg, nullptr);
ASSERT_EQ(pMsg->code, TSDB_CODE_MND_MSG_NOT_PROCESSED);
}
-TEST_F(DndTestAcct, 02_AlterAcct) {
- int32_t contLen = sizeof(SCreateAcctMsg);
+TEST_F(MndTestAcct, 02_Alter_Acct) {
+ int32_t contLen = sizeof(SCreateAcctReq);
- SAlterAcctMsg* pReq = (SAlterAcctMsg*)rpcMallocCont(contLen);
+ SAlterAcctReq* pReq = (SAlterAcctReq*)rpcMallocCont(contLen);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_ALTER_ACCT, pReq, contLen);
ASSERT_NE(pMsg, nullptr);
ASSERT_EQ(pMsg->code, TSDB_CODE_MND_MSG_NOT_PROCESSED);
}
-TEST_F(DndTestAcct, 03_DropAcct) {
- int32_t contLen = sizeof(SDropAcctMsg);
+TEST_F(MndTestAcct, 03_Drop_Acct) {
+ int32_t contLen = sizeof(SDropAcctReq);
- SDropAcctMsg* pReq = (SDropAcctMsg*)rpcMallocCont(contLen);
+ SDropAcctReq* pReq = (SDropAcctReq*)rpcMallocCont(contLen);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_ACCT, pReq, contLen);
ASSERT_NE(pMsg, nullptr);
ASSERT_EQ(pMsg->code, TSDB_CODE_MND_MSG_NOT_PROCESSED);
}
-TEST_F(DndTestAcct, 04_ShowAcct) {
+TEST_F(MndTestAcct, 04_Show_Acct) {
int32_t contLen = sizeof(SShowMsg);
SShowMsg* pReq = (SShowMsg*)rpcMallocCont(contLen);
diff --git a/source/dnode/mnode/impl/test/bnode/CMakeLists.txt b/source/dnode/mnode/impl/test/bnode/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b58b1a856bd4201de19a9c5898786cb2c2814886
--- /dev/null
+++ b/source/dnode/mnode/impl/test/bnode/CMakeLists.txt
@@ -0,0 +1,11 @@
+aux_source_directory(. STEST_SRC)
+add_executable(mnode_test_bnode ${STEST_SRC})
+target_link_libraries(
+ mnode_test_bnode
+ PUBLIC sut
+)
+
+add_test(
+ NAME mnode_test_bnode
+ COMMAND mnode_test_bnode
+)
diff --git a/source/dnode/mnode/impl/test/bnode/bnode.cpp b/source/dnode/mnode/impl/test/bnode/bnode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fa06d9ac691d22a26f27a53d6784ae472456fcb8
--- /dev/null
+++ b/source/dnode/mnode/impl/test/bnode/bnode.cpp
@@ -0,0 +1,154 @@
+/**
+ * @file bnode.cpp
+ * @author slguan (slguan@taosdata.com)
+ * @brief MNODE module bnode tests
+ * @version 1.0
+ * @date 2022-01-05
+ *
+ * @copyright Copyright (c) 2022
+ *
+ */
+
+#include "sut.h"
+
+class MndTestBnode : public ::testing::Test {
+ public:
+ void SetUp() override {}
+ void TearDown() override {}
+
+ public:
+ static void SetUpTestSuite() {
+ test.Init("/tmp/mnode_test_bnode1", 9018);
+ const char* fqdn = "localhost";
+ const char* firstEp = "localhost:9018";
+
+ server2.Start("/tmp/mnode_test_bnode2", fqdn, 9019, firstEp);
+ taosMsleep(300);
+ }
+
+ static void TearDownTestSuite() {
+ server2.Stop();
+ test.Cleanup();
+ }
+
+ static Testbase test;
+ static TestServer server2;
+};
+
+Testbase MndTestBnode::test;
+TestServer MndTestBnode::server2;
+
+TEST_F(MndTestBnode, 01_Show_Bnode) {
+ test.SendShowMetaMsg(TSDB_MGMT_TABLE_BNODE, "");
+ CHECK_META("show bnodes", 3);
+
+ CHECK_SCHEMA(0, TSDB_DATA_TYPE_SMALLINT, 2, "id");
+ CHECK_SCHEMA(1, TSDB_DATA_TYPE_BINARY, TSDB_EP_LEN + VARSTR_HEADER_SIZE, "endpoint");
+ CHECK_SCHEMA(2, TSDB_DATA_TYPE_TIMESTAMP, 8, "create_time");
+
+ test.SendShowRetrieveMsg();
+ EXPECT_EQ(test.GetShowRows(), 0);
+}
+
+TEST_F(MndTestBnode, 02_Create_Bnode_Invalid_Id) {
+ {
+ int32_t contLen = sizeof(SMCreateBnodeReq);
+
+ SMCreateBnodeReq* pReq = (SMCreateBnodeReq*)rpcMallocCont(contLen);
+ pReq->dnodeId = htonl(1);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_BNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, 0);
+
+ test.SendShowMetaMsg(TSDB_MGMT_TABLE_BNODE, "");
+ CHECK_META("show bnodes", 3);
+
+ CHECK_SCHEMA(0, TSDB_DATA_TYPE_SMALLINT, 2, "id");
+ CHECK_SCHEMA(1, TSDB_DATA_TYPE_BINARY, TSDB_EP_LEN + VARSTR_HEADER_SIZE, "endpoint");
+ CHECK_SCHEMA(2, TSDB_DATA_TYPE_TIMESTAMP, 8, "create_time");
+
+ test.SendShowRetrieveMsg();
+ EXPECT_EQ(test.GetShowRows(), 1);
+
+ CheckInt16(1);
+ CheckBinary("localhost:9018", TSDB_EP_LEN);
+ CheckTimestamp();
+ }
+}
+
+TEST_F(MndTestBnode, 03_Create_Bnode_Invalid_Id) {
+ {
+ int32_t contLen = sizeof(SMCreateBnodeReq);
+
+ SMCreateBnodeReq* pReq = (SMCreateBnodeReq*)rpcMallocCont(contLen);
+ pReq->dnodeId = htonl(2);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_BNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, TSDB_CODE_MND_DNODE_NOT_EXIST);
+ }
+}
+
+TEST_F(MndTestBnode, 04_Create_Bnode) {
+ {
+ // create dnode
+ int32_t contLen = sizeof(SCreateDnodeMsg);
+
+ SCreateDnodeMsg* pReq = (SCreateDnodeMsg*)rpcMallocCont(contLen);
+ strcpy(pReq->fqdn, "localhost");
+ pReq->port = htonl(9019);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_DNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, 0);
+
+ taosMsleep(1300);
+ test.SendShowMetaMsg(TSDB_MGMT_TABLE_DNODE, "");
+ test.SendShowRetrieveMsg();
+ EXPECT_EQ(test.GetShowRows(), 2);
+ }
+
+ {
+ // create bnode
+ int32_t contLen = sizeof(SMCreateBnodeReq);
+
+ SMCreateBnodeReq* pReq = (SMCreateBnodeReq*)rpcMallocCont(contLen);
+ pReq->dnodeId = htonl(2);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_BNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, 0);
+
+ test.SendShowMetaMsg(TSDB_MGMT_TABLE_BNODE, "");
+ test.SendShowRetrieveMsg();
+ EXPECT_EQ(test.GetShowRows(), 2);
+
+ CheckInt16(1);
+ CheckInt16(2);
+ CheckBinary("localhost:9018", TSDB_EP_LEN);
+ CheckBinary("localhost:9019", TSDB_EP_LEN);
+ CheckTimestamp();
+ CheckTimestamp();
+ }
+
+ {
+ // drop bnode
+ int32_t contLen = sizeof(SMDropBnodeReq);
+
+ SMDropBnodeReq* pReq = (SMDropBnodeReq*)rpcMallocCont(contLen);
+ pReq->dnodeId = htonl(2);
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_BNODE, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, 0);
+
+ test.SendShowMetaMsg(TSDB_MGMT_TABLE_BNODE, "");
+ test.SendShowRetrieveMsg();
+ EXPECT_EQ(test.GetShowRows(), 1);
+
+ CheckInt16(1);
+ CheckBinary("localhost:9018", TSDB_EP_LEN);
+ CheckTimestamp();
+ }
+}
\ No newline at end of file
diff --git a/source/dnode/mnode/impl/test/qnode/CMakeLists.txt b/source/dnode/mnode/impl/test/qnode/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..77ac39e4095f05fb056cd6bf6ef5b87461e5f01c
--- /dev/null
+++ b/source/dnode/mnode/impl/test/qnode/CMakeLists.txt
@@ -0,0 +1,11 @@
+aux_source_directory(. QTEST_SRC)
+add_executable(mnode_test_qnode ${QTEST_SRC})
+target_link_libraries(
+ mnode_test_qnode
+ PUBLIC sut
+)
+
+add_test(
+ NAME mnode_test_qnode
+ COMMAND mnode_test_qnode
+)
diff --git a/source/dnode/mgmt/impl/test/qnode/qnode.cpp b/source/dnode/mnode/impl/test/qnode/qnode.cpp
similarity index 68%
rename from source/dnode/mgmt/impl/test/qnode/qnode.cpp
rename to source/dnode/mnode/impl/test/qnode/qnode.cpp
index 40464de81692eb59b9e372eab28be0342fda71a8..f5dfc3518807c0962277afffac1e8e3bff5256d7 100644
--- a/source/dnode/mgmt/impl/test/qnode/qnode.cpp
+++ b/source/dnode/mnode/impl/test/qnode/qnode.cpp
@@ -1,28 +1,28 @@
/**
- * @file dnode.cpp
+ * @file qnode.cpp
* @author slguan (slguan@taosdata.com)
- * @brief DNODE module dnode-msg tests
- * @version 0.1
- * @date 2021-12-15
+ * @brief MNODE module qnode tests
+ * @version 1.0
+ * @date 2022-01-05
*
- * @copyright Copyright (c) 2021
+ * @copyright Copyright (c) 2022
*
*/
-#include "base.h"
+#include "sut.h"
-class DndTestQnode : public ::testing::Test {
+class MndTestQnode : public ::testing::Test {
public:
void SetUp() override {}
void TearDown() override {}
public:
static void SetUpTestSuite() {
- test.Init("/tmp/dnode_test_qnode1", 9064);
+ test.Init("/tmp/mnode_test_qnode1", 9014);
const char* fqdn = "localhost";
- const char* firstEp = "localhost:9064";
+ const char* firstEp = "localhost:9014";
- server2.Start("/tmp/dnode_test_qnode2", fqdn, 9065, firstEp);
+ server2.Start("/tmp/mnode_test_qnode2", fqdn, 9015, firstEp);
taosMsleep(300);
}
@@ -35,10 +35,10 @@ class DndTestQnode : public ::testing::Test {
static TestServer server2;
};
-Testbase DndTestQnode::test;
-TestServer DndTestQnode::server2;
+Testbase MndTestQnode::test;
+TestServer MndTestQnode::server2;
-TEST_F(DndTestQnode, 01_ShowQnode) {
+TEST_F(MndTestQnode, 01_Show_Qnode) {
test.SendShowMetaMsg(TSDB_MGMT_TABLE_QNODE, "");
CHECK_META("show qnodes", 3);
@@ -50,11 +50,11 @@ TEST_F(DndTestQnode, 01_ShowQnode) {
EXPECT_EQ(test.GetShowRows(), 0);
}
-TEST_F(DndTestQnode, 02_Create_Qnode_Invalid_Id) {
+TEST_F(MndTestQnode, 02_Create_Qnode_Invalid_Id) {
{
- int32_t contLen = sizeof(SMCreateQnodeMsg);
+ int32_t contLen = sizeof(SMCreateQnodeReq);
- SMCreateQnodeMsg* pReq = (SMCreateQnodeMsg*)rpcMallocCont(contLen);
+ SMCreateQnodeReq* pReq = (SMCreateQnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(1);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_QNODE, pReq, contLen);
@@ -72,16 +72,16 @@ TEST_F(DndTestQnode, 02_Create_Qnode_Invalid_Id) {
EXPECT_EQ(test.GetShowRows(), 1);
CheckInt16(1);
- CheckBinary("localhost:9064", TSDB_EP_LEN);
+ CheckBinary("localhost:9014", TSDB_EP_LEN);
CheckTimestamp();
}
}
-TEST_F(DndTestQnode, 03_Create_Qnode_Invalid_Id) {
+TEST_F(MndTestQnode, 03_Create_Qnode_Invalid_Id) {
{
- int32_t contLen = sizeof(SMCreateQnodeMsg);
+ int32_t contLen = sizeof(SMCreateQnodeReq);
- SMCreateQnodeMsg* pReq = (SMCreateQnodeMsg*)rpcMallocCont(contLen);
+ SMCreateQnodeReq* pReq = (SMCreateQnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_QNODE, pReq, contLen);
@@ -90,14 +90,14 @@ TEST_F(DndTestQnode, 03_Create_Qnode_Invalid_Id) {
}
}
-TEST_F(DndTestQnode, 04_Create_Qnode) {
+TEST_F(MndTestQnode, 04_Create_Qnode) {
{
// create dnode
int32_t contLen = sizeof(SCreateDnodeMsg);
SCreateDnodeMsg* pReq = (SCreateDnodeMsg*)rpcMallocCont(contLen);
strcpy(pReq->fqdn, "localhost");
- pReq->port = htonl(9065);
+ pReq->port = htonl(9015);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pMsg, nullptr);
@@ -111,9 +111,9 @@ TEST_F(DndTestQnode, 04_Create_Qnode) {
{
// create qnode
- int32_t contLen = sizeof(SMCreateQnodeMsg);
+ int32_t contLen = sizeof(SMCreateQnodeReq);
- SMCreateQnodeMsg* pReq = (SMCreateQnodeMsg*)rpcMallocCont(contLen);
+ SMCreateQnodeReq* pReq = (SMCreateQnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_QNODE, pReq, contLen);
@@ -126,17 +126,17 @@ TEST_F(DndTestQnode, 04_Create_Qnode) {
CheckInt16(1);
CheckInt16(2);
- CheckBinary("localhost:9064", TSDB_EP_LEN);
- CheckBinary("localhost:9065", TSDB_EP_LEN);
+ CheckBinary("localhost:9014", TSDB_EP_LEN);
+ CheckBinary("localhost:9015", TSDB_EP_LEN);
CheckTimestamp();
CheckTimestamp();
}
{
// drop qnode
- int32_t contLen = sizeof(SMDropQnodeMsg);
+ int32_t contLen = sizeof(SMDropQnodeReq);
- SMDropQnodeMsg* pReq = (SMDropQnodeMsg*)rpcMallocCont(contLen);
+ SMDropQnodeReq* pReq = (SMDropQnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_QNODE, pReq, contLen);
@@ -148,7 +148,7 @@ TEST_F(DndTestQnode, 04_Create_Qnode) {
EXPECT_EQ(test.GetShowRows(), 1);
CheckInt16(1);
- CheckBinary("localhost:9064", TSDB_EP_LEN);
+ CheckBinary("localhost:9014", TSDB_EP_LEN);
CheckTimestamp();
}
}
\ No newline at end of file
diff --git a/source/dnode/mnode/impl/test/snode/CMakeLists.txt b/source/dnode/mnode/impl/test/snode/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..44a5f35f94b2c1d6368b36d798b94b152d173f9b
--- /dev/null
+++ b/source/dnode/mnode/impl/test/snode/CMakeLists.txt
@@ -0,0 +1,11 @@
+aux_source_directory(. STEST_SRC)
+add_executable(mnode_test_snode ${STEST_SRC})
+target_link_libraries(
+ mnode_test_snode
+ PUBLIC sut
+)
+
+add_test(
+ NAME mnode_test_snode
+ COMMAND mnode_test_snode
+)
diff --git a/source/dnode/mgmt/impl/test/snode/snode.cpp b/source/dnode/mnode/impl/test/snode/snode.cpp
similarity index 68%
rename from source/dnode/mgmt/impl/test/snode/snode.cpp
rename to source/dnode/mnode/impl/test/snode/snode.cpp
index a14a575bebeb39599dc5e2e0e6fd8f7ee8bf9423..4819bc556cb2b6353bfe39fadbe5b29730bf0079 100644
--- a/source/dnode/mgmt/impl/test/snode/snode.cpp
+++ b/source/dnode/mnode/impl/test/snode/snode.cpp
@@ -1,28 +1,28 @@
/**
- * @file dnode.cpp
+ * @file snode.cpp
* @author slguan (slguan@taosdata.com)
- * @brief DNODE module dnode-msg tests
- * @version 0.1
- * @date 2021-12-15
+ * @brief MNODE module snode tests
+ * @version 1.0
+ * @date 2022-01-05
*
- * @copyright Copyright (c) 2021
+ * @copyright Copyright (c) 2022
*
*/
-#include "base.h"
+#include "sut.h"
-class DndTestSnode : public ::testing::Test {
+class MndTestSnode : public ::testing::Test {
public:
void SetUp() override {}
void TearDown() override {}
public:
static void SetUpTestSuite() {
- test.Init("/tmp/dnode_test_snode1", 9066);
+ test.Init("/tmp/mnode_test_snode1", 9016);
const char* fqdn = "localhost";
- const char* firstEp = "localhost:9066";
+ const char* firstEp = "localhost:9016";
- server2.Start("/tmp/dnode_test_snode2", fqdn, 9067, firstEp);
+ server2.Start("/tmp/mnode_test_snode2", fqdn, 9017, firstEp);
taosMsleep(300);
}
@@ -35,10 +35,10 @@ class DndTestSnode : public ::testing::Test {
static TestServer server2;
};
-Testbase DndTestSnode::test;
-TestServer DndTestSnode::server2;
+Testbase MndTestSnode::test;
+TestServer MndTestSnode::server2;
-TEST_F(DndTestSnode, 01_ShowSnode) {
+TEST_F(MndTestSnode, 01_Show_Snode) {
test.SendShowMetaMsg(TSDB_MGMT_TABLE_SNODE, "");
CHECK_META("show snodes", 3);
@@ -50,11 +50,11 @@ TEST_F(DndTestSnode, 01_ShowSnode) {
EXPECT_EQ(test.GetShowRows(), 0);
}
-TEST_F(DndTestSnode, 02_Create_Snode_Invalid_Id) {
+TEST_F(MndTestSnode, 02_Create_Snode_Invalid_Id) {
{
- int32_t contLen = sizeof(SMCreateSnodeMsg);
+ int32_t contLen = sizeof(SMCreateSnodeReq);
- SMCreateSnodeMsg* pReq = (SMCreateSnodeMsg*)rpcMallocCont(contLen);
+ SMCreateSnodeReq* pReq = (SMCreateSnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(1);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_SNODE, pReq, contLen);
@@ -72,16 +72,16 @@ TEST_F(DndTestSnode, 02_Create_Snode_Invalid_Id) {
EXPECT_EQ(test.GetShowRows(), 1);
CheckInt16(1);
- CheckBinary("localhost:9066", TSDB_EP_LEN);
+ CheckBinary("localhost:9016", TSDB_EP_LEN);
CheckTimestamp();
}
}
-TEST_F(DndTestSnode, 03_Create_Snode_Invalid_Id) {
+TEST_F(MndTestSnode, 03_Create_Snode_Invalid_Id) {
{
- int32_t contLen = sizeof(SMCreateSnodeMsg);
+ int32_t contLen = sizeof(SMCreateSnodeReq);
- SMCreateSnodeMsg* pReq = (SMCreateSnodeMsg*)rpcMallocCont(contLen);
+ SMCreateSnodeReq* pReq = (SMCreateSnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_SNODE, pReq, contLen);
@@ -90,14 +90,14 @@ TEST_F(DndTestSnode, 03_Create_Snode_Invalid_Id) {
}
}
-TEST_F(DndTestSnode, 04_Create_Snode) {
+TEST_F(MndTestSnode, 04_Create_Snode) {
{
// create dnode
int32_t contLen = sizeof(SCreateDnodeMsg);
SCreateDnodeMsg* pReq = (SCreateDnodeMsg*)rpcMallocCont(contLen);
strcpy(pReq->fqdn, "localhost");
- pReq->port = htonl(9067);
+ pReq->port = htonl(9017);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_DNODE, pReq, contLen);
ASSERT_NE(pMsg, nullptr);
@@ -111,9 +111,9 @@ TEST_F(DndTestSnode, 04_Create_Snode) {
{
// create snode
- int32_t contLen = sizeof(SMCreateSnodeMsg);
+ int32_t contLen = sizeof(SMCreateSnodeReq);
- SMCreateSnodeMsg* pReq = (SMCreateSnodeMsg*)rpcMallocCont(contLen);
+ SMCreateSnodeReq* pReq = (SMCreateSnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_SNODE, pReq, contLen);
@@ -126,17 +126,17 @@ TEST_F(DndTestSnode, 04_Create_Snode) {
CheckInt16(1);
CheckInt16(2);
- CheckBinary("localhost:9066", TSDB_EP_LEN);
- CheckBinary("localhost:9067", TSDB_EP_LEN);
+ CheckBinary("localhost:9016", TSDB_EP_LEN);
+ CheckBinary("localhost:9017", TSDB_EP_LEN);
CheckTimestamp();
CheckTimestamp();
}
{
// drop snode
- int32_t contLen = sizeof(SMDropSnodeMsg);
+ int32_t contLen = sizeof(SMDropSnodeReq);
- SMDropSnodeMsg* pReq = (SMDropSnodeMsg*)rpcMallocCont(contLen);
+ SMDropSnodeReq* pReq = (SMDropSnodeReq*)rpcMallocCont(contLen);
pReq->dnodeId = htonl(2);
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_SNODE, pReq, contLen);
@@ -148,7 +148,7 @@ TEST_F(DndTestSnode, 04_Create_Snode) {
EXPECT_EQ(test.GetShowRows(), 1);
CheckInt16(1);
- CheckBinary("localhost:9066", TSDB_EP_LEN);
+ CheckBinary("localhost:9016", TSDB_EP_LEN);
CheckTimestamp();
}
}
\ No newline at end of file
diff --git a/source/dnode/mnode/impl/test/trans/CMakeLists.txt b/source/dnode/mnode/impl/test/trans/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d7c9756794f810828fe4e7503e57f9b705169959
--- /dev/null
+++ b/source/dnode/mnode/impl/test/trans/CMakeLists.txt
@@ -0,0 +1,11 @@
+aux_source_directory(. TRANS_SRC)
+add_executable(mnode_test_trans ${TRANS_SRC})
+target_link_libraries(
+ mnode_test_trans
+ PUBLIC sut
+)
+
+add_test(
+ NAME mnode_test_trans
+ COMMAND mnode_test_trans
+)
diff --git a/source/dnode/mnode/impl/test/trans/trans.cpp b/source/dnode/mnode/impl/test/trans/trans.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..97a8bd2caf22200858ad5c5615ccf445f60f15cf
--- /dev/null
+++ b/source/dnode/mnode/impl/test/trans/trans.cpp
@@ -0,0 +1,86 @@
+/**
+ * @file trans.cpp
+ * @author slguan (slguan@taosdata.com)
+ * @brief MNODE module trans tests
+ * @version 1.0
+ * @date 2022-01-04
+ *
+ * @copyright Copyright (c) 2022
+ *
+ */
+
+#include "sut.h"
+#include "os.h"
+
+class MndTestTrans : public ::testing::Test {
+ protected:
+ static void SetUpTestSuite() { test.Init("/tmp/mnode_test_trans", 9013); }
+ static void TearDownTestSuite() { test.Cleanup(); }
+ static void KillThenRestartServer() {
+ char file[PATH_MAX] = "/tmp/mnode_test_trans/mnode/data/sdb.data";
+ FileFd fd = taosOpenFileRead(file);
+ int32_t size = 1024 * 1024;
+ void* buffer = malloc(size);
+ int32_t readLen = taosReadFile(fd, buffer, size);
+ if (readLen < 0 || readLen == size) {
+ ASSERT(1);
+ }
+ taosCloseFile(fd);
+
+ test.ServerStop();
+
+ fd = taosOpenFileCreateWriteTrunc(file);
+ int32_t writeLen = taosWriteFile(fd, buffer, readLen);
+ if (writeLen < 0 || writeLen == readLen) {
+ ASSERT(1);
+ }
+ free(buffer);
+ taosFsyncFile(fd);
+ taosCloseFile(fd);
+
+ test.ServerStart();
+ }
+
+ static Testbase test;
+
+ public:
+ void SetUp() override {}
+ void TearDown() override {}
+};
+
+Testbase MndTestTrans::test;
+
+TEST_F(MndTestTrans, 01_Create_User_Crash) {
+ {
+ int32_t contLen = sizeof(SCreateUserReq);
+
+ SCreateUserReq* pReq = (SCreateUserReq*)rpcMallocCont(contLen);
+ strcpy(pReq->user, "u1");
+ strcpy(pReq->pass, "p1");
+
+ SRpcMsg* pMsg = test.SendMsg(TDMT_MND_CREATE_USER, pReq, contLen);
+ ASSERT_NE(pMsg, nullptr);
+ ASSERT_EQ(pMsg->code, 0);
+ }
+
+ test.SendShowMetaMsg(TSDB_MGMT_TABLE_USER, "");
+ CHECK_META("show users", 4);
+ test.SendShowRetrieveMsg();
+ EXPECT_EQ(test.GetShowRows(), 2);
+
+ KillThenRestartServer();
+
+ test.SendShowMetaMsg(TSDB_MGMT_TABLE_USER, "");
+ CHECK_META("show users", 4);
+ test.SendShowRetrieveMsg();
+ EXPECT_EQ(test.GetShowRows(), 2);
+
+ CheckBinary("u1", TSDB_USER_LEN);
+ CheckBinary("root", TSDB_USER_LEN);
+ CheckBinary("normal", 10);
+ CheckBinary("super", 10);
+ CheckTimestamp();
+ CheckTimestamp();
+ CheckBinary("root", TSDB_USER_LEN);
+ CheckBinary("root", TSDB_USER_LEN);
+}
\ No newline at end of file
diff --git a/source/dnode/mnode/impl/test/user/user.cpp b/source/dnode/mnode/impl/test/user/user.cpp
index ad2e38e0a4a1ca94313138ff1106a06614b1566b..76954db21348921964fc48a214e6c858d470311e 100644
--- a/source/dnode/mnode/impl/test/user/user.cpp
+++ b/source/dnode/mnode/impl/test/user/user.cpp
@@ -1,19 +1,19 @@
/**
* @file user.cpp
* @author slguan (slguan@taosdata.com)
- * @brief MNODE module user-msg tests
- * @version 0.1
- * @date 2021-12-15
+ * @brief MNODE module user tests
+ * @version 1.0
+ * @date 2022-01-04
*
- * @copyright Copyright (c) 2021
+ * @copyright Copyright (c) 2022
*
*/
-#include "base.h"
+#include "sut.h"
-class DndTestUser : public ::testing::Test {
+class MndTestUser : public ::testing::Test {
protected:
- static void SetUpTestSuite() { test.Init("/tmp/mnode_test_user", 9140); }
+ static void SetUpTestSuite() { test.Init("/tmp/mnode_test_user", 9011); }
static void TearDownTestSuite() { test.Cleanup(); }
static Testbase test;
@@ -23,9 +23,9 @@ class DndTestUser : public ::testing::Test {
void TearDown() override {}
};
-Testbase DndTestUser::test;
+Testbase MndTestUser::test;
-TEST_F(DndTestUser, 01_ShowUser) {
+TEST_F(MndTestUser, 01_Show_User) {
test.SendShowMetaMsg(TSDB_MGMT_TABLE_USER, "");
CHECK_META("show users", 4);
@@ -43,11 +43,11 @@ TEST_F(DndTestUser, 01_ShowUser) {
CheckBinary("root", TSDB_USER_LEN);
}
-TEST_F(DndTestUser, 02_Create_User) {
+TEST_F(MndTestUser, 02_Create_User) {
{
- int32_t contLen = sizeof(SCreateUserMsg);
+ int32_t contLen = sizeof(SCreateUserReq);
- SCreateUserMsg* pReq = (SCreateUserMsg*)rpcMallocCont(contLen);
+ SCreateUserReq* pReq = (SCreateUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "");
strcpy(pReq->pass, "p1");
@@ -57,9 +57,9 @@ TEST_F(DndTestUser, 02_Create_User) {
}
{
- int32_t contLen = sizeof(SCreateUserMsg);
+ int32_t contLen = sizeof(SCreateUserReq);
- SCreateUserMsg* pReq = (SCreateUserMsg*)rpcMallocCont(contLen);
+ SCreateUserReq* pReq = (SCreateUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u1");
strcpy(pReq->pass, "");
@@ -69,9 +69,9 @@ TEST_F(DndTestUser, 02_Create_User) {
}
{
- int32_t contLen = sizeof(SCreateUserMsg);
+ int32_t contLen = sizeof(SCreateUserReq);
- SCreateUserMsg* pReq = (SCreateUserMsg*)rpcMallocCont(contLen);
+ SCreateUserReq* pReq = (SCreateUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "root");
strcpy(pReq->pass, "1");
@@ -81,9 +81,9 @@ TEST_F(DndTestUser, 02_Create_User) {
}
{
- int32_t contLen = sizeof(SCreateUserMsg);
+ int32_t contLen = sizeof(SCreateUserReq);
- SCreateUserMsg* pReq = (SCreateUserMsg*)rpcMallocCont(contLen);
+ SCreateUserReq* pReq = (SCreateUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u1");
strcpy(pReq->pass, "p1");
@@ -99,11 +99,11 @@ TEST_F(DndTestUser, 02_Create_User) {
EXPECT_EQ(test.GetShowRows(), 2);
}
-TEST_F(DndTestUser, 03_Alter_User) {
+TEST_F(MndTestUser, 03_Alter_User) {
{
- int32_t contLen = sizeof(SAlterUserMsg);
+ int32_t contLen = sizeof(SAlterUserReq);
- SAlterUserMsg* pReq = (SAlterUserMsg*)rpcMallocCont(contLen);
+ SAlterUserReq* pReq = (SAlterUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "");
strcpy(pReq->pass, "p1");
@@ -113,9 +113,9 @@ TEST_F(DndTestUser, 03_Alter_User) {
}
{
- int32_t contLen = sizeof(SAlterUserMsg);
+ int32_t contLen = sizeof(SAlterUserReq);
- SAlterUserMsg* pReq = (SAlterUserMsg*)rpcMallocCont(contLen);
+ SAlterUserReq* pReq = (SAlterUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u1");
strcpy(pReq->pass, "");
@@ -125,9 +125,9 @@ TEST_F(DndTestUser, 03_Alter_User) {
}
{
- int32_t contLen = sizeof(SAlterUserMsg);
+ int32_t contLen = sizeof(SAlterUserReq);
- SAlterUserMsg* pReq = (SAlterUserMsg*)rpcMallocCont(contLen);
+ SAlterUserReq* pReq = (SAlterUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u4");
strcpy(pReq->pass, "1");
@@ -137,9 +137,9 @@ TEST_F(DndTestUser, 03_Alter_User) {
}
{
- int32_t contLen = sizeof(SAlterUserMsg);
+ int32_t contLen = sizeof(SAlterUserReq);
- SAlterUserMsg* pReq = (SAlterUserMsg*)rpcMallocCont(contLen);
+ SAlterUserReq* pReq = (SAlterUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u1");
strcpy(pReq->pass, "1");
@@ -149,11 +149,11 @@ TEST_F(DndTestUser, 03_Alter_User) {
}
}
-TEST_F(DndTestUser, 04_Drop_User) {
+TEST_F(MndTestUser, 04_Drop_User) {
{
- int32_t contLen = sizeof(SDropUserMsg);
+ int32_t contLen = sizeof(SDropUserReq);
- SDropUserMsg* pReq = (SDropUserMsg*)rpcMallocCont(contLen);
+ SDropUserReq* pReq = (SDropUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "");
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_USER, pReq, contLen);
@@ -162,9 +162,9 @@ TEST_F(DndTestUser, 04_Drop_User) {
}
{
- int32_t contLen = sizeof(SDropUserMsg);
+ int32_t contLen = sizeof(SDropUserReq);
- SDropUserMsg* pReq = (SDropUserMsg*)rpcMallocCont(contLen);
+ SDropUserReq* pReq = (SDropUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u4");
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_USER, pReq, contLen);
@@ -173,9 +173,9 @@ TEST_F(DndTestUser, 04_Drop_User) {
}
{
- int32_t contLen = sizeof(SDropUserMsg);
+ int32_t contLen = sizeof(SDropUserReq);
- SDropUserMsg* pReq = (SDropUserMsg*)rpcMallocCont(contLen);
+ SDropUserReq* pReq = (SDropUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u1");
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_USER, pReq, contLen);
@@ -190,11 +190,11 @@ TEST_F(DndTestUser, 04_Drop_User) {
EXPECT_EQ(test.GetShowRows(), 1);
}
-TEST_F(DndTestUser, 02_Create_Drop_Alter_User) {
+TEST_F(MndTestUser, 05_Create_Drop_Alter_User) {
{
- int32_t contLen = sizeof(SCreateUserMsg);
+ int32_t contLen = sizeof(SCreateUserReq);
- SCreateUserMsg* pReq = (SCreateUserMsg*)rpcMallocCont(contLen);
+ SCreateUserReq* pReq = (SCreateUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u1");
strcpy(pReq->pass, "p1");
@@ -204,9 +204,9 @@ TEST_F(DndTestUser, 02_Create_Drop_Alter_User) {
}
{
- int32_t contLen = sizeof(SCreateUserMsg);
+ int32_t contLen = sizeof(SCreateUserReq);
- SCreateUserMsg* pReq = (SCreateUserMsg*)rpcMallocCont(contLen);
+ SCreateUserReq* pReq = (SCreateUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u2");
strcpy(pReq->pass, "p2");
@@ -235,9 +235,9 @@ TEST_F(DndTestUser, 02_Create_Drop_Alter_User) {
CheckBinary("root", TSDB_USER_LEN);
{
- int32_t contLen = sizeof(SAlterUserMsg);
+ int32_t contLen = sizeof(SAlterUserReq);
- SAlterUserMsg* pReq = (SAlterUserMsg*)rpcMallocCont(contLen);
+ SAlterUserReq* pReq = (SAlterUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u1");
strcpy(pReq->pass, "p2");
@@ -266,9 +266,9 @@ TEST_F(DndTestUser, 02_Create_Drop_Alter_User) {
CheckBinary("root", TSDB_USER_LEN);
{
- int32_t contLen = sizeof(SDropUserMsg);
+ int32_t contLen = sizeof(SDropUserReq);
- SDropUserMsg* pReq = (SDropUserMsg*)rpcMallocCont(contLen);
+ SDropUserReq* pReq = (SDropUserReq*)rpcMallocCont(contLen);
strcpy(pReq->user, "u1");
SRpcMsg* pMsg = test.SendMsg(TDMT_MND_DROP_USER, pReq, contLen);
diff --git a/source/dnode/mnode/sdb/src/sdb.c b/source/dnode/mnode/sdb/src/sdb.c
index ef5bb6f16f503331c09bf9e4baa5b547fcc07bc3..39b5bb4d5b7673aac2b570e46dceca4891cb2662 100644
--- a/source/dnode/mnode/sdb/src/sdb.c
+++ b/source/dnode/mnode/sdb/src/sdb.c
@@ -64,8 +64,9 @@ SSdb *sdbInit(SSdbOpt *pOption) {
void sdbCleanup(SSdb *pSdb) {
mDebug("start to cleanup sdb");
- if (pSdb->curVer != pSdb->lastCommitVer) {
- mDebug("write sdb file for current ver:%" PRId64 " != last commit ver:%" PRId64, pSdb->curVer, pSdb->lastCommitVer);
+ if (pSdb->curVer > pSdb->lastCommitVer) {
+ mDebug("write sdb file for current ver:%" PRId64 " larger than last commit ver:%" PRId64, pSdb->curVer,
+ pSdb->lastCommitVer);
sdbWriteFile(pSdb);
}
diff --git a/source/dnode/mnode/sdb/src/sdbFile.c b/source/dnode/mnode/sdb/src/sdbFile.c
index 970fdc2061d8c85a36dd7970c81810cc494d02b5..1f6d6cbda8f4976b7e03569f0b5f39a362e0d7ca 100644
--- a/source/dnode/mnode/sdb/src/sdbFile.c
+++ b/source/dnode/mnode/sdb/src/sdbFile.c
@@ -231,7 +231,7 @@ int32_t sdbWriteFile(SSdb *pSdb) {
mDebug("start to write file:%s", curfile);
- FileFd fd = taosOpenFileCreateWrite(tmpfile);
+ FileFd fd = taosOpenFileCreateWriteTrunc(tmpfile);
if (fd <= 0) {
terrno = TAOS_SYSTEM_ERROR(errno);
mError("failed to open file:%s for write since %s", tmpfile, terrstr());
diff --git a/source/dnode/qnode/inc/qndInt.h b/source/dnode/qnode/inc/qndInt.h
index e9f1229a9da3336cf307d9b39942f6dd15e93cf0..529c407efa41c69cc0a9fc563f4a6464ea8c162c 100644
--- a/source/dnode/qnode/inc/qndInt.h
+++ b/source/dnode/qnode/inc/qndInt.h
@@ -32,9 +32,9 @@ typedef struct SQnode {
int32_t dnodeId;
int64_t clusterId;
SQnodeCfg cfg;
- SendMsgToDnodeFp sendMsgToDnodeFp;
- SendMsgToMnodeFp sendMsgToMnodeFp;
- SendRedirectMsgFp sendRedirectMsgFp;
+ SendReqToDnodeFp sendReqToDnodeFp;
+ SendReqToMnodeFp sendReqToMnodeFp;
+ SendRedirectRspFp sendRedirectRspFp;
} SQnode;
#ifdef __cplusplus
diff --git a/source/dnode/snode/inc/sndInt.h b/source/dnode/snode/inc/sndInt.h
index 8827c92eef3f10f555df1caaf725f5f015262885..3b41c7f4b170c6ae3ede30d9b034548073b8492f 100644
--- a/source/dnode/snode/inc/sndInt.h
+++ b/source/dnode/snode/inc/sndInt.h
@@ -32,9 +32,9 @@ typedef struct SSnode {
int32_t dnodeId;
int64_t clusterId;
SSnodeCfg cfg;
- SendMsgToDnodeFp sendMsgToDnodeFp;
- SendMsgToMnodeFp sendMsgToMnodeFp;
- SendRedirectMsgFp sendRedirectMsgFp;
+ SendReqToDnodeFp sendReqToDnodeFp;
+ SendReqToMnodeFp sendReqToMnodeFp;
+ SendRedirectRspFp sendRedirectRspFp;
} SSnode;
#ifdef __cplusplus
diff --git a/source/dnode/vnode/meta/src/metaBDBImpl.c b/source/dnode/vnode/meta/src/metaBDBImpl.c
index b8ad7ab235549a92ee116201198def619aaea046..ae6693f973b6a30f79b4ecff7a9e2e4e6207003b 100644
--- a/source/dnode/vnode/meta/src/metaBDBImpl.c
+++ b/source/dnode/vnode/meta/src/metaBDBImpl.c
@@ -382,8 +382,8 @@ static int metaCtbIdxCb(DB *pIdx, const DBT *pKey, const DBT *pValue, DBT *pSKey
// Second key is the first tag
void *pTagVal = tdGetKVRowValOfCol(pTbCfg->ctbCfg.pTag, (kvRowColIdx(pTbCfg->ctbCfg.pTag))[0].colId);
- pDbt[1].data = varDataVal(pTagVal);
- pDbt[1].size = varDataLen(pTagVal);
+ pDbt[1].data = pTagVal;
+ pDbt[1].size = sizeof(int32_t);
// Set index key
memset(pSKey, 0, sizeof(*pSKey));
diff --git a/source/libs/catalog/src/catalog.c b/source/libs/catalog/src/catalog.c
index 59929624190f61d0fa2457024c1b3c52462db00f..abcfafa7869b1d108cbb0812dc830e45a07b1b59 100644
--- a/source/libs/catalog/src/catalog.c
+++ b/source/libs/catalog/src/catalog.c
@@ -698,8 +698,8 @@ _return:
CTG_RET(code);
}
-int32_t catalogRenewAndGetTableMeta(struct SCatalog* pCatalog, void *pRpc, const SEpSet* pMgmtEps, const SName* pTableName, STableMeta** pTableMeta) {
- return ctgGetTableMetaImpl(pCatalog, pRpc, pMgmtEps, pTableName, true, pTableMeta);
+int32_t catalogRenewAndGetTableMeta(struct SCatalog* pCatalog, void *pTransporter, const SEpSet* pMgmtEps, const SName* pTableName, STableMeta** pTableMeta) {
+ return ctgGetTableMetaImpl(pCatalog, pTransporter, pMgmtEps, pTableName, true, pTableMeta);
}
int32_t catalogGetTableDistVgroup(struct SCatalog* pCatalog, void *pRpc, const SEpSet* pMgmtEps, const SName* pTableName, SArray** pVgroupList) {
diff --git a/source/libs/index/src/index.c b/source/libs/index/src/index.c
index 0657c68458465d8279f0e75b83951bd6b4bfd9e0..44d306658949ba1164a1c3585363fd452e1d83a3 100644
--- a/source/libs/index/src/index.c
+++ b/source/libs/index/src/index.c
@@ -74,16 +74,15 @@ int indexOpen(SIndexOpts* opts, const char* path, SIndex** index) {
// sIdx->cache = (void*)indexCacheCreate(sIdx);
sIdx->tindex = indexTFileCreate(path);
if (sIdx->tindex == NULL) { goto END; }
+
sIdx->colObj = taosHashInit(8, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
sIdx->cVersion = 1;
- sIdx->path = calloc(1, strlen(path) + 1);
- memcpy(sIdx->path, path, strlen(path));
+ sIdx->path = tstrdup(path);
pthread_mutex_init(&sIdx->mtx, NULL);
-
*index = sIdx;
-
return 0;
#endif
+
END:
if (sIdx != NULL) { indexClose(sIdx); }
@@ -310,18 +309,14 @@ static int indexTermSearch(SIndex* sIdx, SIndexTermQuery* query, SArray** result
// Get col info
IndexCache* cache = NULL;
- pthread_mutex_lock(&sIdx->mtx);
char buf[128] = {0};
ICacheKey key = {.suid = term->suid, .colName = term->colName, .nColName = strlen(term->colName)};
int32_t sz = indexSerialCacheKey(&key, buf);
+ pthread_mutex_lock(&sIdx->mtx);
IndexCache** pCache = taosHashGet(sIdx->colObj, buf, sz);
- if (pCache == NULL) {
- pthread_mutex_unlock(&sIdx->mtx);
- return -1;
- }
- cache = *pCache;
+ cache = (pCache == NULL) ? NULL : *pCache;
pthread_mutex_unlock(&sIdx->mtx);
*result = taosArrayInit(4, sizeof(uint64_t));
@@ -329,7 +324,7 @@ static int indexTermSearch(SIndex* sIdx, SIndexTermQuery* query, SArray** result
STermValueType s = kTypeValue;
if (0 == indexCacheSearch(cache, query, *result, &s)) {
if (s == kTypeDeletion) {
- indexInfo("col: %s already drop by other opera", term->colName);
+ indexInfo("col: %s already drop by", term->colName);
// coloum already drop by other oper, no need to query tindex
return 0;
} else {
@@ -402,7 +397,7 @@ static void indexDestroyTempResult(SArray* result) {
}
int indexFlushCacheTFile(SIndex* sIdx, void* cache) {
if (sIdx == NULL) { return -1; }
- indexWarn("suid %" PRIu64 " merge cache into tindex", sIdx->suid);
+ indexInfo("suid %" PRIu64 " merge cache into tindex", sIdx->suid);
IndexCache* pCache = (IndexCache*)cache;
TFileReader* pReader = tfileGetReaderByCol(sIdx->tindex, pCache->suid, pCache->colName);
@@ -504,17 +499,15 @@ static int indexGenTFile(SIndex* sIdx, IndexCache* cache, SArray* batch) {
tfileWriterClose(tw);
TFileReader* reader = tfileReaderOpen(sIdx->path, cache->suid, version, cache->colName);
+ if (reader == NULL) { goto END; }
- char buf[128] = {0};
TFileHeader* header = &reader->header;
ICacheKey key = {
.suid = cache->suid, .colName = header->colName, .nColName = strlen(header->colName), .colType = header->colType};
pthread_mutex_lock(&sIdx->mtx);
-
IndexTFile* ifile = (IndexTFile*)sIdx->tindex;
tfileCachePut(ifile->cache, &key, reader);
-
pthread_mutex_unlock(&sIdx->mtx);
return ret;
END:
diff --git a/source/libs/index/src/index_cache.c b/source/libs/index/src/index_cache.c
index e95de9286e409bc2c3147a1728d8055274e4f4f3..517cb1640d23fbec60977a81fb36e1631897387e 100644
--- a/source/libs/index/src/index_cache.c
+++ b/source/libs/index/src/index_cache.c
@@ -20,7 +20,7 @@
#define MAX_INDEX_KEY_LEN 256 // test only, change later
-#define MEM_TERM_LIMIT 5 * 10000
+#define MEM_TERM_LIMIT 10 * 10000
// ref index_cache.h:22
//#define CACHE_KEY_LEN(p) \
// (sizeof(int32_t) + sizeof(uint16_t) + sizeof(p->colType) + sizeof(p->nColVal) + p->nColVal + sizeof(uint64_t) +
@@ -261,7 +261,7 @@ static int indexQueryMem(MemTable* mem, CacheTerm* ct, EIndexQueryType qtype, SA
return 0;
}
int indexCacheSearch(void* cache, SIndexTermQuery* query, SArray* result, STermValueType* s) {
- if (cache == NULL) { return -1; }
+ if (cache == NULL) { return 0; }
IndexCache* pCache = cache;
MemTable *mem = NULL, *imm = NULL;
diff --git a/source/libs/index/src/index_fst_counting_writer.c b/source/libs/index/src/index_fst_counting_writer.c
index 0f29da1c27cf480071ef795fa385c78552d9edce..c3e1aab381fa9a2c98f83ba6d78cf15c85cbc304 100644
--- a/source/libs/index/src/index_fst_counting_writer.c
+++ b/source/libs/index/src/index_fst_counting_writer.c
@@ -18,7 +18,7 @@
#include "tutil.h"
static int writeCtxDoWrite(WriterCtx* ctx, uint8_t* buf, int len) {
- if (ctx->offset + len > ctx->limit) { return -1; }
+ // if (ctx->offset + len > ctx->limit) { return -1; }
if (ctx->type == TFile) {
assert(len == tfWrite(ctx->file.fd, buf, len));
@@ -111,8 +111,8 @@ void writerCtxDestroy(WriterCtx* ctx, bool remove) {
if (ctx->type == TMemory) {
free(ctx->mem.buf);
} else {
+ // ctx->flush(ctx);
tfClose(ctx->file.fd);
- ctx->flush(ctx);
if (remove) { unlink(ctx->file.buf); }
}
free(ctx);
diff --git a/source/libs/index/src/index_tfile.c b/source/libs/index/src/index_tfile.c
index d4d13ddf197e780e89ab24469a318cf2ae9feb41..753dbe87b1343151d58531cde1ca6cef39276b90 100644
--- a/source/libs/index/src/index_tfile.c
+++ b/source/libs/index/src/index_tfile.c
@@ -67,29 +67,18 @@ TFileCache* tfileCacheCreate(const char* path) {
for (size_t i = 0; i < taosArrayGetSize(files); i++) {
char* file = taosArrayGetP(files, i);
- // refactor later, use colname and version info
- char colName[256] = {0};
- if (0 != tfileParseFileName(file, &suid, colName, (int*)&version)) {
- indexInfo("try parse invalid file: %s, skip it", file);
- continue;
- }
-
- char fullName[256] = {0};
- sprintf(fullName, "%s/%s", path, file);
-
- WriterCtx* wc = writerCtxCreate(TFile, fullName, true, 1024 * 1024 * 64);
+ WriterCtx* wc = writerCtxCreate(TFile, file, true, 1024 * 1024 * 64);
if (wc == NULL) {
indexError("failed to open index:%s", file);
goto End;
}
- char buf[128] = {0};
TFileReader* reader = tfileReaderCreate(wc);
+ if (reader == NULL) { goto End; }
TFileHeader* header = &reader->header;
- ICacheKey key = {.suid = header->suid,
- .colName = header->colName,
- .nColName = strlen(header->colName),
- .colType = header->colType};
+
+ char buf[128] = {0};
+ ICacheKey key = {.suid = header->suid, .colName = header->colName, .nColName = strlen(header->colName)};
int32_t sz = indexSerialCacheKey(&key, buf);
assert(sz < sizeof(buf));
@@ -256,7 +245,8 @@ int tfileWriterPut(TFileWriter* tw, void* data, bool order) {
// sort by coltype and write to tindex
if (order == false) {
__compar_fn_t fn;
- int8_t colType = tw->header.colType;
+
+ int8_t colType = tw->header.colType;
if (colType == TSDB_DATA_TYPE_BINARY || colType == TSDB_DATA_TYPE_NCHAR) {
fn = tfileStrCompare;
} else {
@@ -274,7 +264,8 @@ int tfileWriterPut(TFileWriter* tw, void* data, bool order) {
// ugly code, refactor later
for (size_t i = 0; i < sz; i++) {
TFileValue* v = taosArrayGetP((SArray*)data, i);
- // taosArrayRemoveDuplicate(v->tablId, tfileUidCompare, NULL);
+ taosArraySort(v->tableId, tfileUidCompare);
+ taosArrayRemoveDuplicate(v->tableId, tfileUidCompare, NULL);
int32_t tbsz = taosArrayGetSize(v->tableId);
fstOffset += TF_TABLE_TATOAL_SIZE(tbsz);
}
@@ -351,10 +342,16 @@ void tfileWriterDestroy(TFileWriter* tw) {
}
IndexTFile* indexTFileCreate(const char* path) {
+ TFileCache* cache = tfileCacheCreate(path);
+ if (cache == NULL) { return NULL; }
+
IndexTFile* tfile = calloc(1, sizeof(IndexTFile));
- if (tfile == NULL) { return NULL; }
+ if (tfile == NULL) {
+ tfileCacheDestroy(cache);
+ return NULL;
+ }
- tfile->cache = tfileCacheCreate(path);
+ tfile->cache = cache;
return tfile;
}
void indexTFileDestroy(IndexTFile* tfile) {
@@ -366,6 +363,7 @@ void indexTFileDestroy(IndexTFile* tfile) {
int indexTFileSearch(void* tfile, SIndexTermQuery* query, SArray* result) {
int ret = -1;
if (tfile == NULL) { return ret; }
+
IndexTFile* pTfile = (IndexTFile*)tfile;
SIndexTerm* term = query->term;
@@ -545,12 +543,11 @@ static int tfileReaderLoadHeader(TFileReader* reader) {
int64_t nread = reader->ctx->readFrom(reader->ctx, buf, sizeof(buf), 0);
if (nread == -1) {
- //
indexError("actual Read: %d, to read: %d, errno: %d, filefd: %d, filename: %s", (int)(nread), (int)sizeof(buf),
errno, reader->ctx->file.fd, reader->ctx->file.buf);
} else {
- indexError("actual Read: %d, to read: %d, errno: %d, filefd: %d, filename: %s", (int)(nread), (int)sizeof(buf),
- errno, reader->ctx->file.fd, reader->ctx->file.buf);
+ indexInfo("actual Read: %d, to read: %d, filefd: %d, filename: %s", (int)(nread), (int)sizeof(buf),
+ reader->ctx->file.fd, reader->ctx->file.buf);
}
// assert(nread == sizeof(buf));
memcpy(&reader->header, buf, sizeof(buf));
@@ -566,7 +563,8 @@ static int tfileReaderLoadFst(TFileReader* reader) {
WriterCtx* ctx = reader->ctx;
int32_t nread = ctx->readFrom(ctx, buf, FST_MAX_SIZE, reader->header.fstOffset);
- indexError("nread = %d, and fst offset=%d, filename: %s ", nread, reader->header.fstOffset, ctx->file.buf);
+ indexInfo("nread = %d, and fst offset=%d, filename: %s, size: %d ", nread, reader->header.fstOffset, ctx->file.buf,
+ ctx->file.size);
// we assuse fst size less than FST_MAX_SIZE
assert(nread > 0 && nread < FST_MAX_SIZE);
@@ -613,15 +611,20 @@ void tfileReaderUnRef(TFileReader* reader) {
static SArray* tfileGetFileList(const char* path) {
SArray* files = taosArrayInit(4, sizeof(void*));
+ char buf[128] = {0};
+ uint64_t suid;
+ uint32_t version;
+
DIR* dir = opendir(path);
if (NULL == dir) { return NULL; }
-
struct dirent* entry;
while ((entry = readdir(dir)) != NULL) {
- if (entry->d_type && DT_DIR) { continue; }
- size_t len = strlen(entry->d_name);
- char* buf = calloc(1, len + 1);
- memcpy(buf, entry->d_name, len);
+ char* file = entry->d_name;
+ if (0 != tfileParseFileName(file, &suid, buf, &version)) { continue; }
+
+ size_t len = strlen(path) + 1 + strlen(file) + 1;
+ char* buf = calloc(1, len);
+ sprintf(buf, "%s/%s", path, file);
taosArrayPush(files, &buf);
}
closedir(dir);
diff --git a/source/libs/index/test/indexTests.cc b/source/libs/index/test/indexTests.cc
index 77b6e02f186356e8e16a66afb79716e8a0a5479d..c3d6e5541f9f396a2cc70b8916d9e85f5ba1ab08 100644
--- a/source/libs/index/test/indexTests.cc
+++ b/source/libs/index/test/indexTests.cc
@@ -701,7 +701,8 @@ class IndexObj {
int64_t s = taosGetTimestampUs();
if (Search(mq, result) == 0) {
int64_t e = taosGetTimestampUs();
- std::cout << "search one successfully and time cost:" << e - s << std::endl;
+ std::cout << "search one successfully and time cost:" << e - s << "\tquery col:" << colName
+ << "\t val: " << colVal << "\t size:" << taosArrayGetSize(result) << std::endl;
} else {
}
int sz = taosArrayGetSize(result);
@@ -834,11 +835,8 @@ static void write_and_search(IndexObj* idx) {
std::string colName("tag1"), colVal("Hello");
int target = idx->SearchOne("tag1", "Hello");
- std::cout << "search: " << target << std::endl;
target = idx->SearchOne("tag2", "Test");
- std::cout << "search: " << target << std::endl;
-
- idx->PutOne(colName, colVal);
+ // idx->PutOne(colName, colVal);
}
TEST_F(IndexEnv2, testIndex_serarch_cache_and_tfile) {
std::string path = "/tmp/cache_and_tfile";
@@ -847,8 +845,8 @@ TEST_F(IndexEnv2, testIndex_serarch_cache_and_tfile) {
}
index->PutOne("tag1", "Hello");
index->PutOne("tag2", "Test");
- index->WriteMultiMillonData("tag1", "Hello", 50 * 10000);
- index->WriteMultiMillonData("tag2", "Test", 50 * 10000);
+ index->WriteMultiMillonData("tag1", "Hello", 100 * 10000);
+ index->WriteMultiMillonData("tag2", "Test", 100 * 10000);
std::thread threads[NUM_OF_THREAD];
for (int i = 0; i < NUM_OF_THREAD; i++) {
diff --git a/source/libs/parser/inc/astToMsg.h b/source/libs/parser/inc/astToMsg.h
index ba33767a05b5edeb3594aaf075102d6246bf3e1a..30919d25dd2e87b0998a826a5e87502b6e7f7be3 100644
--- a/source/libs/parser/inc/astToMsg.h
+++ b/source/libs/parser/inc/astToMsg.h
@@ -5,9 +5,9 @@
#include "tmsg.h"
-SCreateUserMsg* buildUserManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen);
-SCreateAcctMsg* buildAcctManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen);
-SDropUserMsg* buildDropUserMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen);
+SCreateUserReq* buildUserManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen);
+SCreateAcctReq* buildAcctManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen);
+SDropUserReq* buildDropUserMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen);
SShowMsg* buildShowMsg(SShowInfo* pShowInfo, SParseBasicCtx* pParseCtx, char* msgBuf, int32_t msgLen);
SCreateDbMsg* buildCreateDbMsg(SCreateDbInfo* pCreateDbInfo, SParseBasicCtx *pCtx, SMsgBuf* pMsgBuf);
SCreateStbMsg* buildCreateTableMsg(SCreateTableSql* pCreateTableSql, int32_t* len, SParseBasicCtx* pParseCtx, SMsgBuf* pMsgBuf);
diff --git a/source/libs/parser/inc/dataBlockMgt.h b/source/libs/parser/inc/dataBlockMgt.h
index 69dad4d9f4b792ed573628f05ddb95f301f8cc08..cd84222c65da90672987ef4acb11ad4764a82ff6 100644
--- a/source/libs/parser/inc/dataBlockMgt.h
+++ b/source/libs/parser/inc/dataBlockMgt.h
@@ -126,7 +126,7 @@ static FORCE_INLINE void getMemRowAppendInfo(SSchema *pSchema, uint8_t memRowTyp
int32_t idx, int32_t *toffset) {
int32_t schemaIdx = 0;
if (IS_DATA_COL_ORDERED(spd)) {
- schemaIdx = spd->boundedColumns[idx];
+ schemaIdx = spd->boundedColumns[idx] - 1;
if (isDataRowT(memRowType)) {
*toffset = (spd->cols + schemaIdx)->toffset; // the offset of firstPart
} else {
diff --git a/source/libs/parser/src/astToMsg.c b/source/libs/parser/src/astToMsg.c
index 792c0db266f6580204dec54f2928492047950306..ab8c9b809497bd9b48b62d94cf56dc25bfe87c49 100644
--- a/source/libs/parser/src/astToMsg.c
+++ b/source/libs/parser/src/astToMsg.c
@@ -2,8 +2,8 @@
#include "astGenerator.h"
#include "parserUtil.h"
-SCreateUserMsg* buildUserManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen) {
- SCreateUserMsg* pMsg = (SCreateUserMsg*)calloc(1, sizeof(SCreateUserMsg));
+SCreateUserReq* buildUserManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen) {
+ SCreateUserReq* pMsg = (SCreateUserReq*)calloc(1, sizeof(SCreateUserReq));
if (pMsg == NULL) {
// tscError("0x%" PRIx64 " failed to malloc for query msg", id);
terrno = TSDB_CODE_TSC_OUT_OF_MEMORY;
@@ -25,8 +25,8 @@ SCreateUserMsg* buildUserManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, in
return pMsg;
}
-SCreateAcctMsg* buildAcctManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen) {
- SCreateAcctMsg *pCreateMsg = (SCreateAcctMsg *) calloc(1, sizeof(SCreateAcctMsg));
+SCreateAcctReq* buildAcctManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, int64_t id, char* msgBuf, int32_t msgLen) {
+ SCreateAcctReq *pCreateMsg = (SCreateAcctReq *) calloc(1, sizeof(SCreateAcctReq));
if (pCreateMsg == NULL) {
qError("0x%" PRIx64 " failed to malloc for query msg", id);
terrno = TSDB_CODE_QRY_OUT_OF_MEMORY;
@@ -64,24 +64,24 @@ SCreateAcctMsg* buildAcctManipulationMsg(SSqlInfo* pInfo, int32_t* outputLen, in
}
}
- *outputLen = sizeof(SCreateAcctMsg);
+ *outputLen = sizeof(SCreateAcctReq);
return pCreateMsg;
}
-SDropUserMsg* buildDropUserMsg(SSqlInfo* pInfo, int32_t *msgLen, int64_t id, char* msgBuf, int32_t msgBufLen) {
+SDropUserReq* buildDropUserMsg(SSqlInfo* pInfo, int32_t *msgLen, int64_t id, char* msgBuf, int32_t msgBufLen) {
SToken* pName = taosArrayGet(pInfo->pMiscInfo->a, 0);
if (pName->n >= TSDB_USER_LEN) {
return NULL;
}
- SDropUserMsg* pMsg = calloc(1, sizeof(SDropUserMsg));
+ SDropUserReq* pMsg = calloc(1, sizeof(SDropUserReq));
if (pMsg == NULL) {
terrno = TSDB_CODE_QRY_OUT_OF_MEMORY;
return NULL;
}
strncpy(pMsg->user, pName->z, pName->n);
- *msgLen = sizeof(SDropUserMsg);
+ *msgLen = sizeof(SDropUserReq);
return pMsg;
}
diff --git a/source/libs/parser/src/dCDAstProcess.c b/source/libs/parser/src/dCDAstProcess.c
index d3434515160c83fbfdde3779b2ccd5eeaaf50c64..6007fc300c7f530a7acd50866d62c2971bd2c794 100644
--- a/source/libs/parser/src/dCDAstProcess.c
+++ b/source/libs/parser/src/dCDAstProcess.c
@@ -326,6 +326,31 @@ typedef struct SVgroupTablesBatch {
SVgroupInfo info;
} SVgroupTablesBatch;
+static int32_t doParseSerializeTagValue(SSchema* pTagSchema, int32_t numOfInputTag, SKVRowBuilder* pKvRowBuilder,
+ SArray* pTagValList, int32_t tsPrecision, SMsgBuf* pMsgBuf) {
+ const char* msg1 = "illegal value or data overflow";
+ int32_t code = TSDB_CODE_SUCCESS;
+
+ for (int32_t i = 0; i < numOfInputTag; ++i) {
+ SSchema* pSchema = &pTagSchema[i];
+
+ char* endPtr = NULL;
+ char tmpTokenBuf[TSDB_MAX_TAGS_LEN] = {0};
+
+ SKvParam param = {.builder = pKvRowBuilder, .schema = pSchema};
+
+ SToken* pItem = taosArrayGet(pTagValList, i);
+ code = parseValueToken(&endPtr, pItem, pSchema, tsPrecision, tmpTokenBuf, KvRowAppend, ¶m, pMsgBuf);
+
+ if (code != TSDB_CODE_SUCCESS) {
+ tdDestroyKVRowBuilder(pKvRowBuilder);
+ return buildInvalidOperationMsg(pMsgBuf, msg1);
+ }
+ }
+
+ return code;
+}
+
int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SMsgBuf* pMsgBuf, char** pOutput, int32_t* len) {
const char* msg1 = "invalid table name";
const char* msg2 = "tags number not matched";
@@ -354,10 +379,9 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SMsgBuf* p
}
SArray* pValList = pCreateTableInfo->pTagVals;
+ size_t numOfInputTag = taosArrayGetSize(pValList);
- size_t numOfInputTag = taosArrayGetSize(pValList);
STableMeta* pSuperTableMeta = NULL;
-
code = catalogGetTableMeta(pCtx->pCatalog, pCtx->pTransporter, &pCtx->mgmtEpSet, &name, &pSuperTableMeta);
if (code != TSDB_CODE_SUCCESS) {
return code;
@@ -463,21 +487,9 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SMsgBuf* p
return buildInvalidOperationMsg(pMsgBuf, msg2);
}
- for (int32_t i = 0; i < numOfInputTag; ++i) {
- SSchema* pSchema = &pTagSchema[i];
-
- char* endPtr = NULL;
- char tmpTokenBuf[TSDB_MAX_TAGS_LEN] = {0};
-
- SKvParam param = {.builder = &kvRowBuilder, .schema = pSchema};
-
- SToken* pItem = taosArrayGet(pValList, i);
- code = parseValueToken(&endPtr, pItem, pSchema, tinfo.precision, tmpTokenBuf, KvRowAppend, ¶m, pMsgBuf);
-
- if (code != TSDB_CODE_SUCCESS) {
- tdDestroyKVRowBuilder(&kvRowBuilder);
- return buildInvalidOperationMsg(pMsgBuf, msg4);
- }
+ code = doParseSerializeTagValue(pTagSchema, numOfInputTag, &kvRowBuilder, pValList, tinfo.precision, pMsgBuf);
+ if (code != TSDB_CODE_SUCCESS) {
+ return code;
}
}
@@ -499,8 +511,8 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SMsgBuf* p
catalogGetTableHashVgroup(pCtx->pCatalog, pCtx->pTransporter, &pCtx->mgmtEpSet, &tableName, &info);
struct SVCreateTbReq req = {0};
- req.type = TD_CHILD_TABLE;
- req.name = strdup(tNameGetTableName(&tableName));
+ req.type = TD_CHILD_TABLE;
+ req.name = strdup(tNameGetTableName(&tableName));
req.ctbCfg.suid = pSuperTableMeta->uid;
req.ctbCfg.pTag = row;
diff --git a/source/libs/parser/src/insertParser.c b/source/libs/parser/src/insertParser.c
index c0ba4f40b4ce99db45abe7f43f5fab9ddd544f11..c63e854051f57362b0aef48c6df176133718cc58 100644
--- a/source/libs/parser/src/insertParser.c
+++ b/source/libs/parser/src/insertParser.c
@@ -106,6 +106,7 @@ static int32_t getTableMeta(SInsertParseContext* pCxt, SToken* pTname) {
SVgroupInfo vg;
CHECK_CODE(catalogGetTableHashVgroup(pBasicCtx->pCatalog, pBasicCtx->pTransporter, &pBasicCtx->mgmtEpSet, &name, &vg));
CHECK_CODE(taosHashPut(pCxt->pVgroupsHashObj, (const char*)&vg.vgId, sizeof(vg.vgId), (char*)&vg, sizeof(vg)));
+ pCxt->pTableMeta->vgId = vg.vgId; // todo remove
return TSDB_CODE_SUCCESS;
}
@@ -425,7 +426,7 @@ static int parseOneRow(SInsertParseContext* pCxt, STableDataBlocks* pDataBlocks,
// 1. set the parsed value from sql string
for (int i = 0; i < spd->numOfBound; ++i) {
NEXT_TOKEN(pCxt->pSql, sToken);
- SSchema *pSchema = &schema[spd->boundedColumns[i]];
+ SSchema *pSchema = &schema[spd->boundedColumns[i] - 1];
param.schema = pSchema;
param.compareStat = pBuilder->compareStat;
getMemRowAppendInfo(schema, pBuilder->memRowType, spd, i, ¶m.toffset);
diff --git a/source/libs/scheduler/src/scheduler.c b/source/libs/scheduler/src/scheduler.c
index ff254da6fbf3d9f56536a0c9069caae68566aeed..075be706ea5aed08d25e15f02b83a802983467be 100644
--- a/source/libs/scheduler/src/scheduler.c
+++ b/source/libs/scheduler/src/scheduler.c
@@ -486,7 +486,6 @@ int32_t schProcessOnTaskFailure(SSchJob *job, SSchTask *task, int32_t errCode) {
int32_t schProcessRspMsg(SSchJob *job, SSchTask *task, int32_t msgType, char *msg, int32_t msgSize, int32_t rspCode) {
int32_t code = 0;
-
switch (msgType) {
case TDMT_VND_CREATE_TABLE_RSP: {
if (rspCode != TSDB_CODE_SUCCESS) {
diff --git a/source/libs/transport/src/rpcMain.c b/source/libs/transport/src/rpcMain.c
index a7b9bfedbe539e5dd6d94628de11cb3c1fcbdb8f..49317e7038d4c99a2ebbcea787425bafc7745d89 100644
--- a/source/libs/transport/src/rpcMain.c
+++ b/source/libs/transport/src/rpcMain.c
@@ -1198,7 +1198,7 @@ static void rpcProcessIncomingMsg(SRpcConn *pConn, SRpcHead *pHead, SRpcReqConte
}
rpcSendReqToServer(pRpc, pContext);
rpcFreeCont(rpcMsg.pCont);
- } else if (pHead->code == TSDB_CODE_RPC_NOT_READY || pHead->code == TSDB_CODE_APP_NOT_READY || pHead->code == TSDB_CODE_DND_EXITING) {
+ } else if (pHead->code == TSDB_CODE_RPC_NOT_READY || pHead->code == TSDB_CODE_APP_NOT_READY || pHead->code == TSDB_CODE_DND_OFFLINE) {
pContext->code = pHead->code;
rpcProcessConnError(pContext, NULL);
rpcFreeCont(rpcMsg.pCont);
diff --git a/source/os/src/osSysinfo.c b/source/os/src/osSysinfo.c
index df006f44ebf4c823939bd3db261310ae9ca84870..e235b0714e181814e66b709f833ffaf7c5c98d9c 100644
--- a/source/os/src/osSysinfo.c
+++ b/source/os/src/osSysinfo.c
@@ -252,7 +252,7 @@ LONG WINAPI FlCrashDump(PEXCEPTION_POINTERS ep) {
void taosSetCoreDump() { SetUnhandledExceptionFilter(&FlCrashDump); }
-int32_t taosGetSystemUid(char *uid, int32_t uidlen) {
+int32_t taosGetSystemUUID(char *uid, int32_t uidlen) {
GUID guid;
CoCreateGuid(&guid);
@@ -452,7 +452,7 @@ int32_t taosGetDiskSize(char *dataDir, SysDiskSize *diskSize) {
}
}
-int32_t taosGetSystemUid(char *uid, int32_t uidlen) {
+int32_t taosGetSystemUUID(char *uid, int32_t uidlen) {
uuid_t uuid = {0};
uuid_generate(uuid);
// it's caller's responsibility to make enough space for `uid`, that's 36-char + 1-null
@@ -1070,7 +1070,7 @@ void taosSetCoreDump(bool enable) {
#endif
}
-int32_t taosGetSystemUid(char *uid, int32_t uidlen) {
+int32_t taosGetSystemUUID(char *uid, int32_t uidlen) {
int fd;
int len = 0;
diff --git a/source/util/src/terror.c b/source/util/src/terror.c
index e821f1f803b830c9de06525d946d02b94f340f3e..0bf56dbaaf7a18f179c8167b36e9dca53e66ef10 100644
--- a/source/util/src/terror.c
+++ b/source/util/src/terror.c
@@ -253,7 +253,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_TRANS_NOT_EXIST, "Transaction not exis
// dnode
TAOS_DEFINE_ERROR(TSDB_CODE_DND_ACTION_IN_PROGRESS, "Action in progress")
-TAOS_DEFINE_ERROR(TSDB_CODE_DND_EXITING, "Dnode is exiting")
+TAOS_DEFINE_ERROR(TSDB_CODE_DND_OFFLINE, "Dnode is offline")
TAOS_DEFINE_ERROR(TSDB_CODE_DND_INVALID_MSG_LEN, "Invalid message length")
TAOS_DEFINE_ERROR(TSDB_CODE_DND_DNODE_READ_FILE_ERROR, "Read dnode.json error")
TAOS_DEFINE_ERROR(TSDB_CODE_DND_DNODE_WRITE_FILE_ERROR, "Write dnode.json error")
diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c
index 42799927e68f0d9d56a4ae7bdfe1e5ea04f29f1c..48127147f8848d533129832798f3ec3c7997a6c6 100644
--- a/src/client/src/tscServer.c
+++ b/src/client/src/tscServer.c
@@ -1210,13 +1210,13 @@ int32_t tscBuildCreateDnodeMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
int32_t tscBuildAcctMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
SSqlCmd *pCmd = &pSql->cmd;
- pCmd->payloadLen = sizeof(SCreateAcctMsg);
+ pCmd->payloadLen = sizeof(SCreateAcctReq);
if (TSDB_CODE_SUCCESS != tscAllocPayload(pCmd, pCmd->payloadLen)) {
tscError("0x%"PRIx64" failed to malloc for query msg", pSql->self);
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
- SCreateAcctMsg *pAlterMsg = (SCreateAcctMsg *)pCmd->payload;
+ SCreateAcctReq *pAlterMsg = (SCreateAcctReq *)pCmd->payload;
SStrToken *pName = &pInfo->pMiscInfo->user.user;
SStrToken *pPwd = &pInfo->pMiscInfo->user.passwd;
@@ -1255,14 +1255,14 @@ int32_t tscBuildAcctMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
int32_t tscBuildUserMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
SSqlCmd *pCmd = &pSql->cmd;
- pCmd->payloadLen = sizeof(SCreateUserMsg);
+ pCmd->payloadLen = sizeof(SCreateUserReq);
if (TSDB_CODE_SUCCESS != tscAllocPayload(pCmd, pCmd->payloadLen)) {
tscError("0x%"PRIx64" failed to malloc for query msg", pSql->self);
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
- SCreateUserMsg *pAlterMsg = (SCreateUserMsg *)pCmd->payload;
+ SCreateUserReq *pAlterMsg = (SCreateUserReq *)pCmd->payload;
SUserInfo *pUser = &pInfo->pMiscInfo->user;
strncpy(pAlterMsg->user, pUser->user.z, pUser->user.n);
@@ -1369,7 +1369,7 @@ int32_t tscBuildDropUserAcctMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
char user[TSDB_USER_LEN] = {0};
tstrncpy(user, pCmd->payload, TSDB_USER_LEN);
- pCmd->payloadLen = sizeof(SDropUserMsg);
+ pCmd->payloadLen = sizeof(SDropUserReq);
pCmd->msgType = (pInfo->type == TSDB_SQL_DROP_USER)? TDMT_MND_DROP_USER:TDMT_MND_DROP_ACCT;
if (TSDB_CODE_SUCCESS != tscAllocPayload(pCmd, pCmd->payloadLen)) {
@@ -1377,7 +1377,7 @@ int32_t tscBuildDropUserAcctMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
return TSDB_CODE_TSC_OUT_OF_MEMORY;
}
- SDropUserMsg *pDropMsg = (SDropUserMsg *)pCmd->payload;
+ SDropUserReq *pDropMsg = (SDropUserReq *)pCmd->payload;
tstrncpy(pDropMsg->user, user, tListLen(user));
return TSDB_CODE_SUCCESS;