From c69215576de8ef02e987b692f32c8c3a8094ca2b Mon Sep 17 00:00:00 2001 From: kailixu Date: Fri, 3 Jan 2025 19:00:06 +0800 Subject: [PATCH] fix: eliminate duplicated read locks in one thread --- source/dnode/vnode/src/vnd/vnodeQuery.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/dnode/vnode/src/vnd/vnodeQuery.c b/source/dnode/vnode/src/vnd/vnodeQuery.c index 723fd14145..2b07de916c 100644 --- a/source/dnode/vnode/src/vnd/vnodeQuery.c +++ b/source/dnode/vnode/src/vnd/vnodeQuery.c @@ -91,10 +91,15 @@ int32_t vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, bool direct) { code = TSDB_CODE_TDB_TABLE_NOT_EXIST; goto _exit3; } - char tbName[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0}; - TAOS_CHECK_GOTO(metaGetTableNameByUid(pVnode, tbUid, tbName), NULL, _exit3); - tstrncpy(metaRsp.tbName, varDataVal(tbName), TSDB_TABLE_NAME_LEN); - TAOS_CHECK_GOTO(metaGetTableEntryByName(&mer1, varDataVal(tbName)), NULL, _exit3); + SMetaReader mr3 = {0}; + metaReaderDoInit(&mr3, ((SVnode *)pVnode)->pMeta, META_READER_NOLOCK); + if ((code = metaReaderGetTableEntryByUid(&mr3, tbUid)) < 0) { + metaReaderClear(&mr3); + TAOS_CHECK_GOTO(code, NULL, _exit3); + } + tstrncpy(metaRsp.tbName, mr3.me.name, TSDB_TABLE_NAME_LEN); + metaReaderClear(&mr3); + TAOS_CHECK_GOTO(metaGetTableEntryByName(&mer1, metaRsp.tbName), NULL, _exit3); } else if (metaGetTableEntryByName(&mer1, infoReq.tbName) < 0) { code = terrno; goto _exit3;