From b7ac84aa77c5b56f111da86781d2969476cc99e8 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Tue, 31 Aug 2021 20:41:09 +0800 Subject: [PATCH] [TD-6365]: fix slave vnode's memory bloated issue caused by too many fwd messages --- src/vnode/src/vnodeWrite.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index 743398d834..e8ac978bb2 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -289,6 +289,13 @@ static int32_t vnodeWriteToWQueueImp(SVWriteMsg *pWrite) { int64_t queuedSize = atomic_add_fetch_64(&pVnode->queuedWMsgSize, pWrite->walHead.len); if (queued > MAX_QUEUED_MSG_NUM || queuedSize > MAX_QUEUED_MSG_SIZE) { + if (pWrite->qtype == TAOS_QTYPE_FWD) { + queued = atomic_sub_fetch_32(&pVnode->queuedWMsg, 1); + queuedSize = atomic_sub_fetch_64(&pVnode->queuedWMsgSize, pWrite->walHead.len); + + return -1; + } + int32_t ms = (queued / MAX_QUEUED_MSG_NUM) * 10 + 3; if (ms > 100) ms = 100; vDebug("vgId:%d, too many msg:%d in vwqueue, flow control %dms", pVnode->vgId, queued, ms); -- GitLab