未验证 提交 c2417eb5 编写于 作者: D dapan1121 提交者: GitHub

Merge pull request #22404 from taosdata/fix/TD-25621-3.0

fix: dup read lock on windows
...@@ -1434,35 +1434,36 @@ int32_t metaGetInfo(SMeta *pMeta, int64_t uid, SMetaInfo *pInfo, SMetaReader *pR ...@@ -1434,35 +1434,36 @@ int32_t metaGetInfo(SMeta *pMeta, int64_t uid, SMetaInfo *pInfo, SMetaReader *pR
int nData = 0; int nData = 0;
int lock = 0; int lock = 0;
metaRLock(pMeta); if (pReader && !(pReader->flags & META_READER_NOLOCK)) {
lock = 1;
}
if(!lock) metaRLock(pMeta);
// search cache // search cache
if (metaCacheGet(pMeta, uid, pInfo) == 0) { if (metaCacheGet(pMeta, uid, pInfo) == 0) {
metaULock(pMeta); if(!lock) metaULock(pMeta);
goto _exit; goto _exit;
} }
// search TDB // search TDB
if (tdbTbGet(pMeta->pUidIdx, &uid, sizeof(uid), &pData, &nData) < 0) { if (tdbTbGet(pMeta->pUidIdx, &uid, sizeof(uid), &pData, &nData) < 0) {
// not found // not found
metaULock(pMeta); if(!lock) metaULock(pMeta);
code = TSDB_CODE_NOT_FOUND; code = TSDB_CODE_NOT_FOUND;
goto _exit; goto _exit;
} }
metaULock(pMeta); if(!lock) metaULock(pMeta);
pInfo->uid = uid; pInfo->uid = uid;
pInfo->suid = ((SUidIdxVal *)pData)->suid; pInfo->suid = ((SUidIdxVal *)pData)->suid;
pInfo->version = ((SUidIdxVal *)pData)->version; pInfo->version = ((SUidIdxVal *)pData)->version;
pInfo->skmVer = ((SUidIdxVal *)pData)->skmVer; pInfo->skmVer = ((SUidIdxVal *)pData)->skmVer;
if (pReader != NULL) { if (lock) {
lock = !(pReader->flags & META_READER_NOLOCK); metaULock(pReader->pMeta);
if (lock) { // metaReaderReleaseLock(pReader);
metaULock(pReader->pMeta);
// metaReaderReleaseLock(pReader);
}
} }
// upsert the cache // upsert the cache
metaWLock(pMeta); metaWLock(pMeta);
......
...@@ -504,7 +504,7 @@ int32_t addTagPseudoColumnData(SReadHandle* pHandle, const SExprInfo* pExpr, int ...@@ -504,7 +504,7 @@ int32_t addTagPseudoColumnData(SReadHandle* pHandle, const SExprInfo* pExpr, int
// 1. check if it is existed in meta cache // 1. check if it is existed in meta cache
if (pCache == NULL) { if (pCache == NULL) {
pHandle->api.metaReaderFn.initReader(&mr, pHandle->vnode, META_READER_NOLOCK, &pHandle->api.metaFn); pHandle->api.metaReaderFn.initReader(&mr, pHandle->vnode, 0, &pHandle->api.metaFn);
code = pHandle->api.metaReaderFn.getEntryGetUidCache(&mr, pBlock->info.id.uid); code = pHandle->api.metaReaderFn.getEntryGetUidCache(&mr, pBlock->info.id.uid);
if (code != TSDB_CODE_SUCCESS) { if (code != TSDB_CODE_SUCCESS) {
// when encounter the TSDB_CODE_PAR_TABLE_NOT_EXIST error, we proceed. // when encounter the TSDB_CODE_PAR_TABLE_NOT_EXIST error, we proceed.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册