fix dead lock issue
This commit is contained in:
parent
7de08aaadc
commit
6d1ff4c18b
|
@ -784,8 +784,7 @@ int32_t ctgHandleGetTbMetaRsp(SCtgTask* pTask, int32_t reqType, const SDataBuf *
|
||||||
_return:
|
_return:
|
||||||
|
|
||||||
if (dbCache) {
|
if (dbCache) {
|
||||||
ctgRUnlockVgInfo(dbCache);
|
ctgReleaseVgInfoToCache(pCtg, dbCache);
|
||||||
ctgReleaseDBCache(pCtg, dbCache);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ctgHandleTaskEnd(pTask, code);
|
ctgHandleTaskEnd(pTask, code);
|
||||||
|
@ -943,7 +942,6 @@ _return:
|
||||||
|
|
||||||
int32_t ctgHandleGetUserRsp(SCtgTask* pTask, int32_t reqType, const SDataBuf *pMsg, int32_t rspCode) {
|
int32_t ctgHandleGetUserRsp(SCtgTask* pTask, int32_t reqType, const SDataBuf *pMsg, int32_t rspCode) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
SCtgDBCache *dbCache = NULL;
|
|
||||||
SCtgUserCtx* ctx = (SCtgUserCtx*)pTask->taskCtx;
|
SCtgUserCtx* ctx = (SCtgUserCtx*)pTask->taskCtx;
|
||||||
SCatalog* pCtg = pTask->pJob->pCtg;
|
SCatalog* pCtg = pTask->pJob->pCtg;
|
||||||
bool pass = false;
|
bool pass = false;
|
||||||
|
@ -1012,7 +1010,7 @@ int32_t ctgAsyncRefreshTbMeta(SCtgTask *pTask) {
|
||||||
CTG_ERR_RET(ctgAcquireVgInfoFromCache(pCtg, dbFName, &dbCache));
|
CTG_ERR_RET(ctgAcquireVgInfoFromCache(pCtg, dbFName, &dbCache));
|
||||||
if (dbCache) {
|
if (dbCache) {
|
||||||
SVgroupInfo vgInfo = {0};
|
SVgroupInfo vgInfo = {0};
|
||||||
CTG_ERR_RET(ctgGetVgInfoFromHashValue(pCtg, dbCache->vgCache.vgInfo, ctx->pName, &vgInfo));
|
CTG_ERR_JRET(ctgGetVgInfoFromHashValue(pCtg, dbCache->vgCache.vgInfo, ctx->pName, &vgInfo));
|
||||||
|
|
||||||
ctgDebug("will refresh tbmeta, not supposed to be stb, tbName:%s, flag:%d", tNameGetTableName(ctx->pName), ctx->flag);
|
ctgDebug("will refresh tbmeta, not supposed to be stb, tbName:%s, flag:%d", tNameGetTableName(ctx->pName), ctx->flag);
|
||||||
|
|
||||||
|
@ -1062,6 +1060,9 @@ int32_t ctgLaunchGetDbVgTask(SCtgTask *pTask) {
|
||||||
if (NULL != dbCache) {
|
if (NULL != dbCache) {
|
||||||
CTG_ERR_JRET(ctgGenerateVgList(pCtg, dbCache->vgCache.vgInfo->vgHash, (SArray**)&pTask->res));
|
CTG_ERR_JRET(ctgGenerateVgList(pCtg, dbCache->vgCache.vgInfo->vgHash, (SArray**)&pTask->res));
|
||||||
|
|
||||||
|
ctgReleaseVgInfoToCache(pCtg, dbCache);
|
||||||
|
dbCache = NULL;
|
||||||
|
|
||||||
CTG_ERR_JRET(ctgHandleTaskEnd(pTask, 0));
|
CTG_ERR_JRET(ctgHandleTaskEnd(pTask, 0));
|
||||||
} else {
|
} else {
|
||||||
SBuildUseDBInput input = {0};
|
SBuildUseDBInput input = {0};
|
||||||
|
@ -1096,6 +1097,9 @@ int32_t ctgLaunchGetTbHashTask(SCtgTask *pTask) {
|
||||||
}
|
}
|
||||||
CTG_ERR_JRET(ctgGetVgInfoFromHashValue(pCtg, dbCache->vgCache.vgInfo, pCtx->pName, (SVgroupInfo*)pTask->res));
|
CTG_ERR_JRET(ctgGetVgInfoFromHashValue(pCtg, dbCache->vgCache.vgInfo, pCtx->pName, (SVgroupInfo*)pTask->res));
|
||||||
|
|
||||||
|
ctgReleaseVgInfoToCache(pCtg, dbCache);
|
||||||
|
dbCache = NULL;
|
||||||
|
|
||||||
CTG_ERR_JRET(ctgHandleTaskEnd(pTask, 0));
|
CTG_ERR_JRET(ctgHandleTaskEnd(pTask, 0));
|
||||||
} else {
|
} else {
|
||||||
SBuildUseDBInput input = {0};
|
SBuildUseDBInput input = {0};
|
||||||
|
@ -1170,6 +1174,9 @@ int32_t ctgLaunchGetDbInfoTask(SCtgTask *pTask) {
|
||||||
pInfo->vgVer = dbCache->vgCache.vgInfo->vgVersion;
|
pInfo->vgVer = dbCache->vgCache.vgInfo->vgVersion;
|
||||||
pInfo->dbId = dbCache->dbId;
|
pInfo->dbId = dbCache->dbId;
|
||||||
pInfo->tbNum = dbCache->vgCache.vgInfo->numOfTable;
|
pInfo->tbNum = dbCache->vgCache.vgInfo->numOfTable;
|
||||||
|
|
||||||
|
ctgReleaseVgInfoToCache(pCtg, dbCache);
|
||||||
|
dbCache = NULL;
|
||||||
} else {
|
} else {
|
||||||
pInfo->vgVer = CTG_DEFAULT_INVALID_VERSION;
|
pInfo->vgVer = CTG_DEFAULT_INVALID_VERSION;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include "catalogInt.h"
|
#include "catalogInt.h"
|
||||||
|
|
||||||
extern SCatalogMgmt gCtgMgmt;
|
extern SCatalogMgmt gCtgMgmt;
|
||||||
SCtgDebug gCTGDebug = {0};
|
SCtgDebug gCTGDebug = {.lockEnable = true, .apiEnable = true};
|
||||||
|
|
||||||
void ctgdUserCallback(SMetaData* pResult, void* param, int32_t code) {
|
void ctgdUserCallback(SMetaData* pResult, void* param, int32_t code) {
|
||||||
ASSERT(*(int32_t*)param == 1);
|
ASSERT(*(int32_t*)param == 1);
|
||||||
|
|
Loading…
Reference in New Issue