From 73261908b5d472e4232fa80facdf65013c5bdce0 Mon Sep 17 00:00:00 2001 From: dongming chen Date: Tue, 24 Jun 2025 16:53:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20implement=20retry=20mechanism=20for=20vn?= =?UTF-8?q?odeProcessWriteMsg=20in=20vnodeApply=E2=80=A6=20(#31388)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/dnode/vnode/src/vnd/vnodeSync.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/source/dnode/vnode/src/vnd/vnodeSync.c b/source/dnode/vnode/src/vnd/vnodeSync.c index 69e6ae8012c..31d33c12f40 100644 --- a/source/dnode/vnode/src/vnd/vnodeSync.c +++ b/source/dnode/vnode/src/vnd/vnodeSync.c @@ -347,10 +347,25 @@ void vnodeApplyWriteMsg(SQueueInfo *pInfo, STaosQall *qall, int32_t numOfMsgs) { SRpcMsg rsp = {.code = pMsg->code, .info = pMsg->info}; if (rsp.code == 0) { - if (vnodeProcessWriteMsg(pVnode, pMsg, pMsg->info.conn.applyIndex, &rsp) < 0) { - rsp.code = terrno; - vGError(&pMsg->info.traceId, "vgId:%d, msg:%p, failed to apply since %s, index:%" PRId64, vgId, pMsg, terrstr(), - pMsg->info.conn.applyIndex); + int32_t ret = 0; + int32_t count = 0; + while (1) { + ret = vnodeProcessWriteMsg(pVnode, pMsg, pMsg->info.conn.applyIndex, &rsp); + if (ret < 0) { + rsp.code = ret; + vGError(&pMsg->info.traceId, "vgId:%d, msg:%p, failed to apply since %s, index:%" PRId64, vgId, pMsg, + tstrerror(ret), pMsg->info.conn.applyIndex); + } + if (ret == TSDB_CODE_VND_WRITE_DISABLED) { + if (count % 100 == 0) + vGError(&pMsg->info.traceId, + "vgId:%d, msg:%p, failed to apply since %s, retry after 200ms, retry count:%d index:%" PRId64, vgId, + pMsg, tstrerror(ret), count, pMsg->info.conn.applyIndex); + count++; + taosMsleep(200); // wait for a while before retrying + } else{ + break; + } } }