From 47fedce26342123be788383d2a0061eb3bd5068d Mon Sep 17 00:00:00 2001 From: kailixu Date: Thu, 21 Dec 2023 12:11:00 +0800 Subject: [PATCH] chore: more code --- include/common/tgrant.h | 2 +- include/os/osDef.h | 4 +++ include/util/taoserror.h | 3 +- source/dnode/mnode/impl/src/mndCluster.c | 40 ++++++++++++++++++++++-- source/dnode/mnode/impl/src/mndDnode.c | 2 ++ source/util/src/terror.c | 5 +-- 6 files changed, 49 insertions(+), 7 deletions(-) diff --git a/include/common/tgrant.h b/include/common/tgrant.h index e0fc499fea..317e82222f 100644 --- a/include/common/tgrant.h +++ b/include/common/tgrant.h @@ -62,7 +62,7 @@ typedef struct { } SGrantedInfo; int32_t grantCheck(EGrantType grant); -int32_t grantAlterActiveCode(const char* active); +int32_t grantAlterActiveCode(const char* active, char** newActive); char* grantGetMachineId(); #ifndef GRANTS_CFG diff --git a/include/os/osDef.h b/include/os/osDef.h index 1a831f2e86..335b151cac 100644 --- a/include/os/osDef.h +++ b/include/os/osDef.h @@ -222,6 +222,10 @@ void syslog(int unused, const char *format, ...); do { \ prctl(PR_SET_NAME, (name)); \ } while (0) +#define getThreadName(name) \ + do { \ + prctl(PR_GET_NAME, (name)); \ + } while (0) #endif #else // Windows diff --git a/include/util/taoserror.h b/include/util/taoserror.h index da93e25bed..7cd7eac64b 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -562,7 +562,8 @@ int32_t* taosGetErrno(); #define TSDB_CODE_GRANT_GEN_APP_LIMIT TAOS_DEF_ERROR_CODE(0, 0x0813) #define TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN TAOS_DEF_ERROR_CODE(0, 0x0814) #define TSDB_CODE_GRANT_PAR_IVLD_DIST TAOS_DEF_ERROR_CODE(0, 0x0815) -#define TSDB_CODE_GRANT_INVALID_HW TAOS_DEF_ERROR_CODE(0, 0x0816) +#define TSDB_CODE_GRANT_INVALID_SERVER TAOS_DEF_ERROR_CODE(0, 0x0816) +#define TSDB_CODE_GRANT_LACK_OF_BASIC TAOS_DEF_ERROR_CODE(0, 0x0817) // sync // #define TSDB_CODE_SYN_INVALID_CONFIG TAOS_DEF_ERROR_CODE(0, 0x0900) // 2.x diff --git a/source/dnode/mnode/impl/src/mndCluster.c b/source/dnode/mnode/impl/src/mndCluster.c index 9e18063ee3..f9a22a45b6 100644 --- a/source/dnode/mnode/impl/src/mndCluster.c +++ b/source/dnode/mnode/impl/src/mndCluster.c @@ -423,6 +423,17 @@ static int32_t mndProcessConfigClusterReq(SRpcMsg *pReq) { goto _exit; } + SClusterObj clusterObj = {0}; + void *pIter = NULL; + SClusterObj *pCluster = mndAcquireCluster(pMnode, &pIter); + if (!pCluster || pCluster->id <= 0) { + code = TSDB_CODE_APP_IS_STARTING; + if (pCluster) mndReleaseCluster(pMnode, pCluster, pIter); + goto _exit; + } + memcpy(&clusterObj, pCluster, sizeof(SClusterObj)); + mndReleaseCluster(pMnode, pCluster, pIter); + if (strncmp(cfgReq.config, GRANT_ACTIVE_CODE, 11) == 0) { #ifdef TD_ENTERPRISE if (strlen(cfgReq.config) >= TSDB_DNODE_CONFIG_LEN) { @@ -433,14 +444,37 @@ static int32_t mndProcessConfigClusterReq(SRpcMsg *pReq) { code = TSDB_CODE_INVALID_CFG_VALUE; goto _exit; } - // code = xxx; - code = grantAlterActiveCode(cfgReq.value); + char *newActive = NULL; + if ((code = grantAlterActiveCode(cfgReq.value, &newActive)) != 0) { + goto _exit; + } #else code = TSDB_CODE_OPS_NOT_SUPPORT; goto _exit; #endif } + STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, TRN_CONFLICT_NOTHING, pReq, "update-cluster"); + if (pTrans == NULL) return -1; + + SSdbRaw *pCommitRaw = mndClusterActionEncode(&clusterObj); + if (pCommitRaw == NULL || mndTransAppendCommitlog(pTrans, pCommitRaw) != 0) { + mError("trans:%d, failed to append commit log since %s", pTrans->id, terrstr()); + mndTransDrop(pTrans); + code = terrno; + goto _exit; + } + (void)sdbSetRawStatus(pCommitRaw, SDB_STATUS_READY); + + if (mndTransPrepare(pMnode, pTrans) != 0) { + mError("trans:%d, failed to prepare since %s", pTrans->id, terrstr()); + mndTransDrop(pTrans); + code = terrno; + goto _exit; + } + + mndTransDrop(pTrans); + { // audit auditRecord(pReq, pMnode->clusterId, "alterCluster", "", "", cfgReq.sql, cfgReq.sqlLen); } @@ -458,4 +492,4 @@ _exit: static int32_t mndProcessConfigClusterRsp(SRpcMsg *pRsp) { mInfo("config rsp from cluster"); return 0; -} \ No newline at end of file +} diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index 414de7513e..fec8447b77 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -772,6 +772,7 @@ static int32_t mndCreateDnode(SMnode *pMnode, SRpcMsg *pReq, SCreateDnodeReq *pC dnodeObj.port = pCreate->port; tstrncpy(dnodeObj.fqdn, pCreate->fqdn, TSDB_FQDN_LEN); snprintf(dnodeObj.ep, TSDB_EP_LEN - 1, "%s:%u", pCreate->fqdn, pCreate->port); + #if 0 if (!(pInfo = taosMemoryCalloc(1, sizeof(*pInfo)))) { terrno = TSDB_CODE_OUT_OF_MEMORY; goto _OVER; @@ -793,6 +794,7 @@ static int32_t mndCreateDnode(SMnode *pMnode, SRpcMsg *pReq, SCreateDnodeReq *pC } else { mWarn("Invalid machineId:%s to create dnode:%s", pInfo->machineId, dnodeObj.fqdn); } + #endif pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, TRN_CONFLICT_GLOBAL, pReq, "create-dnode"); if (pTrans == NULL) goto _OVER; mInfo("trans:%d, used to create dnode:%s", pTrans->id, dnodeObj.ep); diff --git a/source/util/src/terror.c b/source/util/src/terror.c index 6837d5e401..80aa380ace 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -449,7 +449,8 @@ TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_GEN_IVLD_KEY, "Invalid key to gen ac TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_GEN_APP_LIMIT, "Limited app num to gen active code") TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN, "Invalid klen to encode active code") TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_PAR_IVLD_DIST, "Invalid dist to parse active code") -TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_INVALID_HW, "Invalid hardware") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_INVALID_SERVER, "Invalid server") +TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_LACK_OF_BASIC, "Lack of basic function in active code") // sync TAOS_DEFINE_ERROR(TSDB_CODE_SYN_TIMEOUT, "Sync timeout") @@ -592,7 +593,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_PAR_WINDOW_NOT_ALLOWED_FUNC, "Window not allowed" TAOS_DEFINE_ERROR(TSDB_CODE_PAR_STREAM_NOT_ALLOWED_FUNC, "Stream not allowed") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_GROUP_BY_NOT_ALLOWED_FUNC, "Group by not allowd") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_INTERP_CLAUSE, "Invalid interp clause") -TAOS_DEFINE_ERROR(TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN, "Not valid function ion window") +TAOS_DEFINE_ERROR(TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN, "Not valid function in window") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE, "Only support single table") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_SMA_INDEX, "Invalid sma index") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_SELECTED_EXPR, "Invalid SELECTed expression")