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

This commit is contained in:
dmchen 2024-10-21 01:32:18 +00:00
parent 66dbc6c161
commit 1d0de625f4
1 changed files with 23 additions and 8 deletions

View File

@ -165,11 +165,16 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) {
(void)taosThreadRwlockUnlock(&pMgmt->pData->lock); (void)taosThreadRwlockUnlock(&pMgmt->pData->lock);
dDebug("send status req to mnode, statusSeq:%d, begin to get vnode loads", pMgmt->statusSeq); dDebug("send status req to mnode, statusSeq:%d, begin to get vnode loads", pMgmt->statusSeq);
(void)taosThreadMutexLock(&pMgmt->pData->statusInfolock); if (taosThreadMutexLock(&pMgmt->pData->statusInfolock) != 0) {
req.pVloads = taosArrayDup(tsVinfo.pVloads, NULL); dError("failed to lock status info lock");
taosArrayDestroy(tsVinfo.pVloads); return;
}
taosArraySwap(req.pVloads, tsVinfo.pVloads);
tsVinfo.pVloads = NULL; tsVinfo.pVloads = NULL;
(void)taosThreadMutexUnlock(&pMgmt->pData->statusInfolock); if (taosThreadMutexUnlock(&pMgmt->pData->statusInfolock) != 0) {
dError("failed to unlock status info lock");
return;
}
dDebug("send status req to mnode, statusSeq:%d, begin to get mnode loads", pMgmt->statusSeq); dDebug("send status req to mnode, statusSeq:%d, begin to get mnode loads", pMgmt->statusSeq);
SMonMloadInfo minfo = {0}; SMonMloadInfo minfo = {0};
@ -239,10 +244,20 @@ void dmUpdateStatusInfo(SDnodeMgmt *pMgmt) {
SMonVloadInfo vinfo = {0}; SMonVloadInfo vinfo = {0};
dDebug("begin to get vnode loads"); dDebug("begin to get vnode loads");
(*pMgmt->getVnodeLoadsFp)(&vinfo); (*pMgmt->getVnodeLoadsFp)(&vinfo);
(void)taosThreadMutexLock(&pMgmt->pData->statusInfolock); if (taosThreadMutexLock(&pMgmt->pData->statusInfolock) != 0) {
if (tsVinfo.pVloads == NULL) tsVinfo.pVloads = taosArrayDup(vinfo.pVloads, NULL); dError("failed to lock status info lock");
taosArrayDestroy(vinfo.pVloads); return;
(void)taosThreadMutexUnlock(&pMgmt->pData->statusInfolock); }
if (tsVinfo.pVloads == NULL) {
taosArraySwap(tsVinfo.pVloads, vinfo.pVloads);
} else {
taosArrayDestroy(vinfo.pVloads);
vinfo.pVloads = NULL;
}
if (taosThreadMutexUnlock(&pMgmt->pData->statusInfolock) != 0) {
dError("failed to unlock status info lock");
return;
}
} }
void dmSendNotifyReq(SDnodeMgmt *pMgmt, SNotifyReq *pReq) { void dmSendNotifyReq(SDnodeMgmt *pMgmt, SNotifyReq *pReq) {