fix: dup read lock on windows
This commit is contained in:
parent
3c2bf19706
commit
1d089fe085
|
@ -1432,37 +1432,38 @@ int32_t metaGetInfo(SMeta *pMeta, int64_t uid, SMetaInfo *pInfo, SMetaReader *pR
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
void *pData = NULL;
|
void *pData = NULL;
|
||||||
int nData = 0;
|
int nData = 0;
|
||||||
int lock = 0;
|
bool lock = false;
|
||||||
|
|
||||||
metaRLock(pMeta);
|
if (pReader && !(pReader->flags & META_READER_NOLOCK)) {
|
||||||
|
lock = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
// 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.
|
||||||
|
|
Loading…
Reference in New Issue