feat: make config dnode work
This commit is contained in:
parent
147a984c17
commit
0811e5fc93
|
@ -1346,11 +1346,19 @@ typedef struct {
|
||||||
int32_t dnodeId;
|
int32_t dnodeId;
|
||||||
char config[TSDB_DNODE_CONFIG_LEN];
|
char config[TSDB_DNODE_CONFIG_LEN];
|
||||||
char value[TSDB_DNODE_VALUE_LEN];
|
char value[TSDB_DNODE_VALUE_LEN];
|
||||||
} SMCfgDnodeReq, SDCfgDnodeReq;
|
} SMCfgDnodeReq;
|
||||||
|
|
||||||
int32_t tSerializeSMCfgDnodeReq(void* buf, int32_t bufLen, SMCfgDnodeReq* pReq);
|
int32_t tSerializeSMCfgDnodeReq(void* buf, int32_t bufLen, SMCfgDnodeReq* pReq);
|
||||||
int32_t tDeserializeSMCfgDnodeReq(void* buf, int32_t bufLen, SMCfgDnodeReq* pReq);
|
int32_t tDeserializeSMCfgDnodeReq(void* buf, int32_t bufLen, SMCfgDnodeReq* pReq);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char config[TSDB_DNODE_CONFIG_LEN];
|
||||||
|
char value[TSDB_DNODE_VALUE_LEN];
|
||||||
|
} SDCfgDnodeReq;
|
||||||
|
|
||||||
|
int32_t tSerializeSDCfgDnodeReq(void* buf, int32_t bufLen, SDCfgDnodeReq* pReq);
|
||||||
|
int32_t tDeserializeSDCfgDnodeReq(void* buf, int32_t bufLen, SDCfgDnodeReq* pReq);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t dnodeId;
|
int32_t dnodeId;
|
||||||
} SMCreateMnodeReq, SMDropMnodeReq, SDDropMnodeReq, SMCreateQnodeReq, SMDropQnodeReq, SDCreateQnodeReq, SDDropQnodeReq,
|
} SMCreateMnodeReq, SMDropMnodeReq, SDDropMnodeReq, SMCreateQnodeReq, SMDropQnodeReq, SDCreateQnodeReq, SDDropQnodeReq,
|
||||||
|
|
|
@ -761,11 +761,6 @@ void taosCleanupCfg() {
|
||||||
|
|
||||||
void taosCfgDynamicOptions(const char *option, const char *value) {
|
void taosCfgDynamicOptions(const char *option, const char *value) {
|
||||||
if (strncasecmp(option, "debugFlag", 9) == 0) {
|
if (strncasecmp(option, "debugFlag", 9) == 0) {
|
||||||
if (value != NULL) {
|
|
||||||
if (strlen(option) > 10) {
|
|
||||||
value = option + 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int32_t flag = atoi(value);
|
int32_t flag = atoi(value);
|
||||||
taosSetAllDebugFlag(flag);
|
taosSetAllDebugFlag(flag);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1500,6 +1500,33 @@ int32_t tDeserializeSMCfgDnodeReq(void *buf, int32_t bufLen, SMCfgDnodeReq *pReq
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t tSerializeSDCfgDnodeReq(void *buf, int32_t bufLen, SDCfgDnodeReq *pReq) {
|
||||||
|
SEncoder encoder = {0};
|
||||||
|
tEncoderInit(&encoder, buf, bufLen);
|
||||||
|
|
||||||
|
if (tStartEncode(&encoder) < 0) return -1;
|
||||||
|
if (tEncodeCStr(&encoder, pReq->config) < 0) return -1;
|
||||||
|
if (tEncodeCStr(&encoder, pReq->value) < 0) return -1;
|
||||||
|
tEndEncode(&encoder);
|
||||||
|
|
||||||
|
int32_t tlen = encoder.pos;
|
||||||
|
tEncoderClear(&encoder);
|
||||||
|
return tlen;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t tDeserializeSDCfgDnodeReq(void *buf, int32_t bufLen, SDCfgDnodeReq *pReq) {
|
||||||
|
SDecoder decoder = {0};
|
||||||
|
tDecoderInit(&decoder, buf, bufLen);
|
||||||
|
|
||||||
|
if (tStartDecode(&decoder) < 0) return -1;
|
||||||
|
if (tDecodeCStrTo(&decoder, pReq->config) < 0) return -1;
|
||||||
|
if (tDecodeCStrTo(&decoder, pReq->value) < 0) return -1;
|
||||||
|
tEndDecode(&decoder);
|
||||||
|
|
||||||
|
tDecoderClear(&decoder);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t tSerializeSCreateDnodeReq(void *buf, int32_t bufLen, SCreateDnodeReq *pReq) {
|
int32_t tSerializeSCreateDnodeReq(void *buf, int32_t bufLen, SCreateDnodeReq *pReq) {
|
||||||
SEncoder encoder = {0};
|
SEncoder encoder = {0};
|
||||||
tEncoderInit(&encoder, buf, bufLen);
|
tEncoderInit(&encoder, buf, bufLen);
|
||||||
|
|
|
@ -124,7 +124,7 @@ int32_t dmProcessGrantRsp(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) {
|
||||||
|
|
||||||
int32_t dmProcessConfigReq(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) {
|
int32_t dmProcessConfigReq(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) {
|
||||||
SDCfgDnodeReq cfgReq = {0};
|
SDCfgDnodeReq cfgReq = {0};
|
||||||
if (tDeserializeSMCfgDnodeReq(pMsg->pCont, pMsg->contLen, &cfgReq) != 0) {
|
if (tDeserializeSDCfgDnodeReq(pMsg->pCont, pMsg->contLen, &cfgReq) != 0) {
|
||||||
terrno = TSDB_CODE_INVALID_MSG;
|
terrno = TSDB_CODE_INVALID_MSG;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -502,20 +502,20 @@ _OVER:
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mndProcessDnodeListReq(SRpcMsg *pReq) {
|
static int32_t mndProcessDnodeListReq(SRpcMsg *pReq) {
|
||||||
SMnode *pMnode = pReq->info.node;
|
SMnode *pMnode = pReq->info.node;
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
SDnodeObj *pObj = NULL;
|
SDnodeObj *pObj = NULL;
|
||||||
void *pIter = NULL;
|
void *pIter = NULL;
|
||||||
SDnodeListRsp rsp = {0};
|
SDnodeListRsp rsp = {0};
|
||||||
int32_t code = -1;
|
int32_t code = -1;
|
||||||
|
|
||||||
rsp.dnodeList = taosArrayInit(5, sizeof(SEpSet));
|
rsp.dnodeList = taosArrayInit(5, sizeof(SEpSet));
|
||||||
if (NULL == rsp.dnodeList) {
|
if (NULL == rsp.dnodeList) {
|
||||||
mError("failed to alloc epSet while process dnode list req");
|
mError("failed to alloc epSet while process dnode list req");
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
goto _OVER;
|
goto _OVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
pIter = sdbFetch(pSdb, SDB_DNODE, pIter, (void **)&pObj);
|
pIter = sdbFetch(pSdb, SDB_DNODE, pIter, (void **)&pObj);
|
||||||
if (pIter == NULL) break;
|
if (pIter == NULL) break;
|
||||||
|
@ -554,7 +554,6 @@ _OVER:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int32_t mndProcessCreateDnodeReq(SRpcMsg *pReq) {
|
static int32_t mndProcessCreateDnodeReq(SRpcMsg *pReq) {
|
||||||
SMnode *pMnode = pReq->info.node;
|
SMnode *pMnode = pReq->info.node;
|
||||||
int32_t code = -1;
|
int32_t code = -1;
|
||||||
|
@ -732,15 +731,37 @@ static int32_t mndProcessConfigDnodeReq(SRpcMsg *pReq) {
|
||||||
mError("dnode:%d, failed to config since %s ", cfgReq.dnodeId, terrstr());
|
mError("dnode:%d, failed to config since %s ", cfgReq.dnodeId, terrstr());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SEpSet epSet = mndGetDnodeEpset(pDnode);
|
SEpSet epSet = mndGetDnodeEpset(pDnode);
|
||||||
mndReleaseDnode(pMnode, pDnode);
|
mndReleaseDnode(pMnode, pDnode);
|
||||||
|
|
||||||
int32_t bufLen = tSerializeSMCfgDnodeReq(NULL, 0, &cfgReq);
|
SDCfgDnodeReq dcfgReq = {0};
|
||||||
|
if (strncasecmp(cfgReq.config, "debugFlag", 9) == 0) {
|
||||||
|
const char *value = cfgReq.value;
|
||||||
|
int32_t flag = atoi(value);
|
||||||
|
if (flag <= 0) {
|
||||||
|
flag = atoi(cfgReq.config + 10);
|
||||||
|
}
|
||||||
|
if (flag <= 0 || flag > 255) {
|
||||||
|
mError("dnode:%d, failed to config debugFlag since value:%d", cfgReq.dnodeId, flag);
|
||||||
|
terrno = TSDB_CODE_INVALID_CFG;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(dcfgReq.config, "debugFlag");
|
||||||
|
snprintf(dcfgReq.value, TSDB_DNODE_VALUE_LEN, "%d", flag);
|
||||||
|
} else if (strcasecmp(cfgReq.config, "resetlog") == 0) {
|
||||||
|
strcpy(dcfgReq.config, "resetlog");
|
||||||
|
} else {
|
||||||
|
terrno = TSDB_CODE_INVALID_CFG;
|
||||||
|
mError("dnode:%d, failed to config since %s", cfgReq.dnodeId, terrstr());
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t bufLen = tSerializeSDCfgDnodeReq(NULL, 0, &dcfgReq);
|
||||||
void *pBuf = rpcMallocCont(bufLen);
|
void *pBuf = rpcMallocCont(bufLen);
|
||||||
|
|
||||||
if (pBuf == NULL) return -1;
|
if (pBuf == NULL) return -1;
|
||||||
tSerializeSMCfgDnodeReq(pBuf, bufLen, &cfgReq);
|
tSerializeSDCfgDnodeReq(pBuf, bufLen, &dcfgReq);
|
||||||
|
|
||||||
mDebug("dnode:%d, send config req to dnode, app:%p", cfgReq.dnodeId, pReq->info.ahandle);
|
mDebug("dnode:%d, send config req to dnode, app:%p", cfgReq.dnodeId, pReq->info.ahandle);
|
||||||
SRpcMsg rpcMsg = {.msgType = TDMT_DND_CONFIG_DNODE, .pCont = pBuf, .contLen = bufLen};
|
SRpcMsg rpcMsg = {.msgType = TDMT_DND_CONFIG_DNODE, .pCont = pBuf, .contLen = bufLen};
|
||||||
|
|
Loading…
Reference in New Issue