From ebd862ded4b05a840f4520208379a47bb5939f61 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 18 Feb 2022 13:34:55 +0800 Subject: [PATCH] trans type --- source/dnode/mnode/impl/inc/mndDb.h | 1 + source/dnode/mnode/impl/inc/mndDef.h | 57 ++++++++++++++------------ source/dnode/mnode/impl/src/mndDb.c | 3 ++ source/dnode/mnode/impl/src/mndStb.c | 3 ++ source/dnode/mnode/impl/src/mndTrans.c | 13 +++++- 5 files changed, 50 insertions(+), 27 deletions(-) diff --git a/source/dnode/mnode/impl/inc/mndDb.h b/source/dnode/mnode/impl/inc/mndDb.h index b6264e6db9..125b0d3191 100644 --- a/source/dnode/mnode/impl/inc/mndDb.h +++ b/source/dnode/mnode/impl/inc/mndDb.h @@ -27,6 +27,7 @@ void mndCleanupDb(SMnode *pMnode); SDbObj *mndAcquireDb(SMnode *pMnode, const char *db); void mndReleaseDb(SMnode *pMnode, SDbObj *pDb); int32_t mndValidateDbInfo(SMnode *pMnode, SDbVgVersion *pDbs, int32_t numOfDbs, void **ppRsp, int32_t *pRspLen); +char *mnGetDbStr(char *src); #ifdef __cplusplus } diff --git a/source/dnode/mnode/impl/inc/mndDef.h b/source/dnode/mnode/impl/inc/mndDef.h index 53b5846ddc..a092882e1f 100644 --- a/source/dnode/mnode/impl/inc/mndDef.h +++ b/source/dnode/mnode/impl/inc/mndDef.h @@ -105,34 +105,39 @@ typedef enum { } ETrnStage; typedef enum { - TRN_TYPE_START = 0, - TRN_TYPE_CREATE_MNODE = 1, - TRN_TYPE_DROP_MNODE = 2, - TRN_TYPE_CREATE_DNODE = 3, - TRN_TYPE_DROP_DNODE = 4, - TRN_TYPE_CREATE_SNODE = 5, - TRN_TYPE_DROP_SNODE = 6, - TRN_TYPE_CREATE_QNODE = 7, - TRN_TYPE_DROP_QNODE = 8, - TRN_TYPE_CREATE_BNODE = 9, - TRN_TYPE_DROP_BNODE = 10, - TRN_TYPE_DB_START = 1000, - TRN_TYPE_CREATE_DB = 1001, - TRN_TYPE_ALTER_DB = 1002, - TRN_TYPE_DROP_DB = 1003, + TRN_TYPE_BASIC_SCOPE = 1000, + TRN_TYPE_CREATE_USER = 1001, + TRN_TYPE_ALTER_USER = 1002, + TRN_TYPE_DROP_USER = 1003, TRN_TYPE_CREATE_FUNC = 1004, TRN_TYPE_DROP_FUNC = 1005, - TRN_TYPE_CREATE_STB = 1006, - TRN_TYPE_ALTER_STB = 1007, - TRN_TYPE_DROP_STB = 1008, - TRN_TYPE_CREATE_TOPIC = 1009, - TRN_TYPE_DROP_TOPIC = 1010, - TRN_TYPE_CREATE_USER = 1011, - TRN_TYPE_ALTER_USER = 1012, - TRN_TYPE_DROP_USER = 1013, - TRN_TYPE_SUBSCRIBE = 1014, - TRN_TYPE_REBALANCE = 1015, - TRN_TYPE_MAX, + TRN_TYPE_CREATE_SNODE = 1006, + TRN_TYPE_DROP_SNODE = 1007, + TRN_TYPE_CREATE_QNODE = 1008, + TRN_TYPE_DROP_QNODE = 1009, + TRN_TYPE_CREATE_BNODE = 1010, + TRN_TYPE_DROP_BNODE = 1011, + TRN_TYPE_CREATE_MNODE = 1012, + TRN_TYPE_DROP_MNODE = 1013, + TRN_TYPE_CREATE_TOPIC = 1014, + TRN_TYPE_DROP_TOPIC = 1015, + TRN_TYPE_SUBSCRIBE = 1016, + TRN_TYPE_REBALANCE = 1017, + TRN_TYPE_BASIC_SCOPE_END, + TRN_TYPE_GLOBAL_SCOPE = 2000, + TRN_TYPE_CREATE_DNODE = 2001, + TRN_TYPE_DROP_DNODE = 2002, + TRN_TYPE_GLOBAL_SCOPE_END, + TRN_TYPE_DB_SCOPE = 3000, + TRN_TYPE_CREATE_DB = 3001, + TRN_TYPE_ALTER_DB = 3002, + TRN_TYPE_DROP_DB = 3003, + TRN_TYPE_CREATE_STB = 3004, + TRN_TYPE_ALTER_STB = 3005, + TRN_TYPE_DROP_STB = 3006, + TRN_TYPE_SPLIT_VGROUP = 3007, + TRN_TYPE_MERGE_VGROUP = 3018, + TRN_TYPE_DB_SCOPE_END, } ETrnType; typedef enum { TRN_POLICY_ROLLBACK = 0, TRN_POLICY_RETRY = 1 } ETrnPolicy; diff --git a/source/dnode/mnode/impl/src/mndDb.c b/source/dnode/mnode/impl/src/mndDb.c index 5b70312305..122982b7f2 100644 --- a/source/dnode/mnode/impl/src/mndDb.c +++ b/source/dnode/mnode/impl/src/mndDb.c @@ -439,6 +439,7 @@ static int32_t mndCreateDb(SMnode *pMnode, SMnodeMsg *pReq, SCreateDbReq *pCreat mDebug("trans:%d, used to create db:%s", pTrans->id, pCreate->db); + mndTransSetDbInfo(pTrans, &dbObj); if (mndSetCreateDbRedoLogs(pMnode, pTrans, &dbObj, pVgroups) != 0) goto CREATE_DB_OVER; if (mndSetCreateDbUndoLogs(pMnode, pTrans, &dbObj, pVgroups) != 0) goto CREATE_DB_OVER; if (mndSetCreateDbCommitLogs(pMnode, pTrans, &dbObj, pVgroups) != 0) goto CREATE_DB_OVER; @@ -625,6 +626,7 @@ static int32_t mndUpdateDb(SMnode *pMnode, SMnodeMsg *pReq, SDbObj *pOld, SDbObj mDebug("trans:%d, used to update db:%s", pTrans->id, pOld->name); + mndTransSetDbInfo(pTrans, pOld); if (mndSetUpdateDbRedoLogs(pMnode, pTrans, pOld, pNew) != 0) goto UPDATE_DB_OVER; if (mndSetUpdateDbCommitLogs(pMnode, pTrans, pOld, pNew) != 0) goto UPDATE_DB_OVER; if (mndSetUpdateDbRedoActions(pMnode, pTrans, pOld, pNew) != 0) goto UPDATE_DB_OVER; @@ -803,6 +805,7 @@ static int32_t mndDropDb(SMnode *pMnode, SMnodeMsg *pReq, SDbObj *pDb) { if (pTrans == NULL) goto DROP_DB_OVER; mDebug("trans:%d, used to drop db:%s", pTrans->id, pDb->name); + mndTransSetDbInfo(pTrans, pDb); if (mndSetDropDbRedoLogs(pMnode, pTrans, pDb) != 0) goto DROP_DB_OVER; if (mndSetDropDbCommitLogs(pMnode, pTrans, pDb) != 0) goto DROP_DB_OVER; diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 477719d8be..274ae10045 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -534,6 +534,7 @@ static int32_t mndCreateStb(SMnode *pMnode, SMnodeMsg *pReq, SMCreateStbReq *pCr if (pTrans == NULL) goto CREATE_STB_OVER; mDebug("trans:%d, used to create stb:%s", pTrans->id, pCreate->name); + mndTransSetDbInfo(pTrans, pDb); if (mndSetCreateStbRedoLogs(pMnode, pTrans, pDb, &stbObj) != 0) goto CREATE_STB_OVER; if (mndSetCreateStbUndoLogs(pMnode, pTrans, pDb, &stbObj) != 0) goto CREATE_STB_OVER; @@ -1025,6 +1026,7 @@ static int32_t mndAlterStb(SMnode *pMnode, SMnodeMsg *pReq, const SMAltertbReq * if (pTrans == NULL) goto ALTER_STB_OVER; mDebug("trans:%d, used to alter stb:%s", pTrans->id, pAlter->name); + mndTransSetDbInfo(pTrans, pDb); if (mndSetAlterStbRedoLogs(pMnode, pTrans, pDb, &stbObj) != 0) goto ALTER_STB_OVER; if (mndSetAlterStbCommitLogs(pMnode, pTrans, pDb, &stbObj) != 0) goto ALTER_STB_OVER; @@ -1163,6 +1165,7 @@ static int32_t mndDropStb(SMnode *pMnode, SMnodeMsg *pReq, SDbObj *pDb, SStbObj if (pTrans == NULL) goto DROP_STB_OVER; mDebug("trans:%d, used to drop stb:%s", pTrans->id, pStb->name); + mndTransSetDbInfo(pTrans, pDb); if (mndSetDropStbRedoLogs(pMnode, pTrans, pStb) != 0) goto DROP_STB_OVER; if (mndSetDropStbCommitLogs(pMnode, pTrans, pStb) != 0) goto DROP_STB_OVER; diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c index b5d61ca553..5fcdc6d8f2 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -16,6 +16,7 @@ #define _DEFAULT_SOURCE #include "mndTrans.h" #include "mndAuth.h" +#include "mndDb.h" #include "mndShow.h" #include "mndSync.h" #include "mndUser.h" @@ -513,6 +514,11 @@ void mndTransSetRpcRsp(STrans *pTrans, void *pCont, int32_t contLen) { pTrans->rpcRspLen = contLen; } +void mndTransSetDbInfo(STrans *pTrans, SDbObj *pDb) { + pTrans->dbUid = pDb->uid; + memcpy(pTrans->dbname, pDb->name, TSDB_DB_FNAME_LEN); +} + static int32_t mndTransSync(SMnode *pMnode, STrans *pTrans) { SSdbRaw *pRaw = mndTransActionEncode(pTrans); if (pRaw == NULL) { @@ -1199,7 +1205,12 @@ static int32_t mndRetrieveTrans(SMnodeMsg *pReq, SShowObj *pShow, char *data, in cols++; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows; - STR_TO_VARSTR(pWrite, pTrans->dbname); + char *name = mnGetDbStr(pTrans->dbname); + if (name != NULL) { + STR_WITH_MAXSIZE_TO_VARSTR(pWrite, name, pShow->bytes[cols]); + } else { + STR_TO_VARSTR(pWrite, "-"); + } cols++; pWrite = data + pShow->offset[cols] * rows + pShow->bytes[cols] * numOfRows;