From 986788d4fe8ce414e5187adb37d22d150bb20aee Mon Sep 17 00:00:00 2001 From: kailixu Date: Sun, 24 Sep 2023 09:14:52 +0800 Subject: [PATCH] enh: timeseries calculation --- source/dnode/mgmt/mgmt_dnode/src/dmHandle.c | 16 +++++----- source/dnode/vnode/src/meta/metaQuery.c | 4 +-- source/dnode/vnode/src/meta/metaTable.c | 34 +++++++++++---------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c index d6a4b76964..c7af552da4 100644 --- a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c +++ b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c @@ -130,11 +130,11 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) { taosThreadRwlockUnlock(&pMgmt->pData->lock); SMonVloadInfo vinfo = {0}; - (*pMgmt->getVnodeLoadsFp)(&vinfo); + (*pMgmt->getVnodeLoadsFp)(&vinfo); req.pVloads = vinfo.pVloads; SMonMloadInfo minfo = {0}; - (*pMgmt->getMnodeLoadsFp)(&minfo); + (*pMgmt->getMnodeLoadsFp)(&minfo); req.mload = minfo.load; (*pMgmt->getQnodeLoadsFp)(&req.qload); @@ -173,11 +173,11 @@ void dmSendStatusReq(SDnodeMgmt *pMgmt) { void dmSendNotifyReq(SDnodeMgmt *pMgmt) { SNotifyReq req = {0}; - // taosThreadRwlockRdlock(&pMgmt->pData->lock); - // req.dnodeId = pMgmt->pData->dnodeId; - // taosThreadRwlockUnlock(&pMgmt->pData->lock); + taosThreadRwlockRdlock(&pMgmt->pData->lock); + req.dnodeId = pMgmt->pData->dnodeId; + taosThreadRwlockUnlock(&pMgmt->pData->lock); - // req.clusterId = pMgmt->pData->clusterId; + req.clusterId = pMgmt->pData->clusterId; SMonVloadInfo vinfo = {0}; (*pMgmt->getVnodeLoadsLiteFp)(&vinfo); @@ -228,7 +228,7 @@ static void dmGetServerRunStatus(SDnodeMgmt *pMgmt, SServerStatusRsp *pStatus) { SServerStatusRsp statusRsp = {0}; SMonMloadInfo minfo = {0}; - (*pMgmt->getMnodeLoadsFp)(&minfo); + (*pMgmt->getMnodeLoadsFp)(&minfo); if (minfo.isMnode && (minfo.load.syncState == TAOS_SYNC_STATE_ERROR || minfo.load.syncState == TAOS_SYNC_STATE_OFFLINE)) { pStatus->statusCode = TSDB_SRV_STATUS_SERVICE_DEGRADED; @@ -237,7 +237,7 @@ static void dmGetServerRunStatus(SDnodeMgmt *pMgmt, SServerStatusRsp *pStatus) { } SMonVloadInfo vinfo = {0}; - (*pMgmt->getVnodeLoadsFp)(&vinfo); + (*pMgmt->getVnodeLoadsFp)(&vinfo); for (int32_t i = 0; i < taosArrayGetSize(vinfo.pVloads); ++i) { SVnodeLoad *pLoad = taosArrayGet(vinfo.pVloads, i); if (pLoad->syncState == TAOS_SYNC_STATE_ERROR || pLoad->syncState == TAOS_SYNC_STATE_OFFLINE) { diff --git a/source/dnode/vnode/src/meta/metaQuery.c b/source/dnode/vnode/src/meta/metaQuery.c index 5401b42923..2bf73198aa 100644 --- a/source/dnode/vnode/src/meta/metaQuery.c +++ b/source/dnode/vnode/src/meta/metaQuery.c @@ -1531,8 +1531,8 @@ int32_t metaGetStbStats(void *pVnode, int64_t uid, int64_t *numOfTables, int32_t metaULock(pVnodeObj->pMeta); if (numOfTables) *numOfTables = state.ctbNum; if (numOfCols) *numOfCols = state.colNum; - assert(state.colNum > 0); - assert(state.ctbNum >= 0); + ASSERTS(state.colNum > 0, "vgId:%d, suid:%" PRIi64 " nCols:%d <= 0 in metaCache", TD_VID(pVnodeObj), uid, + state.colNum); goto _exit; } diff --git a/source/dnode/vnode/src/meta/metaTable.c b/source/dnode/vnode/src/meta/metaTable.c index da84b6e139..0a25bdc9c7 100644 --- a/source/dnode/vnode/src/meta/metaTable.c +++ b/source/dnode/vnode/src/meta/metaTable.c @@ -314,7 +314,7 @@ _drop_super_table: tdbTbDelete(pMeta->pNameIdx, pReq->name, strlen(pReq->name) + 1, pMeta->txn); tdbTbDelete(pMeta->pUidIdx, &pReq->suid, sizeof(tb_uid_t), pMeta->txn); tdbTbDelete(pMeta->pSuidIdx, &pReq->suid, sizeof(tb_uid_t), pMeta->txn); - + metaStatsCacheDrop(pMeta, pReq->suid); metaULock(pMeta); @@ -423,7 +423,7 @@ _exit: tDecoderClear(&dc); tdbTbcClose(pTbDbc); tdbTbcClose(pUidIdxc); - return ret; + return 0; } int metaAddIndexToSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) { SMetaEntry oStbEntry = {0}; @@ -850,8 +850,8 @@ int metaDropTable(SMeta *pMeta, int64_t version, SVDropTbReq *pReq, SArray *tbUi void *pData = NULL; int nData = 0; int rc = 0; - tb_uid_t uid; - tb_uid_t suid; + tb_uid_t uid = 0; + tb_uid_t suid = 0; int type; rc = tdbTbGet(pMeta->pNameIdx, pReq->name, strlen(pReq->name) + 1, &pData, &nData); @@ -891,38 +891,40 @@ _exit: void metaDropTables(SMeta *pMeta, SArray *tbUids) { if (taosArrayGetSize(tbUids) == 0) return; - int64_t ctbNum = 0; + int64_t nCtbDropped = 0; SSHashObj *suidHash = tSimpleHashInit(16, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT)); metaWLock(pMeta); for (int i = 0; i < taosArrayGetSize(tbUids); ++i) { tb_uid_t uid = *(tb_uid_t *)taosArrayGet(tbUids, i); tb_uid_t suid = 0; - metaDropTableByUid(pMeta, uid, NULL, &suid); - if (suid != 0 && suidHash) { - int64_t *cnt = tSimpleHashGet(suidHash, &suid, sizeof(tb_uid_t)); - if (cnt) { - ctbNum = *cnt + 1; + int type; + metaDropTableByUid(pMeta, uid, &type, &suid); + if (type == TSDB_CHILD_TABLE && suid != 0 && suidHash) { + int64_t *pVal = tSimpleHashGet(suidHash, &suid, sizeof(tb_uid_t)); + if (pVal) { + nCtbDropped = *pVal + 1; } else { - ctbNum = 1; + nCtbDropped = 1; } - tSimpleHashPut(suidHash, &suid, sizeof(tb_uid_t), &ctbNum, sizeof(int64_t)); + tSimpleHashPut(suidHash, &suid, sizeof(tb_uid_t), &nCtbDropped, sizeof(int64_t)); } metaDebug("batch drop table:%" PRId64, uid); } metaULock(pMeta); // update timeseries - void *pCtbNum = NULL; + void *pCtbDropped = NULL; int32_t iter = 0; - while ((pCtbNum = tSimpleHashIterate(suidHash, pCtbNum, &iter))) { - tb_uid_t *pSuid = tSimpleHashGetKey(pCtbNum, NULL); + while ((pCtbDropped = tSimpleHashIterate(suidHash, pCtbDropped, &iter))) { + tb_uid_t *pSuid = tSimpleHashGetKey(pCtbDropped, NULL); int32_t nCols = 0; SVnodeStats *pStats = &pMeta->pVnode->config.vndStats; if (metaGetStbStats(pMeta->pVnode, *pSuid, NULL, &nCols) == 0) { - pStats->numOfTimeSeries -= *(int64_t *)pCtbNum * (nCols - 1); + pStats->numOfTimeSeries -= *(int64_t *)pCtbDropped * (nCols - 1); } } + tSimpleHashCleanup(suidHash); } static int32_t metaFilterTableByHash(SMeta *pMeta, SArray *uidList) {