Fix some review problems.

This commit is contained in:
xiao-77 2024-12-10 10:39:50 +08:00
parent 37d6af96b0
commit 1ced6069ee
3 changed files with 60 additions and 21 deletions

View File

@ -508,7 +508,7 @@ int32_t dmProcessConfigReq(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) {
if (cfgReq.version > 0) { if (cfgReq.version > 0) {
tsdmConfigVersion = cfgReq.version; tsdmConfigVersion = cfgReq.version;
} }
return TSDB_CODE_SUCCESS; return code;
} }
int32_t dmProcessCreateEncryptKeyReq(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) { int32_t dmProcessCreateEncryptKeyReq(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) {

View File

@ -342,7 +342,7 @@ int32_t dmStartConfigThread(SDnodeMgmt *pMgmt) {
int32_t code = 0; int32_t code = 0;
TdThreadAttr thAttr; TdThreadAttr thAttr;
(void)taosThreadAttrInit(&thAttr); (void)taosThreadAttrInit(&thAttr);
(void)taosThreadAttrSetDetachState(&thAttr, PTHREAD_CREATE_JOINABLE); (void)taosThreadAttrSetDetachState(&thAttr, PTHREAD_CREATE_DETACHED);
if (taosThreadCreate(&pMgmt->configThread, &thAttr, dmConfigThreadFp, pMgmt) != 0) { if (taosThreadCreate(&pMgmt->configThread, &thAttr, dmConfigThreadFp, pMgmt) != 0) {
code = TAOS_SYSTEM_ERROR(errno); code = TAOS_SYSTEM_ERROR(errno);
dError("failed to create config thread since %s", tstrerror(code)); dError("failed to create config thread since %s", tstrerror(code));

View File

@ -78,7 +78,7 @@ SSdbRaw *mnCfgActionEncode(SConfigObj *obj) {
int32_t dataPos = 0; int32_t dataPos = 0;
char name[CFG_NAME_MAX_LEN] = {0}; char name[CFG_NAME_MAX_LEN] = {0};
strncpy(name, obj->name, CFG_NAME_MAX_LEN); tstrncpy(name, obj->name, CFG_NAME_MAX_LEN);
SDB_SET_BINARY(pRaw, dataPos, name, CFG_NAME_MAX_LEN, _OVER) SDB_SET_BINARY(pRaw, dataPos, name, CFG_NAME_MAX_LEN, _OVER)
SDB_SET_INT32(pRaw, dataPos, obj->dtype, _OVER) SDB_SET_INT32(pRaw, dataPos, obj->dtype, _OVER)
switch (obj->dtype) { switch (obj->dtype) {
@ -274,8 +274,13 @@ static int32_t mndProcessConfigReq(SRpcMsg *pReq) {
goto _OVER; goto _OVER;
} }
void *pHead = rpcMallocCont(contLen); void *pHead = rpcMallocCont(contLen);
if (pHead == NULL) {
code = TSDB_CODE_OUT_OF_MEMORY;
goto _OVER;
}
contLen = tSerializeSConfigRsp(pHead, contLen, &configRsp); contLen = tSerializeSConfigRsp(pHead, contLen, &configRsp);
if (contLen < 0) { if (contLen < 0) {
rpcFreeCont(pHead);
code = contLen; code = contLen;
goto _OVER; goto _OVER;
} }
@ -283,13 +288,16 @@ static int32_t mndProcessConfigReq(SRpcMsg *pReq) {
pReq->info.rsp = pHead; pReq->info.rsp = pHead;
_OVER: _OVER:
if (code != 0) {
mError("failed to process config req, since %s", tstrerror(code));
}
cfgArrayCleanUp(array); cfgArrayCleanUp(array);
mndReleaseDnode(pMnode, pDnode); mndReleaseDnode(pMnode, pDnode);
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }
int32_t mndInitWriteCfg(SMnode *pMnode) { int32_t mndInitWriteCfg(SMnode *pMnode) {
int code = -1; int code = 0;
size_t sz = 0; size_t sz = 0;
mInfo("init write cfg to sdb"); mInfo("init write cfg to sdb");
@ -313,16 +321,23 @@ int32_t mndInitWriteCfg(SMnode *pMnode) {
for (int i = 0; i < sz; ++i) { for (int i = 0; i < sz; ++i) {
SConfigItem *item = taosArrayGet(taosGetGlobalCfg(tsCfg), i); SConfigItem *item = taosArrayGet(taosGetGlobalCfg(tsCfg), i);
SConfigObj *obj = mndInitConfigObj(item); SConfigObj *obj = mndInitConfigObj(item);
if (obj == NULL) {
code = terrno;
goto _OVER;
}
if ((code = mndSetCreateConfigCommitLogs(pTrans, obj)) != 0) { if ((code = mndSetCreateConfigCommitLogs(pTrans, obj)) != 0) {
mError("failed to init mnd config:%s, since %s", item->name, terrstr()); mError("failed to init mnd config:%s, since %s", item->name, tstrerror(code));
} }
taosMemoryFree(obj); taosMemoryFree(obj);
} }
if ((code = mndTransPrepare(pMnode, pTrans)) != 0) goto _OVER; if ((code = mndTransPrepare(pMnode, pTrans)) != 0) goto _OVER;
_OVER: _OVER:
if (code != 0) {
mError("failed to init write cfg, since %s", tstrerror(code));
}
mndTransDrop(pTrans); mndTransDrop(pTrans);
return TSDB_CODE_SUCCESS; return code;
} }
int32_t mndInitReadCfg(SMnode *pMnode) { int32_t mndInitReadCfg(SMnode *pMnode) {
@ -386,6 +401,9 @@ int32_t cfgUpdateItem(SConfigItem *pItem, SConfigObj *obj) {
if (obj->str != NULL) { if (obj->str != NULL) {
taosMemoryFree(pItem->str); taosMemoryFree(pItem->str);
pItem->str = taosStrdup(obj->str); pItem->str = taosStrdup(obj->str);
if (pItem->str == NULL) {
TAOS_RETURN(terrno);
}
} }
break; break;
} }
@ -408,7 +426,7 @@ static int32_t mndMCfg2DCfg(SMCfgDnodeReq *pMCfgReq, SDCfgDnodeReq *pDCfgReq) {
} }
size_t optLen = p - pMCfgReq->config; size_t optLen = p - pMCfgReq->config;
(void)strncpy(pDCfgReq->config, pMCfgReq->config, optLen); tstrncpy(pDCfgReq->config, pMCfgReq->config, optLen);
pDCfgReq->config[optLen] = 0; pDCfgReq->config[optLen] = 0;
if (' ' == pMCfgReq->config[optLen]) { if (' ' == pMCfgReq->config[optLen]) {
@ -445,6 +463,8 @@ static int32_t mndSendCfgDnodeReq(SMnode *pMnode, int32_t dnodeId, SDCfgDnodeReq
if (pBuf != NULL) { if (pBuf != NULL) {
if ((bufLen = tSerializeSDCfgDnodeReq(pBuf, bufLen, pDcfgReq)) <= 0) { if ((bufLen = tSerializeSDCfgDnodeReq(pBuf, bufLen, pDcfgReq)) <= 0) {
sdbCancelFetch(pMnode->pSdb, pIter);
sdbRelease(pMnode->pSdb, pDnode);
code = bufLen; code = bufLen;
return code; return code;
} }
@ -483,14 +503,17 @@ static int32_t mndProcessConfigDnodeReq(SRpcMsg *pReq) {
SDCfgDnodeReq dcfgReq = {0}; SDCfgDnodeReq dcfgReq = {0};
if (strcasecmp(cfgReq.config, "resetlog") == 0) { if (strcasecmp(cfgReq.config, "resetlog") == 0) {
(void)strcpy(dcfgReq.config, "resetlog"); tstrncpy(dcfgReq.config, "resetlog", 8);
goto _send_req; goto _send_req;
#ifdef TD_ENTERPRISE #ifdef TD_ENTERPRISE
} else if (strncasecmp(cfgReq.config, "s3blocksize", 11) == 0) { } else if (strncasecmp(cfgReq.config, "s3blocksize", 11) == 0) {
int32_t optLen = strlen("s3blocksize"); int32_t optLen = strlen("s3blocksize");
int32_t flag = -1; int32_t flag = -1;
int32_t code = mndMCfgGetValInt32(&cfgReq, optLen, &flag); int32_t code = mndMCfgGetValInt32(&cfgReq, optLen, &flag);
if (code < 0) return code; if (code < 0) {
tFreeSMCfgDnodeReq(&cfgReq);
TAOS_RETURN(code);
}
if (flag > 1024 * 1024 || (flag > -1 && flag < 1024) || flag < -1) { if (flag > 1024 * 1024 || (flag > -1 && flag < 1024) || flag < -1) {
mError("dnode:%d, failed to config s3blocksize since value:%d. Valid range: -1 or [1024, 1024 * 1024]", mError("dnode:%d, failed to config s3blocksize since value:%d. Valid range: -1 or [1024, 1024 * 1024]",
@ -567,11 +590,11 @@ static int32_t mndMCfgGetValInt32(SMCfgDnodeReq *pMCfgReq, int32_t optLen, int32
if (' ' == pMCfgReq->config[optLen]) { if (' ' == pMCfgReq->config[optLen]) {
// 'key value' // 'key value'
if (strlen(pMCfgReq->value) != 0) goto _err; if (strlen(pMCfgReq->value) != 0) goto _err;
*pOutValue = atoi(pMCfgReq->config + optLen + 1); *pOutValue = taosStr2int32(pMCfgReq->config + optLen + 1);
} else { } else {
// 'key' 'value' // 'key' 'value'
if (strlen(pMCfgReq->value) == 0) goto _err; if (strlen(pMCfgReq->value) == 0) goto _err;
*pOutValue = atoi(pMCfgReq->value); *pOutValue = taosStr2int32(pMCfgReq->value);
} }
TAOS_RETURN(code); TAOS_RETURN(code);
@ -588,15 +611,15 @@ static int32_t mndConfigUpdateTrans(SMnode *pMnode, const char *name, char *pVal
int32_t lino = -1; int32_t lino = -1;
SConfigObj pVersion = {0}, pObj = {0}; SConfigObj pVersion = {0}, pObj = {0};
strncpy(pVersion.name, "tsmmConfigVersion", CFG_NAME_MAX_LEN); tstrncpy(pVersion.name, "tsmmConfigVersion", CFG_NAME_MAX_LEN);
pVersion.i32 = tsmmConfigVersion; pVersion.i32 = tsmmConfigVersion;
pVersion.dtype = CFG_DTYPE_INT32; pVersion.dtype = CFG_DTYPE_INT32;
pObj.dtype = dtype; pObj.dtype = dtype;
strncpy(pObj.name, name, CFG_NAME_MAX_LEN); tstrncpy(pObj.name, name, CFG_NAME_MAX_LEN);
TAOS_CHECK_GOTO(mndUpdateObj(&pObj, name, pValue), &lino, _OVER); TAOS_CHECK_GOTO(mndUpdateObj(&pObj, name, pValue), &lino, _OVER);
STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, TRN_CONFLICT_ARBGROUP, NULL, "update-config"); STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, TRN_CONFLICT_NOTHING, NULL, "update-config");
if (pTrans == NULL) { if (pTrans == NULL) {
if (terrno != 0) code = terrno; if (terrno != 0) code = terrno;
goto _OVER; goto _OVER;
@ -615,16 +638,17 @@ _OVER:
} }
static int32_t initConfigArrayFromSdb(SMnode *pMnode, SArray *array) { static int32_t initConfigArrayFromSdb(SMnode *pMnode, SArray *array) {
int32_t code = 0; int32_t code = 0;
SSdb *pSdb = pMnode->pSdb; SSdb *pSdb = pMnode->pSdb;
void *pIter = NULL; void *pIter = NULL;
SConfigObj *obj = NULL;
while (1) { while (1) {
SConfigObj *obj = NULL;
pIter = sdbFetch(pSdb, SDB_CFG, pIter, (void **)&obj); pIter = sdbFetch(pSdb, SDB_CFG, pIter, (void **)&obj);
if (pIter == NULL) break; if (pIter == NULL) break;
if (obj == NULL) { if (obj == NULL) {
code = TSDB_CODE_OUT_OF_MEMORY; code = TSDB_CODE_OUT_OF_MEMORY;
break; goto _exit;
} }
if (strcasecmp(obj->name, "tsmmConfigVersion") == 0) { if (strcasecmp(obj->name, "tsmmConfigVersion") == 0) {
continue; continue;
@ -632,6 +656,10 @@ static int32_t initConfigArrayFromSdb(SMnode *pMnode, SArray *array) {
SConfigItem item = {0}; SConfigItem item = {0};
item.dtype = obj->dtype; item.dtype = obj->dtype;
item.name = taosStrdup(obj->name); item.name = taosStrdup(obj->name);
if (item.name == NULL) {
code = terrno;
goto _exit;
}
switch (obj->dtype) { switch (obj->dtype) {
case CFG_DTYPE_NONE: case CFG_DTYPE_NONE:
break; break;
@ -654,15 +682,25 @@ static int32_t initConfigArrayFromSdb(SMnode *pMnode, SArray *array) {
case CFG_DTYPE_CHARSET: case CFG_DTYPE_CHARSET:
case CFG_DTYPE_TIMEZONE: case CFG_DTYPE_TIMEZONE:
item.str = taosStrdup(obj->str); item.str = taosStrdup(obj->str);
if (item.str == NULL) {
code = terrno;
goto _exit;
}
break; break;
} }
if (taosArrayPush(array, &item) == NULL) { if (taosArrayPush(array, &item) == NULL) {
code = TSDB_CODE_OUT_OF_MEMORY; code = TSDB_CODE_OUT_OF_MEMORY;
sdbRelease(pSdb, obj); goto _exit;
break; break;
} }
sdbRelease(pSdb, obj); sdbRelease(pSdb, obj);
} }
_exit:
if (code != 0) {
mError("failed to init config array from sdb, since %s", tstrerror(code));
sdbCancelFetch(pSdb, pIter);
sdbRelease(pSdb, obj);
}
return code; return code;
} }
@ -752,6 +790,7 @@ SArray *initVariablesFromItems(SArray *pItems) {
} }
if (NULL == taosArrayPush(pInfos, &info)) { if (NULL == taosArrayPush(pInfos, &info)) {
mError("failed to push info to array while init variables from items,since %s", tstrerror(terrno)); mError("failed to push info to array while init variables from items,since %s", tstrerror(terrno));
taosArrayDestroy(pInfos);
return NULL; return NULL;
} }
} }
@ -763,7 +802,7 @@ static int32_t mndProcessShowVariablesReq(SRpcMsg *pReq) {
SShowVariablesRsp rsp = {0}; SShowVariablesRsp rsp = {0};
int32_t code = -1; int32_t code = -1;
if (mndCheckOperPrivilege(pReq->info.node, pReq->info.conn.user, MND_OPER_SHOW_VARIABLES) != 0) { if ((code = mndCheckOperPrivilege(pReq->info.node, pReq->info.conn.user, MND_OPER_SHOW_VARIABLES)) != 0) {
goto _OVER; goto _OVER;
} }