From 2be6ff4630fde87743b4624a2d601b1fc5dad4d8 Mon Sep 17 00:00:00 2001 From: kailixu Date: Sat, 6 May 2023 20:38:50 +0800 Subject: [PATCH 1/3] chore: more code --- include/common/tgrant.h | 2 + include/common/tmsg.h | 7 ++++ include/util/tdef.h | 3 ++ source/common/src/systable.c | 2 + source/dnode/mnode/impl/inc/mndDef.h | 2 + source/dnode/mnode/impl/inc/mndDnode.h | 2 +- source/dnode/mnode/impl/src/mndDnode.c | 58 ++++++++++++++++++++++++-- 7 files changed, 71 insertions(+), 5 deletions(-) diff --git a/include/common/tgrant.h b/include/common/tgrant.h index 38978aebce..80b0ee2147 100644 --- a/include/common/tgrant.h +++ b/include/common/tgrant.h @@ -26,7 +26,9 @@ extern "C" { #include "tgrantCfg.h" #endif +#ifndef GRANTS_COL_MAX_LEN #define GRANTS_COL_MAX_LEN 128 +#endif typedef enum { TSDB_GRANT_ALL, diff --git a/include/common/tmsg.h b/include/common/tmsg.h index f377ad0d63..82f43a6179 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -1232,6 +1232,13 @@ typedef struct { SEp ep; } SDnodeEp; +typedef struct { + int32_t id; + SEp ep; + char active[TSDB_ACTIVE_KEY_LEN]; + char connActive[TSDB_CONN_ACTIVE_KEY_LEN]; +} SDnodeInfo; + typedef struct { int64_t dnodeVer; SDnodeCfg dnodeCfg; diff --git a/include/util/tdef.h b/include/util/tdef.h index 664f22eeed..56e2d3965d 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -273,6 +273,9 @@ typedef enum ELogicConditionType { #define TSDB_DNODE_CONFIG_LEN 128 #define TSDB_DNODE_VALUE_LEN 256 +#define TSDB_ACTIVE_KEY_LEN 109 +#define TSDB_CONN_ACTIVE_KEY_LEN 257 + #define TSDB_DEFAULT_PKT_SIZE 65480 // same as RPC_MAX_UDP_SIZE #define TSDB_PAYLOAD_SIZE TSDB_DEFAULT_PKT_SIZE diff --git a/source/common/src/systable.c b/source/common/src/systable.c index cd3dd63ef0..831cb14501 100644 --- a/source/common/src/systable.c +++ b/source/common/src/systable.c @@ -35,6 +35,8 @@ static const SSysDbTableSchema dnodesSchema[] = { {.name = "create_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true}, {.name = "reboot_time", .bytes = 8, .type = TSDB_DATA_TYPE_TIMESTAMP, .sysInfo = true}, {.name = "note", .bytes = 256 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, + {.name = "active_code", .bytes = 108 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, + {.name = "c_active_code", .bytes = 256 + VARSTR_HEADER_SIZE, .type = TSDB_DATA_TYPE_VARCHAR, .sysInfo = true}, }; static const SSysDbTableSchema mnodesSchema[] = { diff --git a/source/dnode/mnode/impl/inc/mndDef.h b/source/dnode/mnode/impl/inc/mndDef.h index f547ce025d..d9985afb6f 100644 --- a/source/dnode/mnode/impl/inc/mndDef.h +++ b/source/dnode/mnode/impl/inc/mndDef.h @@ -205,6 +205,8 @@ typedef struct { uint16_t port; char fqdn[TSDB_FQDN_LEN]; char ep[TSDB_EP_LEN]; + char active[TSDB_ACTIVE_KEY_LEN]; + char connActive[TSDB_CONN_ACTIVE_KEY_LEN]; } SDnodeObj; typedef struct { diff --git a/source/dnode/mnode/impl/inc/mndDnode.h b/source/dnode/mnode/impl/inc/mndDnode.h index ebbabdfa33..077859361a 100644 --- a/source/dnode/mnode/impl/inc/mndDnode.h +++ b/source/dnode/mnode/impl/inc/mndDnode.h @@ -29,7 +29,7 @@ void mndReleaseDnode(SMnode *pMnode, SDnodeObj *pDnode); SEpSet mndGetDnodeEpset(SDnodeObj *pDnode); int32_t mndGetDnodeSize(SMnode *pMnode); bool mndIsDnodeOnline(SDnodeObj *pDnode, int64_t curMs); -void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeEps); +void mndGetDnodeInfo(SMnode *pMnode, SArray *pDnodeInfo); #ifdef __cplusplus } diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index 1f58ae97a3..e2ac353470 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -27,7 +27,7 @@ #include "tmisce.h" #include "mndCluster.h" -#define TSDB_DNODE_VER_NUMBER 1 +#define TSDB_DNODE_VER_NUMBER 2 #define TSDB_DNODE_RESERVE_SIZE 64 static const char *offlineReason[] = { @@ -138,6 +138,21 @@ static SSdbRaw *mndDnodeActionEncode(SDnodeObj *pDnode) { SDB_SET_INT64(pRaw, dataPos, pDnode->updateTime, _OVER) SDB_SET_INT16(pRaw, dataPos, pDnode->port, _OVER) SDB_SET_BINARY(pRaw, dataPos, pDnode->fqdn, TSDB_FQDN_LEN, _OVER) + // debug purpose +#if 1 + strncpy( + pDnode->active, + "4cssi6J+y+GSS7zes2RwBezQc/mabvN9N2maa6ksK6JJWl7OxrPZ2ElaXs7Gs9nYSVpezsaz2di72ZL6EAo0mcYiPlK2dDdmPh3SOVCm1/c=", + TSDB_ACTIVE_KEY_LEN); + strncpy( + pDnode->connActive, + "ovTNXauk5suSS7zes2RwBezQc/mabvN9N2maa6ksK6JJWl7OxrPZ2ElaXs7Gs9nYSVpezsaz2di72ZL6EAo0mcYiPlK2dDdmdpKzEXFi4Rs=ovTNXauk5suSS7zes2RwBezQc/mabvN9N2maa6ksK6JJWl7OxrPZ2ElaXs7Gs9nYSVpezsaz2di72ZL6EAo0mcYiPlK2dDdmdpKzEXFi4Rs=", + TSDB_CONN_ACTIVE_KEY_LEN); +#endif + + SDB_SET_BINARY(pRaw, dataPos, pDnode->active, TSDB_ACTIVE_KEY_LEN, _OVER) + SDB_SET_BINARY(pRaw, dataPos, pDnode->connActive, TSDB_CONN_ACTIVE_KEY_LEN, _OVER) + SDB_SET_RESERVE(pRaw, dataPos, TSDB_DNODE_RESERVE_SIZE, _OVER) SDB_SET_DATALEN(pRaw, dataPos, _OVER); @@ -161,7 +176,7 @@ static SSdbRow *mndDnodeActionDecode(SSdbRaw *pRaw) { int8_t sver = 0; if (sdbGetRawSoftVer(pRaw, &sver) != 0) goto _OVER; - if (sver != TSDB_DNODE_VER_NUMBER) { + if (sver < 1 || sver > TSDB_DNODE_VER_NUMBER) { terrno = TSDB_CODE_SDB_INVALID_DATA_VER; goto _OVER; } @@ -178,6 +193,10 @@ static SSdbRow *mndDnodeActionDecode(SSdbRaw *pRaw) { SDB_GET_INT64(pRaw, dataPos, &pDnode->updateTime, _OVER) SDB_GET_INT16(pRaw, dataPos, &pDnode->port, _OVER) SDB_GET_BINARY(pRaw, dataPos, pDnode->fqdn, TSDB_FQDN_LEN, _OVER) + if(sver > 1) { + SDB_GET_BINARY(pRaw, dataPos, pDnode->active, TSDB_ACTIVE_KEY_LEN, _OVER) + SDB_GET_BINARY(pRaw, dataPos, pDnode->connActive, TSDB_CONN_ACTIVE_KEY_LEN, _OVER) + } SDB_GET_RESERVE(pRaw, dataPos, TSDB_DNODE_RESERVE_SIZE, _OVER) terrno = 0; @@ -305,7 +324,7 @@ bool mndIsDnodeOnline(SDnodeObj *pDnode, int64_t curMs) { return true; } -void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeEps) { +static void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeEps) { SSdb *pSdb = pMnode->pSdb; int32_t numOfEps = 0; @@ -330,6 +349,29 @@ void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeEps) { } } +void mndGetDnodeInfo(SMnode *pMnode, SArray *pDnodeInfo) { + SSdb *pSdb = pMnode->pSdb; + + int32_t numOfEps = 0; + void *pIter = NULL; + while (1) { + SDnodeObj *pDnode = NULL; + ESdbStatus objStatus = 0; + pIter = sdbFetchAll(pSdb, SDB_DNODE, pIter, (void **)&pDnode, &objStatus, true); + if (pIter == NULL) break; + + SDnodeInfo dInfo; + dInfo.id = pDnode->id; + dInfo.ep.port = pDnode->port; + tstrncpy(dInfo.ep.fqdn, pDnode->fqdn, TSDB_FQDN_LEN); + tstrncpy(dInfo.active, pDnode->active, TSDB_ACTIVE_KEY_LEN); + tstrncpy(dInfo.connActive, pDnode->connActive, TSDB_CONN_ACTIVE_KEY_LEN); + sdbRelease(pSdb, pDnode); + + taosArrayPush(pDnodeInfo, &dInfo); + } +} + static int32_t mndCheckClusterCfgPara(SMnode *pMnode, SDnodeObj *pDnode, const SClusterCfg *pCfg) { if (pCfg->statusInterval != tsStatusInterval) { mError("dnode:%d, statusInterval:%d inconsistent with cluster:%d", pDnode->id, pCfg->statusInterval, @@ -1077,7 +1119,7 @@ static int32_t mndRetrieveDnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB status = "offline"; } - char b1[16] = {0}; + char b1[TSDB_CONN_ACTIVE_KEY_LEN + 2] = {0}; STR_TO_VARSTR(b1, status); pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); colDataSetVal(pColInfo, numOfRows, b1, false); @@ -1095,6 +1137,14 @@ static int32_t mndRetrieveDnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB colDataSetVal(pColInfo, numOfRows, b, false); taosMemoryFreeClear(b); + STR_TO_VARSTR(b1, pDnode->active); + pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); + colDataSetVal(pColInfo, numOfRows, b1, false); + + STR_TO_VARSTR(b1, pDnode->connActive); + pColInfo = taosArrayGet(pBlock->pDataBlock, cols++); + colDataSetVal(pColInfo, numOfRows, b1, false); + numOfRows++; sdbRelease(pSdb, pDnode); } From 665681947fd22dd2ec79fc895efcebc068a74b04 Mon Sep 17 00:00:00 2001 From: kailixu Date: Tue, 9 May 2023 19:02:09 +0800 Subject: [PATCH 2/3] chore: more code --- include/common/tgrant.h | 10 ++++++++++ include/util/tdef.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/common/tgrant.h b/include/common/tgrant.h index 80b0ee2147..9aeaef5489 100644 --- a/include/common/tgrant.h +++ b/include/common/tgrant.h @@ -48,6 +48,16 @@ typedef enum { TSDB_GRANT_TABLE, } EGrantType; +#define GRANT_ACTIVE_ON ((int8_t)0x01) +#define GRANT_CONN_ACTIVE_ON ((int8_t)0x02) + +#define SET_GRANT_ACTIVE_ON(f) ((f) |= GRANT_ACTIVE_ON) +#define SET_GRANT_CONN_ACTIVE_ON(f) ((f) |= GRANT_CONN_ACTIVE_ON) + +#define IS_GRANT_ACTIVE_CODES_ON(f) ((f) != 0x0) +#define IS_GRANT_ACTIVE_ON(f) (((f)&0x01) == GRANT_ACTIVE_ON) +#define IS_GRANT_CONN_ACTIVE_ON(f) (((f)&0x02) == GRANT_CONN_ACTIVE_ON) + int32_t grantCheck(EGrantType grant); #ifndef GRANTS_CFG diff --git a/include/util/tdef.h b/include/util/tdef.h index a1289f5c27..1e00dfa76d 100644 --- a/include/util/tdef.h +++ b/include/util/tdef.h @@ -268,7 +268,7 @@ typedef enum ELogicConditionType { #define TSDB_DNODE_VALUE_LEN 256 #define TSDB_ACTIVE_KEY_LEN 109 -#define TSDB_CONN_ACTIVE_KEY_LEN 257 +#define TSDB_CONN_ACTIVE_KEY_LEN 109 #define TSDB_DEFAULT_PKT_SIZE 65480 // same as RPC_MAX_UDP_SIZE From fd107f2c26432f5791ddbb4a737835775ddde79a Mon Sep 17 00:00:00 2001 From: kailixu Date: Thu, 11 May 2023 00:16:41 +0800 Subject: [PATCH 3/3] chore: more code --- include/common/tgrant.h | 10 ---------- source/dnode/mnode/impl/inc/mndDnode.h | 2 +- source/dnode/mnode/impl/src/mndDnode.c | 17 +++-------------- 3 files changed, 4 insertions(+), 25 deletions(-) diff --git a/include/common/tgrant.h b/include/common/tgrant.h index 9aeaef5489..80b0ee2147 100644 --- a/include/common/tgrant.h +++ b/include/common/tgrant.h @@ -48,16 +48,6 @@ typedef enum { TSDB_GRANT_TABLE, } EGrantType; -#define GRANT_ACTIVE_ON ((int8_t)0x01) -#define GRANT_CONN_ACTIVE_ON ((int8_t)0x02) - -#define SET_GRANT_ACTIVE_ON(f) ((f) |= GRANT_ACTIVE_ON) -#define SET_GRANT_CONN_ACTIVE_ON(f) ((f) |= GRANT_CONN_ACTIVE_ON) - -#define IS_GRANT_ACTIVE_CODES_ON(f) ((f) != 0x0) -#define IS_GRANT_ACTIVE_ON(f) (((f)&0x01) == GRANT_ACTIVE_ON) -#define IS_GRANT_CONN_ACTIVE_ON(f) (((f)&0x02) == GRANT_CONN_ACTIVE_ON) - int32_t grantCheck(EGrantType grant); #ifndef GRANTS_CFG diff --git a/source/dnode/mnode/impl/inc/mndDnode.h b/source/dnode/mnode/impl/inc/mndDnode.h index 077859361a..83c2277612 100644 --- a/source/dnode/mnode/impl/inc/mndDnode.h +++ b/source/dnode/mnode/impl/inc/mndDnode.h @@ -29,7 +29,7 @@ void mndReleaseDnode(SMnode *pMnode, SDnodeObj *pDnode); SEpSet mndGetDnodeEpset(SDnodeObj *pDnode); int32_t mndGetDnodeSize(SMnode *pMnode); bool mndIsDnodeOnline(SDnodeObj *pDnode, int64_t curMs); -void mndGetDnodeInfo(SMnode *pMnode, SArray *pDnodeInfo); +void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeInfo); #ifdef __cplusplus } diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index e2ac353470..748eeb5a06 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -138,17 +138,6 @@ static SSdbRaw *mndDnodeActionEncode(SDnodeObj *pDnode) { SDB_SET_INT64(pRaw, dataPos, pDnode->updateTime, _OVER) SDB_SET_INT16(pRaw, dataPos, pDnode->port, _OVER) SDB_SET_BINARY(pRaw, dataPos, pDnode->fqdn, TSDB_FQDN_LEN, _OVER) - // debug purpose -#if 1 - strncpy( - pDnode->active, - "4cssi6J+y+GSS7zes2RwBezQc/mabvN9N2maa6ksK6JJWl7OxrPZ2ElaXs7Gs9nYSVpezsaz2di72ZL6EAo0mcYiPlK2dDdmPh3SOVCm1/c=", - TSDB_ACTIVE_KEY_LEN); - strncpy( - pDnode->connActive, - "ovTNXauk5suSS7zes2RwBezQc/mabvN9N2maa6ksK6JJWl7OxrPZ2ElaXs7Gs9nYSVpezsaz2di72ZL6EAo0mcYiPlK2dDdmdpKzEXFi4Rs=ovTNXauk5suSS7zes2RwBezQc/mabvN9N2maa6ksK6JJWl7OxrPZ2ElaXs7Gs9nYSVpezsaz2di72ZL6EAo0mcYiPlK2dDdmdpKzEXFi4Rs=", - TSDB_CONN_ACTIVE_KEY_LEN); -#endif SDB_SET_BINARY(pRaw, dataPos, pDnode->active, TSDB_ACTIVE_KEY_LEN, _OVER) SDB_SET_BINARY(pRaw, dataPos, pDnode->connActive, TSDB_CONN_ACTIVE_KEY_LEN, _OVER) @@ -324,7 +313,7 @@ bool mndIsDnodeOnline(SDnodeObj *pDnode, int64_t curMs) { return true; } -static void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeEps) { +static void mndGetDnodeEps(SMnode *pMnode, SArray *pDnodeEps) { SSdb *pSdb = pMnode->pSdb; int32_t numOfEps = 0; @@ -349,7 +338,7 @@ static void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeEps) { } } -void mndGetDnodeInfo(SMnode *pMnode, SArray *pDnodeInfo) { +void mndGetDnodeData(SMnode *pMnode, SArray *pDnodeInfo) { SSdb *pSdb = pMnode->pSdb; int32_t numOfEps = 0; @@ -578,7 +567,7 @@ static int32_t mndProcessStatusReq(SRpcMsg *pReq) { goto _OVER; } - mndGetDnodeData(pMnode, statusRsp.pDnodeEps); + mndGetDnodeEps(pMnode, statusRsp.pDnodeEps); int32_t contLen = tSerializeSStatusRsp(NULL, 0, &statusRsp); void *pHead = rpcMallocCont(contLen);