From 41749b7c526d7c50a58e7d6a088d21cd330601b7 Mon Sep 17 00:00:00 2001 From: dmchen Date: Wed, 1 Nov 2023 09:03:13 +0000 Subject: [PATCH 1/5] fix/transaction-retry --- source/dnode/mnode/impl/src/mndTrans.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c index 1d8dd5e345..13a545f5e7 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1115,7 +1115,16 @@ static int32_t mndTransWriteSingleLog(SMnode *pMnode, STrans *pTrans, STransActi } static int32_t mndTransSendSingleMsg(SMnode *pMnode, STrans *pTrans, STransAction *pAction) { - if (pAction->msgSent) return 0; + if (pAction->msgSent){ + if (pAction->msgReceived) { + if (pAction->errCode != 0 && pAction->errCode != pAction->acceptableCode) { + mndTransResetAction(pMnode, pTrans, pAction); + } else { + mInfo("trans:%d, %s execute successfully", pTrans->id, mndTransStr(pAction->stage)); + } + } + return 0; + } if (mndCannotExecuteTransAction(pMnode)) return -1; int64_t signature = pTrans->id; From 88da6e0879047b546a5570ff9040d147dcc74162 Mon Sep 17 00:00:00 2001 From: dmchen Date: Thu, 2 Nov 2023 05:42:17 +0000 Subject: [PATCH 2/5] revert --- source/dnode/mnode/impl/src/mndTrans.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c index 13a545f5e7..224a73ebb8 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1116,6 +1116,7 @@ static int32_t mndTransWriteSingleLog(SMnode *pMnode, STrans *pTrans, STransActi static int32_t mndTransSendSingleMsg(SMnode *pMnode, STrans *pTrans, STransAction *pAction) { if (pAction->msgSent){ + /* if (pAction->msgReceived) { if (pAction->errCode != 0 && pAction->errCode != pAction->acceptableCode) { mndTransResetAction(pMnode, pTrans, pAction); @@ -1123,6 +1124,7 @@ static int32_t mndTransSendSingleMsg(SMnode *pMnode, STrans *pTrans, STransActio mInfo("trans:%d, %s execute successfully", pTrans->id, mndTransStr(pAction->stage)); } } + */ return 0; } if (mndCannotExecuteTransAction(pMnode)) return -1; From 55a5c3dd549ac9c8e8e22e6558f98e65f86802e2 Mon Sep 17 00:00:00 2001 From: dmchen Date: Thu, 2 Nov 2023 07:31:41 +0000 Subject: [PATCH 3/5] redo --- source/dnode/mnode/impl/src/mndTrans.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c index 224a73ebb8..13a545f5e7 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1116,7 +1116,6 @@ static int32_t mndTransWriteSingleLog(SMnode *pMnode, STrans *pTrans, STransActi static int32_t mndTransSendSingleMsg(SMnode *pMnode, STrans *pTrans, STransAction *pAction) { if (pAction->msgSent){ - /* if (pAction->msgReceived) { if (pAction->errCode != 0 && pAction->errCode != pAction->acceptableCode) { mndTransResetAction(pMnode, pTrans, pAction); @@ -1124,7 +1123,6 @@ static int32_t mndTransSendSingleMsg(SMnode *pMnode, STrans *pTrans, STransActio mInfo("trans:%d, %s execute successfully", pTrans->id, mndTransStr(pAction->stage)); } } - */ return 0; } if (mndCannotExecuteTransAction(pMnode)) return -1; From abda6053001a0e96e03d2a461279893e44f98028 Mon Sep 17 00:00:00 2001 From: dmchen Date: Thu, 2 Nov 2023 08:20:03 +0000 Subject: [PATCH 4/5] retry in outside --- source/dnode/mnode/impl/src/mndTrans.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c index 13a545f5e7..a26ed1209f 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1115,16 +1115,7 @@ static int32_t mndTransWriteSingleLog(SMnode *pMnode, STrans *pTrans, STransActi } static int32_t mndTransSendSingleMsg(SMnode *pMnode, STrans *pTrans, STransAction *pAction) { - if (pAction->msgSent){ - if (pAction->msgReceived) { - if (pAction->errCode != 0 && pAction->errCode != pAction->acceptableCode) { - mndTransResetAction(pMnode, pTrans, pAction); - } else { - mInfo("trans:%d, %s execute successfully", pTrans->id, mndTransStr(pAction->stage)); - } - } - return 0; - } + if (pAction->msgSent) return 0; if (mndCannotExecuteTransAction(pMnode)) return -1; int64_t signature = pTrans->id; @@ -1196,6 +1187,18 @@ static int32_t mndTransExecSingleActions(SMnode *pMnode, STrans *pTrans, SArray for (int32_t action = 0; action < numOfActions; ++action) { STransAction *pAction = taosArrayGet(pArray, action); code = mndTransExecSingleAction(pMnode, pTrans, pAction); + if (code == 0) { + if (pAction->msgSent) { + if (pAction->msgReceived) { + if (pAction->errCode != 0 && pAction->errCode != pAction->acceptableCode) { + mndTransResetAction(pMnode, pTrans, pAction); + mInfo("trans:%d, %s execute fail mndTransSendSingleMsg", pTrans->id, mndTransStr(pAction->stage)); + } else { + mInfo("trans:%d, %s execute successfully mndTransSendSingleMsg", pTrans->id, mndTransStr(pAction->stage)); + } + } + } + } if (code != 0) break; } From 0e43b00194c5a62d8d8d86236acb0c2e0fc51427 Mon Sep 17 00:00:00 2001 From: dmchen Date: Fri, 3 Nov 2023 04:07:18 +0000 Subject: [PATCH 5/5] partial retry --- source/dnode/mnode/impl/src/mndTrans.c | 27 ++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndTrans.c b/source/dnode/mnode/impl/src/mndTrans.c index a26ed1209f..fc769e82fb 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1187,18 +1187,6 @@ static int32_t mndTransExecSingleActions(SMnode *pMnode, STrans *pTrans, SArray for (int32_t action = 0; action < numOfActions; ++action) { STransAction *pAction = taosArrayGet(pArray, action); code = mndTransExecSingleAction(pMnode, pTrans, pAction); - if (code == 0) { - if (pAction->msgSent) { - if (pAction->msgReceived) { - if (pAction->errCode != 0 && pAction->errCode != pAction->acceptableCode) { - mndTransResetAction(pMnode, pTrans, pAction); - mInfo("trans:%d, %s execute fail mndTransSendSingleMsg", pTrans->id, mndTransStr(pAction->stage)); - } else { - mInfo("trans:%d, %s execute successfully mndTransSendSingleMsg", pTrans->id, mndTransStr(pAction->stage)); - } - } - } - } if (code != 0) break; } @@ -1243,6 +1231,21 @@ static int32_t mndTransExecuteActions(SMnode *pMnode, STrans *pTrans, SArray *pA } } else { mInfo("trans:%d, %d of %d actions executed", pTrans->id, numOfExecuted, numOfActions); + + for (int32_t action = 0; action < numOfActions; ++action) { + STransAction *pAction = taosArrayGet(pArray, action); + mDebug("trans:%d, %s:%d Sent:%d, Received:%d, errCode:0x%x, acceptableCode:0x%x, retryCode:0x%x", + pTrans->id, mndTransStr(pAction->stage), pAction->id, pAction->msgSent, pAction->msgReceived, + pAction->errCode, pAction->acceptableCode, pAction->retryCode); + if (pAction->msgSent) { + if (pAction->msgReceived) { + if (pAction->errCode != 0 && pAction->errCode != pAction->acceptableCode) { + mndTransResetAction(pMnode, pTrans, pAction); + mInfo("trans:%d, %s:%d reset", pTrans->id, mndTransStr(pAction->stage), pAction->id); + } + } + } + } return TSDB_CODE_ACTION_IN_PROGRESS; } }