fix: vgroup array not made in some cases
This commit is contained in:
parent
3c1e52eb91
commit
b08ee99c4c
|
@ -239,6 +239,7 @@ int32_t dataConverToStr(char* str, int type, void* buf, int32_t bufSize, int32_t
|
||||||
char* parseTagDatatoJson(void* p);
|
char* parseTagDatatoJson(void* p);
|
||||||
int32_t cloneTableMeta(STableMeta* pSrc, STableMeta** pDst);
|
int32_t cloneTableMeta(STableMeta* pSrc, STableMeta** pDst);
|
||||||
int32_t cloneDbVgInfo(SDBVgInfo* pSrc, SDBVgInfo** pDst);
|
int32_t cloneDbVgInfo(SDBVgInfo* pSrc, SDBVgInfo** pDst);
|
||||||
|
void freeVgInfo(SDBVgInfo* vgInfo);
|
||||||
|
|
||||||
extern int32_t (*queryBuildMsg[TDMT_MAX])(void* input, char** msg, int32_t msgSize, int32_t* msgLen,
|
extern int32_t (*queryBuildMsg[TDMT_MAX])(void* input, char** msg, int32_t msgSize, int32_t* msgLen,
|
||||||
void* (*mallocFp)(int64_t));
|
void* (*mallocFp)(int64_t));
|
||||||
|
|
|
@ -762,7 +762,6 @@ int32_t ctgCloneMetaOutput(STableMetaOutput* output, STableMetaOutput** pOutput)
|
||||||
int32_t ctgGenerateVgList(SCatalog* pCtg, SHashObj* vgHash, SArray** pList);
|
int32_t ctgGenerateVgList(SCatalog* pCtg, SHashObj* vgHash, SArray** pList);
|
||||||
void ctgFreeJob(void* job);
|
void ctgFreeJob(void* job);
|
||||||
void ctgFreeHandleImpl(SCatalog* pCtg);
|
void ctgFreeHandleImpl(SCatalog* pCtg);
|
||||||
void ctgFreeVgInfo(SDBVgInfo* vgInfo);
|
|
||||||
int32_t ctgGetVgInfoFromHashValue(SCatalog* pCtg, SDBVgInfo* dbInfo, const SName* pTableName, SVgroupInfo* pVgroup);
|
int32_t ctgGetVgInfoFromHashValue(SCatalog* pCtg, SDBVgInfo* dbInfo, const SName* pTableName, SVgroupInfo* pVgroup);
|
||||||
int32_t ctgGetVgInfosFromHashValue(SCatalog* pCtg, SCtgTaskReq* tReq, SDBVgInfo* dbInfo, SCtgTbHashsCtx* pCtx,
|
int32_t ctgGetVgInfosFromHashValue(SCatalog* pCtg, SCtgTaskReq* tReq, SDBVgInfo* dbInfo, SCtgTbHashsCtx* pCtx,
|
||||||
char* dbFName, SArray* pNames, bool update);
|
char* dbFName, SArray* pNames, bool update);
|
||||||
|
@ -790,6 +789,7 @@ int32_t ctgGetTbHashVgroup(SCatalog* pCtg, SRequestConnInfo* pConn, const SName*
|
||||||
SName* ctgGetFetchName(SArray* pNames, SCtgFetch* pFetch);
|
SName* ctgGetFetchName(SArray* pNames, SCtgFetch* pFetch);
|
||||||
int32_t ctgdGetOneHandle(SCatalog **pHandle);
|
int32_t ctgdGetOneHandle(SCatalog **pHandle);
|
||||||
int ctgVgInfoComp(const void* lp, const void* rp);
|
int ctgVgInfoComp(const void* lp, const void* rp);
|
||||||
|
int32_t ctgMakeVgArray(SDBVgInfo* dbInfo);
|
||||||
|
|
||||||
extern SCatalogMgmt gCtgMgmt;
|
extern SCatalogMgmt gCtgMgmt;
|
||||||
extern SCtgDebug gCTGDebug;
|
extern SCtgDebug gCTGDebug;
|
||||||
|
|
|
@ -505,8 +505,7 @@ _return:
|
||||||
taosMemoryFreeClear(tbMeta);
|
taosMemoryFreeClear(tbMeta);
|
||||||
|
|
||||||
if (vgInfo) {
|
if (vgInfo) {
|
||||||
taosHashCleanup(vgInfo->vgHash);
|
freeVgInfo(vgInfo);
|
||||||
taosMemoryFreeClear(vgInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vgList) {
|
if (vgList) {
|
||||||
|
@ -546,8 +545,7 @@ _return:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vgInfo) {
|
if (vgInfo) {
|
||||||
taosHashCleanup(vgInfo->vgHash);
|
freeVgInfo(vgInfo);
|
||||||
taosMemoryFreeClear(vgInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CTG_RET(code);
|
CTG_RET(code);
|
||||||
|
@ -778,8 +776,7 @@ _return:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vgInfo) {
|
if (vgInfo) {
|
||||||
taosHashCleanup(vgInfo->vgHash);
|
freeVgInfo(vgInfo);
|
||||||
taosMemoryFreeClear(vgInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CTG_API_LEAVE(code);
|
CTG_API_LEAVE(code);
|
||||||
|
@ -836,8 +833,7 @@ _return:
|
||||||
ctgRUnlockVgInfo(dbCache);
|
ctgRUnlockVgInfo(dbCache);
|
||||||
ctgReleaseDBCache(pCtg, dbCache);
|
ctgReleaseDBCache(pCtg, dbCache);
|
||||||
} else if (dbInfo) {
|
} else if (dbInfo) {
|
||||||
taosHashCleanup(dbInfo->vgHash);
|
freeVgInfo(dbInfo);
|
||||||
taosMemoryFreeClear(dbInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CTG_API_LEAVE(code);
|
CTG_API_LEAVE(code);
|
||||||
|
@ -849,7 +845,7 @@ int32_t catalogUpdateDBVgInfo(SCatalog* pCtg, const char* dbFName, uint64_t dbId
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
|
||||||
if (NULL == pCtg || NULL == dbFName || NULL == dbInfo) {
|
if (NULL == pCtg || NULL == dbFName || NULL == dbInfo) {
|
||||||
ctgFreeVgInfo(dbInfo);
|
freeVgInfo(dbInfo);
|
||||||
CTG_ERR_JRET(TSDB_CODE_CTG_INVALID_INPUT);
|
CTG_ERR_JRET(TSDB_CODE_CTG_INVALID_INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -843,7 +843,7 @@ int32_t ctgUpdateVgroupEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId
|
||||||
if (NULL == msg) {
|
if (NULL == msg) {
|
||||||
ctgError("malloc %d failed", (int32_t)sizeof(SCtgUpdateVgMsg));
|
ctgError("malloc %d failed", (int32_t)sizeof(SCtgUpdateVgMsg));
|
||||||
taosMemoryFree(op);
|
taosMemoryFree(op);
|
||||||
ctgFreeVgInfo(dbInfo);
|
freeVgInfo(dbInfo);
|
||||||
CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -852,16 +852,12 @@ int32_t ctgUpdateVgroupEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId
|
||||||
dbFName = p + 1;
|
dbFName = p + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dbInfo->vgHash && NULL == dbInfo->vgArray) {
|
code = ctgMakeVgArray(dbInfo);
|
||||||
dbInfo->vgArray = taosArrayInit(100, sizeof(SVgroupInfo));
|
if (code) {
|
||||||
|
taosMemoryFree(op);
|
||||||
void* pIter = taosHashIterate(dbInfo->vgHash, NULL);
|
taosMemoryFree(msg);
|
||||||
while (pIter) {
|
freeVgInfo(dbInfo);
|
||||||
taosArrayPush(dbInfo->vgArray, pIter);
|
CTG_ERR_RET(code);
|
||||||
pIter = taosHashIterate(dbInfo->vgHash, pIter);
|
|
||||||
}
|
|
||||||
|
|
||||||
taosArraySort(dbInfo->vgArray, ctgVgInfoComp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tstrncpy(msg->dbFName, dbFName, sizeof(msg->dbFName));
|
tstrncpy(msg->dbFName, dbFName, sizeof(msg->dbFName));
|
||||||
|
@ -877,7 +873,7 @@ int32_t ctgUpdateVgroupEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
|
|
||||||
ctgFreeVgInfo(dbInfo);
|
freeVgInfo(dbInfo);
|
||||||
CTG_RET(code);
|
CTG_RET(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1675,7 +1671,7 @@ int32_t ctgOpUpdateVgroup(SCtgCacheOperation *operation) {
|
||||||
goto _return;
|
goto _return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctgFreeVgInfo(vgInfo);
|
freeVgInfo(vgInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
vgCache->vgInfo = dbInfo;
|
vgCache->vgInfo = dbInfo;
|
||||||
|
@ -1696,7 +1692,7 @@ int32_t ctgOpUpdateVgroup(SCtgCacheOperation *operation) {
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
|
|
||||||
ctgFreeVgInfo(msg->dbInfo);
|
freeVgInfo(msg->dbInfo);
|
||||||
taosMemoryFreeClear(msg);
|
taosMemoryFreeClear(msg);
|
||||||
|
|
||||||
CTG_RET(code);
|
CTG_RET(code);
|
||||||
|
@ -1749,7 +1745,7 @@ int32_t ctgOpDropDbVgroup(SCtgCacheOperation *operation) {
|
||||||
|
|
||||||
CTG_ERR_JRET(ctgWLockVgInfo(pCtg, dbCache));
|
CTG_ERR_JRET(ctgWLockVgInfo(pCtg, dbCache));
|
||||||
|
|
||||||
ctgFreeVgInfo(dbCache->vgCache.vgInfo);
|
freeVgInfo(dbCache->vgCache.vgInfo);
|
||||||
dbCache->vgCache.vgInfo = NULL;
|
dbCache->vgCache.vgInfo = NULL;
|
||||||
|
|
||||||
ctgDebug("db vgInfo removed, dbFName:%s", msg->dbFName);
|
ctgDebug("db vgInfo removed, dbFName:%s", msg->dbFName);
|
||||||
|
@ -2139,7 +2135,7 @@ void ctgFreeCacheOperationData(SCtgCacheOperation *op) {
|
||||||
switch (op->opId) {
|
switch (op->opId) {
|
||||||
case CTG_OP_UPDATE_VGROUP: {
|
case CTG_OP_UPDATE_VGROUP: {
|
||||||
SCtgUpdateVgMsg *msg = op->data;
|
SCtgUpdateVgMsg *msg = op->data;
|
||||||
ctgFreeVgInfo(msg->dbInfo);
|
freeVgInfo(msg->dbInfo);
|
||||||
taosMemoryFreeClear(op->data);
|
taosMemoryFreeClear(op->data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -231,18 +231,7 @@ void ctgFreeTbCache(SCtgDBCache* dbCache) {
|
||||||
CTG_CACHE_STAT_DEC(numOfTbl, tblNum);
|
CTG_CACHE_STAT_DEC(numOfTbl, tblNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ctgFreeVgInfo(SDBVgInfo* vgInfo) {
|
void ctgFreeVgInfoCache(SCtgDBCache* dbCache) { freeVgInfo(dbCache->vgCache.vgInfo); }
|
||||||
if (NULL == vgInfo) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
taosHashCleanup(vgInfo->vgHash);
|
|
||||||
taosArrayDestroy(vgInfo->vgArray);
|
|
||||||
|
|
||||||
taosMemoryFreeClear(vgInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ctgFreeVgInfoCache(SCtgDBCache* dbCache) { ctgFreeVgInfo(dbCache->vgCache.vgInfo); }
|
|
||||||
|
|
||||||
void ctgFreeDbCache(SCtgDBCache* dbCache) {
|
void ctgFreeDbCache(SCtgDBCache* dbCache) {
|
||||||
if (NULL == dbCache) {
|
if (NULL == dbCache) {
|
||||||
|
@ -364,8 +353,7 @@ void ctgFreeSUseDbOutput(SUseDbOutput* pOutput) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pOutput->dbVgroup) {
|
if (pOutput->dbVgroup) {
|
||||||
taosHashCleanup(pOutput->dbVgroup->vgHash);
|
freeVgInfo(pOutput->dbVgroup);
|
||||||
taosMemoryFreeClear(pOutput->dbVgroup);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFree(pOutput);
|
taosMemoryFree(pOutput);
|
||||||
|
@ -571,8 +559,7 @@ void ctgFreeSubTaskRes(CTG_TASK_TYPE type, void** pRes) {
|
||||||
case CTG_TASK_GET_DB_VGROUP: {
|
case CTG_TASK_GET_DB_VGROUP: {
|
||||||
if (*pRes) {
|
if (*pRes) {
|
||||||
SDBVgInfo* pInfo = (SDBVgInfo*)*pRes;
|
SDBVgInfo* pInfo = (SDBVgInfo*)*pRes;
|
||||||
taosHashCleanup(pInfo->vgHash);
|
freeVgInfo(pInfo);
|
||||||
taosMemoryFreeClear(*pRes);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1035,7 +1022,33 @@ int32_t ctgDbVgVersionSortCompare(const void* key1, const void* key2) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t ctgMakeVgArray(SDBVgInfo* dbInfo) {
|
||||||
|
if (NULL == dbInfo) {
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dbInfo->vgHash && NULL == dbInfo->vgArray) {
|
||||||
|
dbInfo->vgArray = taosArrayInit(100, sizeof(SVgroupInfo));
|
||||||
|
if (NULL == dbInfo->vgArray) {
|
||||||
|
CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* pIter = taosHashIterate(dbInfo->vgHash, NULL);
|
||||||
|
while (pIter) {
|
||||||
|
taosArrayPush(dbInfo->vgArray, pIter);
|
||||||
|
pIter = taosHashIterate(dbInfo->vgHash, pIter);
|
||||||
|
}
|
||||||
|
|
||||||
|
taosArraySort(dbInfo->vgArray, ctgVgInfoComp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t ctgCloneVgInfo(SDBVgInfo* src, SDBVgInfo** dst) {
|
int32_t ctgCloneVgInfo(SDBVgInfo* src, SDBVgInfo** dst) {
|
||||||
|
CTG_ERR_RET(ctgMakeVgArray(src));
|
||||||
|
|
||||||
*dst = taosMemoryMalloc(sizeof(SDBVgInfo));
|
*dst = taosMemoryMalloc(sizeof(SDBVgInfo));
|
||||||
if (NULL == *dst) {
|
if (NULL == *dst) {
|
||||||
qError("malloc %d failed", (int32_t)sizeof(SDBVgInfo));
|
qError("malloc %d failed", (int32_t)sizeof(SDBVgInfo));
|
||||||
|
|
|
@ -447,6 +447,19 @@ int32_t cloneTableMeta(STableMeta* pSrc, STableMeta** pDst) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void freeVgInfo(SDBVgInfo* vgInfo) {
|
||||||
|
if (NULL == vgInfo) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
taosHashCleanup(vgInfo->vgHash);
|
||||||
|
taosArrayDestroy(vgInfo->vgArray);
|
||||||
|
|
||||||
|
taosMemoryFreeClear(vgInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t cloneDbVgInfo(SDBVgInfo* pSrc, SDBVgInfo** pDst) {
|
int32_t cloneDbVgInfo(SDBVgInfo* pSrc, SDBVgInfo** pDst) {
|
||||||
if (NULL == pSrc) {
|
if (NULL == pSrc) {
|
||||||
*pDst = NULL;
|
*pDst = NULL;
|
||||||
|
@ -475,8 +488,7 @@ int32_t cloneDbVgInfo(SDBVgInfo* pSrc, SDBVgInfo** pDst) {
|
||||||
if (0 != taosHashPut((*pDst)->vgHash, vgId, sizeof(*vgId), vgInfo, sizeof(*vgInfo))) {
|
if (0 != taosHashPut((*pDst)->vgHash, vgId, sizeof(*vgId), vgInfo, sizeof(*vgInfo))) {
|
||||||
qError("taosHashPut failed, vgId:%d", vgInfo->vgId);
|
qError("taosHashPut failed, vgId:%d", vgInfo->vgId);
|
||||||
taosHashCancelIterate(pSrc->vgHash, pIter);
|
taosHashCancelIterate(pSrc->vgHash, pIter);
|
||||||
taosHashCleanup((*pDst)->vgHash);
|
freeVgInfo(*pDst);
|
||||||
taosMemoryFreeClear(*pDst);
|
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue