fix/TS-5532-set-seperate-thread-update-status-fix-case

This commit is contained in:
dmchen 2024-10-18 07:23:25 +00:00
parent 9ee34a548a
commit 6fa8557e99
3 changed files with 13 additions and 2 deletions

View File

@ -22,7 +22,7 @@
extern SConfig *tsCfg;
SMonVloadInfo vinfo = {0};
SMonVloadInfo tsVinfo = {0};
static void dmUpdateDnodeCfg(SDnodeMgmt *pMgmt, SDnodeCfg *pCfg) {
int32_t code = 0;
@ -165,7 +165,11 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) {
(void)taosThreadRwlockUnlock(&pMgmt->pData->lock);
dDebug("send status req to mnode, statusSeq:%d, begin to get vnode loads", pMgmt->statusSeq);
req.pVloads = vinfo.pVloads;
(void)taosThreadRwlockRdlock(&pMgmt->pData->statusInfolock);
req.pVloads = taosArrayDup(tsVinfo.pVloads, NULL);
taosArrayDestroy(tsVinfo.pVloads);
tsVinfo.pVloads = NULL;
(void)taosThreadRwlockUnlock(&pMgmt->pData->statusInfolock);
dDebug("send status req to mnode, statusSeq:%d, begin to get mnode loads", pMgmt->statusSeq);
SMonMloadInfo minfo = {0};
@ -232,8 +236,13 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) {
}
void dmUpdateStatusInfo(SDnodeMgmt *pMgmt) {
SMonVloadInfo vinfo = {0};
dDebug("begin to get vnode loads");
(*pMgmt->getVnodeLoadsFp)(&vinfo);
(void)taosThreadRwlockWrlock(&pMgmt->pData->statusInfolock);
if (tsVinfo.pVloads == NULL) tsVinfo.pVloads = taosArrayDup(vinfo.pVloads, NULL);
taosArrayDestroy(vinfo.pVloads);
(void)taosThreadRwlockWrlock(&pMgmt->pData->statusInfolock);
}
void dmSendNotifyReq(SDnodeMgmt *pMgmt, SNotifyReq *pReq) {

View File

@ -214,6 +214,7 @@ int32_t dmInitVars(SDnode *pDnode) {
}
(void)taosThreadRwlockInit(&pData->lock, NULL);
(void)taosThreadRwlockInit(&pData->statusInfolock, NULL);
(void)taosThreadMutexInit(&pDnode->mutex, NULL);
return 0;
}

View File

@ -144,6 +144,7 @@ typedef struct {
char machineId[TSDB_MACHINE_ID_LEN + 1];
EEncryptAlgor encryptAlgorigthm;
EEncryptScope encryptScope;
TdThreadRwlock statusInfolock;
} SDnodeData;
typedef struct {