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) {
|
||||
if (*pTsdb) {
|
||||
taosThreadRwlockDestroy(&(*pTsdb)->rwLock);
|
||||
tsdbMemTableDestroy((*pTsdb)->mem);
|
||||
(*pTsdb)->mem = NULL;
|
||||
tsdbFSClose(*pTsdb);
|
||||
tsdbCloseCache(*pTsdb);
|
||||
taosMemoryFreeClear(*pTsdb);
|
||||
|
|
|
@ -53,6 +53,10 @@ int vnodeCloseBufPool(SVnode *pVnode) {
|
|||
vnodeBufPoolDestroy(pPool);
|
||||
}
|
||||
|
||||
if (pVnode->inUse) {
|
||||
vnodeBufPoolDestroy(pVnode->inUse);
|
||||
pVnode->inUse = NULL;
|
||||
}
|
||||
vDebug("vgId:%d, vnode buffer pool is closed", TD_VID(pVnode));
|
||||
|
||||
return 0;
|
||||
|
@ -177,4 +181,4 @@ void vnodeBufPoolUnRef(SVBufPool *pPool) {
|
|||
|
||||
taosThreadMutexUnlock(&pVnode->mutex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -173,6 +173,7 @@ _err:
|
|||
if (pVnode->pTsdb) tsdbClose(&pVnode->pTsdb);
|
||||
if (pVnode->pSma) smaClose(pVnode->pSma);
|
||||
if (pVnode->pMeta) metaClose(pVnode->pMeta);
|
||||
if (pVnode->pPool) vnodeCloseBufPool(pVnode);
|
||||
|
||||
tsem_destroy(&(pVnode->canCommit));
|
||||
taosMemoryFree(pVnode);
|
||||
|
|
Loading…
Reference in New Issue