fix mem leak
This commit is contained in:
parent
cf129cacb9
commit
9d8e3e0c8f
|
@ -62,6 +62,7 @@ int32_t mndInitIdx(SMnode *pMnode) {
|
||||||
|
|
||||||
mndSetMsgHandle(pMnode, TDMT_MND_CREATE_INDEX, mndProcessCreateIdxReq);
|
mndSetMsgHandle(pMnode, TDMT_MND_CREATE_INDEX, mndProcessCreateIdxReq);
|
||||||
// mndSetMsgHandle(pMnode, TDMT_MND_DROP_INDEX, mndProcessDropIdxReq);
|
// mndSetMsgHandle(pMnode, TDMT_MND_DROP_INDEX, mndProcessDropIdxReq);
|
||||||
|
|
||||||
mndSetMsgHandle(pMnode, TDMT_VND_CREATE_INDEX_RSP, mndTransProcessRsp);
|
mndSetMsgHandle(pMnode, TDMT_VND_CREATE_INDEX_RSP, mndTransProcessRsp);
|
||||||
mndSetMsgHandle(pMnode, TDMT_VND_DROP_INDEX_RSP, mndTransProcessRsp);
|
mndSetMsgHandle(pMnode, TDMT_VND_DROP_INDEX_RSP, mndTransProcessRsp);
|
||||||
|
|
||||||
|
@ -421,7 +422,7 @@ static int32_t mndProcessCreateIdxReq(SRpcMsg *pReq) {
|
||||||
pIdx = idx.pIdx;
|
pIdx = idx.pIdx;
|
||||||
}
|
}
|
||||||
if (pIdx != NULL) {
|
if (pIdx != NULL) {
|
||||||
terrno = TSDB_CODE_MND_SMA_ALREADY_EXIST;
|
terrno = TSDB_CODE_MND_TAG_INDEX_ALREADY_EXIST;
|
||||||
goto _OVER;
|
goto _OVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -800,7 +801,7 @@ static int32_t mndAddIndex(SMnode *pMnode, SRpcMsg *pReq, SCreateTagIndexReq *re
|
||||||
memcpy(idxObj.colName, req->colName, TSDB_COL_NAME_LEN);
|
memcpy(idxObj.colName, req->colName, TSDB_COL_NAME_LEN);
|
||||||
|
|
||||||
idxObj.createdTime = taosGetTimestampMs();
|
idxObj.createdTime = taosGetTimestampMs();
|
||||||
idxObj.uid = mndGenerateUid(req->idxName, TSDB_TABLE_FNAME_LEN);
|
idxObj.uid = mndGenerateUid(req->idxName, strlen(req->idxName));
|
||||||
idxObj.stbUid = pStb->uid;
|
idxObj.stbUid = pStb->uid;
|
||||||
idxObj.dbUid = pStb->dbUid;
|
idxObj.dbUid = pStb->dbUid;
|
||||||
|
|
||||||
|
@ -899,7 +900,7 @@ int32_t mndProcessDropTagIdxReq(SRpcMsg *pReq) {
|
||||||
code = 0;
|
code = 0;
|
||||||
goto _OVER;
|
goto _OVER;
|
||||||
} else {
|
} else {
|
||||||
terrno = TSDB_CODE_MND_SMA_NOT_EXIST;
|
terrno = TSDB_CODE_MND_TAG_INDEX_NOT_EXIST;
|
||||||
goto _OVER;
|
goto _OVER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -478,7 +478,13 @@ int metaAddIndexToSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) {
|
||||||
void *pKey = NULL, *pVal = NULL;
|
void *pKey = NULL, *pVal = NULL;
|
||||||
int nKey = 0, nVal = 0;
|
int nKey = 0, nVal = 0;
|
||||||
rc = tdbTbcNext(pCtbIdxc, &pKey, &nKey, &pVal, &nVal);
|
rc = tdbTbcNext(pCtbIdxc, &pKey, &nKey, &pVal, &nVal);
|
||||||
if (rc < 0) break;
|
if (rc < 0) {
|
||||||
|
tdbFree(pKey);
|
||||||
|
tdbFree(pVal);
|
||||||
|
tdbTbcClose(pCtbIdxc);
|
||||||
|
pCtbIdxc = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (((SCtbIdxKey *)pKey)->suid != suid) {
|
if (((SCtbIdxKey *)pKey)->suid != suid) {
|
||||||
tdbFree(pKey);
|
tdbFree(pKey);
|
||||||
tdbFree(pVal);
|
tdbFree(pVal);
|
||||||
|
@ -500,10 +506,12 @@ int metaAddIndexToSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) {
|
||||||
pTagData = &(tagVal.i64);
|
pTagData = &(tagVal.i64);
|
||||||
nTagData = tDataTypes[pCol->type].bytes;
|
nTagData = tDataTypes[pCol->type].bytes;
|
||||||
}
|
}
|
||||||
|
rc = metaCreateTagIdxKey(suid, pCol->colId, pTagData, nTagData, pCol->type, table->uid, &pTagIdxKey, &nTagIdxKey);
|
||||||
if (metaCreateTagIdxKey(suid, pCol->colId, pTagData, nTagData, pCol->type, table->uid, &pTagIdxKey, &nTagIdxKey) <
|
tdbFree(pKey);
|
||||||
0) {
|
tdbFree(pVal);
|
||||||
|
if (rc < 0) {
|
||||||
metaDestroyTagIdxKey(pTagIdxKey);
|
metaDestroyTagIdxKey(pTagIdxKey);
|
||||||
|
tdbTbcClose(pCtbIdxc);
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -529,8 +537,15 @@ int metaAddIndexToSTable(SMeta *pMeta, int64_t version, SVCreateStbReq *pReq) {
|
||||||
|
|
||||||
if (oStbEntry.pBuf) taosMemoryFree(oStbEntry.pBuf);
|
if (oStbEntry.pBuf) taosMemoryFree(oStbEntry.pBuf);
|
||||||
tDecoderClear(&dc);
|
tDecoderClear(&dc);
|
||||||
|
tdbFree(pData);
|
||||||
|
|
||||||
|
tdbTbcClose(pCtbIdxc);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
_err:
|
_err:
|
||||||
|
if (oStbEntry.pBuf) taosMemoryFree(oStbEntry.pBuf);
|
||||||
|
tDecoderClear(&dc);
|
||||||
|
tdbFree(pData);
|
||||||
|
|
||||||
return TSDB_CODE_VND_COL_ALREADY_EXISTS;
|
return TSDB_CODE_VND_COL_ALREADY_EXISTS;
|
||||||
}
|
}
|
||||||
int metaDropIndexFromSTable(SMeta *pMeta, int64_t version, SDropIndexReq *pReq) {
|
int metaDropIndexFromSTable(SMeta *pMeta, int64_t version, SDropIndexReq *pReq) {
|
||||||
|
@ -557,7 +572,6 @@ int metaDropIndexFromSTable(SMeta *pMeta, int64_t version, SDropIndexReq *pReq)
|
||||||
tbDbKey.uid = suid;
|
tbDbKey.uid = suid;
|
||||||
tbDbKey.version = ((SUidIdxVal *)pData)[0].version;
|
tbDbKey.version = ((SUidIdxVal *)pData)[0].version;
|
||||||
tdbTbGet(pMeta->pTbDb, &tbDbKey, sizeof(tbDbKey), &pData, &nData);
|
tdbTbGet(pMeta->pTbDb, &tbDbKey, sizeof(tbDbKey), &pData, &nData);
|
||||||
|
|
||||||
tDecoderInit(&dc, pData, nData);
|
tDecoderInit(&dc, pData, nData);
|
||||||
ret = metaDecodeEntry(&dc, &oStbEntry);
|
ret = metaDecodeEntry(&dc, &oStbEntry);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
@ -594,7 +608,13 @@ int metaDropIndexFromSTable(SMeta *pMeta, int64_t version, SDropIndexReq *pReq)
|
||||||
void *pKey = NULL, *pVal = NULL;
|
void *pKey = NULL, *pVal = NULL;
|
||||||
int nKey = 0, nVal = 0;
|
int nKey = 0, nVal = 0;
|
||||||
rc = tdbTbcNext(pCtbIdxc, &pKey, &nKey, &pVal, &nVal);
|
rc = tdbTbcNext(pCtbIdxc, &pKey, &nKey, &pVal, &nVal);
|
||||||
if (rc < 0) break;
|
if (rc < 0) {
|
||||||
|
tdbFree(pKey);
|
||||||
|
tdbFree(pVal);
|
||||||
|
tdbTbcClose(pCtbIdxc);
|
||||||
|
pCtbIdxc = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (((SCtbIdxKey *)pKey)->suid != suid) {
|
if (((SCtbIdxKey *)pKey)->suid != suid) {
|
||||||
tdbFree(pKey);
|
tdbFree(pKey);
|
||||||
tdbFree(pVal);
|
tdbFree(pVal);
|
||||||
|
@ -616,13 +636,18 @@ int metaDropIndexFromSTable(SMeta *pMeta, int64_t version, SDropIndexReq *pReq)
|
||||||
pTagData = &(tagVal.i64);
|
pTagData = &(tagVal.i64);
|
||||||
nTagData = tDataTypes[pCol->type].bytes;
|
nTagData = tDataTypes[pCol->type].bytes;
|
||||||
}
|
}
|
||||||
|
rc = metaCreateTagIdxKey(suid, pCol->colId, pTagData, nTagData, pCol->type, table->uid, &pTagIdxKey, &nTagIdxKey);
|
||||||
if (metaCreateTagIdxKey(suid, pCol->colId, pTagData, nTagData, pCol->type, table->uid, &pTagIdxKey, &nTagIdxKey) <
|
tdbFree(pKey);
|
||||||
0) {
|
tdbFree(pVal);
|
||||||
|
if (rc < 0) {
|
||||||
metaDestroyTagIdxKey(pTagIdxKey);
|
metaDestroyTagIdxKey(pTagIdxKey);
|
||||||
|
tdbTbcClose(pCtbIdxc);
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
metaWLock(pMeta);
|
||||||
tdbTbDelete(pMeta->pTagIdx, pTagIdxKey, nTagIdxKey, pMeta->txn);
|
tdbTbDelete(pMeta->pTagIdx, pTagIdxKey, nTagIdxKey, pMeta->txn);
|
||||||
|
metaULock(pMeta);
|
||||||
metaDestroyTagIdxKey(pTagIdxKey);
|
metaDestroyTagIdxKey(pTagIdxKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -641,9 +666,6 @@ int metaDropIndexFromSTable(SMeta *pMeta, int64_t version, SDropIndexReq *pReq)
|
||||||
nStbEntry.stbEntry.schemaTag = *tag;
|
nStbEntry.stbEntry.schemaTag = *tag;
|
||||||
nStbEntry.stbEntry.rsmaParam = oStbEntry.stbEntry.rsmaParam;
|
nStbEntry.stbEntry.rsmaParam = oStbEntry.stbEntry.rsmaParam;
|
||||||
|
|
||||||
taosMemoryFree(row);
|
|
||||||
taosMemoryFree(tag);
|
|
||||||
|
|
||||||
metaWLock(pMeta);
|
metaWLock(pMeta);
|
||||||
// update table.db
|
// update table.db
|
||||||
metaSaveToTbDb(pMeta, &nStbEntry);
|
metaSaveToTbDb(pMeta, &nStbEntry);
|
||||||
|
@ -651,12 +673,20 @@ int metaDropIndexFromSTable(SMeta *pMeta, int64_t version, SDropIndexReq *pReq)
|
||||||
metaUpdateUidIdx(pMeta, &nStbEntry);
|
metaUpdateUidIdx(pMeta, &nStbEntry);
|
||||||
metaULock(pMeta);
|
metaULock(pMeta);
|
||||||
|
|
||||||
|
tDeleteSSchemaWrapper(tag);
|
||||||
|
tDeleteSSchemaWrapper(row);
|
||||||
|
|
||||||
if (oStbEntry.pBuf) taosMemoryFree(oStbEntry.pBuf);
|
if (oStbEntry.pBuf) taosMemoryFree(oStbEntry.pBuf);
|
||||||
tDecoderClear(&dc);
|
tDecoderClear(&dc);
|
||||||
return TSDB_CODE_SUCCESS;
|
tdbFree(pData);
|
||||||
// impl later
|
|
||||||
|
tdbTbcClose(pCtbIdxc);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
_err:
|
_err:
|
||||||
|
if (oStbEntry.pBuf) taosMemoryFree(oStbEntry.pBuf);
|
||||||
|
tDecoderClear(&dc);
|
||||||
|
tdbFree(pData);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1746,10 +1776,12 @@ static int metaDropTagIndex(SMeta *pMeta, int64_t version, SVAlterTbReq *pAlterT
|
||||||
}
|
}
|
||||||
tdbTbcClose(pTagIdxc);
|
tdbTbcClose(pTagIdxc);
|
||||||
|
|
||||||
|
metaWLock(pMeta);
|
||||||
for (int i = 0; i < taosArrayGetSize(tagIdxList); i++) {
|
for (int i = 0; i < taosArrayGetSize(tagIdxList); i++) {
|
||||||
SMetaPair *pair = taosArrayGet(tagIdxList, i);
|
SMetaPair *pair = taosArrayGet(tagIdxList, i);
|
||||||
tdbTbDelete(pMeta->pTagIdx, pair->key, pair->nkey, pMeta->txn);
|
tdbTbDelete(pMeta->pTagIdx, pair->key, pair->nkey, pMeta->txn);
|
||||||
}
|
}
|
||||||
|
metaULock(pMeta);
|
||||||
|
|
||||||
taosArrayDestroy(tagIdxList);
|
taosArrayDestroy(tagIdxList);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue