From 481c5981d6b72c7ff21080ffff62bdf169b906d4 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 d845d87427..b0f4859f92 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1113,7 +1113,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 20e5702183b53d2d5e6cdaaaed2e6edba204266f 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 b0f4859f92..be4fbe9bfd 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1114,6 +1114,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); @@ -1121,6 +1122,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 f93d569552c608a1dd41b4f5c0753ad3a6db276e 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 be4fbe9bfd..b0f4859f92 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1114,7 +1114,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); @@ -1122,7 +1121,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 85729babf87f609943593e17a2bb51e7f761c846 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 b0f4859f92..9d82de0d1e 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1113,16 +1113,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; @@ -1194,6 +1185,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 46b5f8631cf5862663a3bbacee47bda067cc3918 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 9d82de0d1e..c9756ef814 100644 --- a/source/dnode/mnode/impl/src/mndTrans.c +++ b/source/dnode/mnode/impl/src/mndTrans.c @@ -1185,18 +1185,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; } @@ -1241,6 +1229,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; } }