fix: resolve memory leak in vnodeOpen when vnodeSyncOpen failure
This commit is contained in:
parent
b71a9e3483
commit
4b4f7a44f4
|
@ -85,6 +85,8 @@ _err:
|
||||||
int tsdbClose(STsdb **pTsdb) {
|
int tsdbClose(STsdb **pTsdb) {
|
||||||
if (*pTsdb) {
|
if (*pTsdb) {
|
||||||
taosThreadRwlockDestroy(&(*pTsdb)->rwLock);
|
taosThreadRwlockDestroy(&(*pTsdb)->rwLock);
|
||||||
|
tsdbMemTableDestroy((*pTsdb)->mem);
|
||||||
|
(*pTsdb)->mem = NULL;
|
||||||
tsdbFSClose(*pTsdb);
|
tsdbFSClose(*pTsdb);
|
||||||
tsdbCloseCache(*pTsdb);
|
tsdbCloseCache(*pTsdb);
|
||||||
taosMemoryFreeClear(*pTsdb);
|
taosMemoryFreeClear(*pTsdb);
|
||||||
|
|
|
@ -53,6 +53,10 @@ int vnodeCloseBufPool(SVnode *pVnode) {
|
||||||
vnodeBufPoolDestroy(pPool);
|
vnodeBufPoolDestroy(pPool);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pVnode->inUse) {
|
||||||
|
vnodeBufPoolDestroy(pVnode->inUse);
|
||||||
|
pVnode->inUse = NULL;
|
||||||
|
}
|
||||||
vDebug("vgId:%d, vnode buffer pool is closed", TD_VID(pVnode));
|
vDebug("vgId:%d, vnode buffer pool is closed", TD_VID(pVnode));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -177,4 +181,4 @@ void vnodeBufPoolUnRef(SVBufPool *pPool) {
|
||||||
|
|
||||||
taosThreadMutexUnlock(&pVnode->mutex);
|
taosThreadMutexUnlock(&pVnode->mutex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,6 +173,7 @@ _err:
|
||||||
if (pVnode->pTsdb) tsdbClose(&pVnode->pTsdb);
|
if (pVnode->pTsdb) tsdbClose(&pVnode->pTsdb);
|
||||||
if (pVnode->pSma) smaClose(pVnode->pSma);
|
if (pVnode->pSma) smaClose(pVnode->pSma);
|
||||||
if (pVnode->pMeta) metaClose(pVnode->pMeta);
|
if (pVnode->pMeta) metaClose(pVnode->pMeta);
|
||||||
|
if (pVnode->pPool) vnodeCloseBufPool(pVnode);
|
||||||
|
|
||||||
tsem_destroy(&(pVnode->canCommit));
|
tsem_destroy(&(pVnode->canCommit));
|
||||||
taosMemoryFree(pVnode);
|
taosMemoryFree(pVnode);
|
||||||
|
|
Loading…
Reference in New Issue