From 97c6bebfdeb35b17e62fa93049d4b1847af4820c Mon Sep 17 00:00:00 2001 From: slguan Date: Thu, 9 Jan 2020 18:28:45 +0800 Subject: [PATCH] TBASE-926, data may be lost when the cache is full --- src/system/detail/src/vnodeMeter.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/system/detail/src/vnodeMeter.c b/src/system/detail/src/vnodeMeter.c index a2da561434..190ddb1b09 100644 --- a/src/system/detail/src/vnodeMeter.c +++ b/src/system/detail/src/vnodeMeter.c @@ -576,6 +576,14 @@ int vnodeInsertPoints(SMeterObj *pObj, char *cont, int contLen, char source, voi return code; } + /* + * please refer to TBASE-926, data may be lost when the cache is full + */ + if (source == TSDB_DATA_SOURCE_SHELL && pVnode->cfg.replications > 1) { + code = vnodeForwardToPeer(pObj, cont, contLen, TSDB_ACTION_INSERT, sversion); + if (code != TSDB_CODE_SUCCESS) return code; + } + SCachePool *pPool = (SCachePool *)pVnode->pCachePool; if (pObj->freePoints < numOfPoints || pObj->freePoints < (pObj->pointsPerBlock << 1) || pPool->notFreeSlots > pVnode->cfg.cacheNumOfBlocks.totalBlocks - 2) { @@ -593,11 +601,6 @@ int vnodeInsertPoints(SMeterObj *pObj, char *cont, int contLen, char source, voi if (code != TSDB_CODE_SUCCESS) return code; } - if (source == TSDB_DATA_SOURCE_SHELL && pVnode->cfg.replications > 1) { - code = vnodeForwardToPeer(pObj, cont, contLen, TSDB_ACTION_INSERT, sversion); - if (code != TSDB_CODE_SUCCESS) return code; - } - if (pObj->sversion < sversion) { dTrace("vid:%d sid:%d id:%s, schema is changed, new:%d old:%d", pObj->vnode, pObj->sid, pObj->meterId, sversion, pObj->sversion); -- GitLab