fix: trans conflict during update dnode info

This commit is contained in:
kailixu 2024-07-30 17:07:38 +08:00
parent ce54abd94d
commit 5602a5eac2
1 changed files with 4 additions and 3 deletions

View File

@ -636,6 +636,7 @@ static int32_t mndProcessUpdateDnodeInfoReq(SRpcMsg *pReq) {
SDnodeInfoReq infoReq = {0}; SDnodeInfoReq infoReq = {0};
SDnodeObj *pDnode = NULL; SDnodeObj *pDnode = NULL;
STrans *pTrans = NULL; STrans *pTrans = NULL;
SSdbRaw *pCommitRaw = NULL;
TAOS_CHECK_EXIT(tDeserializeSDnodeInfoReq(pReq->pCont, pReq->contLen, &infoReq)); TAOS_CHECK_EXIT(tDeserializeSDnodeInfoReq(pReq->pCont, pReq->contLen, &infoReq));
@ -651,16 +652,15 @@ static int32_t mndProcessUpdateDnodeInfoReq(SRpcMsg *pReq) {
pDnode->updateTime = taosGetTimestampMs(); pDnode->updateTime = taosGetTimestampMs();
SSdbRaw *pCommitRaw = mndDnodeActionEncode(pDnode); if ((pCommitRaw = mndDnodeActionEncode(pDnode)) == NULL) {
if (pCommitRaw == NULL) {
TAOS_CHECK_EXIT(terrno); TAOS_CHECK_EXIT(terrno);
} }
if ((code = mndTransAppendCommitlog(pTrans, pCommitRaw)) != 0) { if ((code = mndTransAppendCommitlog(pTrans, pCommitRaw)) != 0) {
sdbFreeRaw(pCommitRaw);
mError("trans:%d, failed to append commit log since %s", pTrans->id, tstrerror(code)); mError("trans:%d, failed to append commit log since %s", pTrans->id, tstrerror(code));
TAOS_CHECK_EXIT(code); TAOS_CHECK_EXIT(code);
} }
(void)sdbSetRawStatus(pCommitRaw, SDB_STATUS_READY); (void)sdbSetRawStatus(pCommitRaw, SDB_STATUS_READY);
pCommitRaw = NULL;
if ((code = mndTransPrepare(pMnode, pTrans)) != 0) { if ((code = mndTransPrepare(pMnode, pTrans)) != 0) {
mError("trans:%d, failed to prepare since %s", pTrans->id, tstrerror(code)); mError("trans:%d, failed to prepare since %s", pTrans->id, tstrerror(code));
@ -673,6 +673,7 @@ _exit:
mError("dnode:%d, failed to update dnode info at line %d since %s", infoReq.dnodeId, lino, tstrerror(code)); mError("dnode:%d, failed to update dnode info at line %d since %s", infoReq.dnodeId, lino, tstrerror(code));
} }
mndTransDrop(pTrans); mndTransDrop(pTrans);
sdbFreeRaw(pCommitRaw);
TAOS_RETURN(code); TAOS_RETURN(code);
} }