more code
This commit is contained in:
parent
2e443c395e
commit
f8c9ae50b8
|
@ -109,7 +109,7 @@ void vnodeBufPoolUnRef(SVBufPool* pPool);
|
||||||
int vnodeDecodeInfo(uint8_t* pData, SVnodeInfo* pInfo);
|
int vnodeDecodeInfo(uint8_t* pData, SVnodeInfo* pInfo);
|
||||||
|
|
||||||
int32_t vnodeBufPoolRegisterQuery(SVBufPool* pPool, void* pQHandle, _query_reseek_func_t reseekFn);
|
int32_t vnodeBufPoolRegisterQuery(SVBufPool* pPool, void* pQHandle, _query_reseek_func_t reseekFn);
|
||||||
int32_t vnodeBufPoolDeregisterQuery(SVBufPool* pPool);
|
int32_t vnodeBufPoolDeregisterQuery(SVBufPool* pPool, SQueryNode* pQNode);
|
||||||
|
|
||||||
// meta
|
// meta
|
||||||
typedef struct SMCtbCursor SMCtbCursor;
|
typedef struct SMCtbCursor SMCtbCursor;
|
||||||
|
|
|
@ -765,18 +765,9 @@ int32_t tsdbUnrefMemTable(SMemTable *pMemTable, SQueryNode *pNode) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
|
||||||
if (pNode) {
|
if (pNode) {
|
||||||
vnodeBufPoolDeregisterQuery(pMemTable->pPool);
|
vnodeBufPoolDeregisterQuery(pMemTable->pPool, pNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
// unregister handle (todo: take concurrency in consideration)
|
|
||||||
if (pNode) {
|
|
||||||
pNode->pNext->ppNext = pNode->ppNext;
|
|
||||||
*pNode->ppNext = pNode->pNext;
|
|
||||||
taosMemoryFree(pNode);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int32_t nRef = atomic_sub_fetch_32(&pMemTable->nRef, 1);
|
int32_t nRef = atomic_sub_fetch_32(&pMemTable->nRef, 1);
|
||||||
if (nRef == 0) {
|
if (nRef == 0) {
|
||||||
tsdbMemTableDestroy(pMemTable);
|
tsdbMemTableDestroy(pMemTable);
|
||||||
|
|
|
@ -290,12 +290,14 @@ _exit:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t vnodeBufPoolDeregisterQuery(SVBufPool *pPool) {
|
int32_t vnodeBufPoolDeregisterQuery(SVBufPool *pPool, SQueryNode *pQNode) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
|
|
||||||
taosThreadMutexLock(&pPool->mutex);
|
taosThreadMutexLock(&pPool->mutex);
|
||||||
|
|
||||||
ASSERT(0);
|
pQNode->pNext->ppNext = pQNode->ppNext;
|
||||||
|
*pQNode->ppNext = pQNode->pNext;
|
||||||
|
pPool->nQuery--;
|
||||||
|
|
||||||
taosThreadMutexUnlock(&pPool->mutex);
|
taosThreadMutexUnlock(&pPool->mutex);
|
||||||
|
|
||||||
|
|
|
@ -45,10 +45,19 @@ static int32_t vnodeTryRecycleBufPool(SVnode *pVnode) {
|
||||||
}
|
}
|
||||||
pVnode->onRecycle->recycleNext = pVnode->onRecycle->recyclePrev = NULL;
|
pVnode->onRecycle->recycleNext = pVnode->onRecycle->recyclePrev = NULL;
|
||||||
|
|
||||||
{
|
// do recycle the buffer pool
|
||||||
// TODO: do recycle the buffer pool
|
SVBufPool *pPool = pVnode->onRecycle;
|
||||||
ASSERT(0);
|
|
||||||
|
taosThreadMutexLock(&pPool->mutex);
|
||||||
|
|
||||||
|
SQueryNode *pNode = pPool->qList.pNext;
|
||||||
|
while (pNode != &pPool->qList) {
|
||||||
|
// TODO: refact/finish here
|
||||||
|
pNode->reseek(pNode->pQHandle);
|
||||||
|
pNode = pNode->pNext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
taosThreadMutexUnlock(&pPool->mutex);
|
||||||
} else {
|
} else {
|
||||||
vDebug("vgId:%d no recyclable buffer pool", TD_VID(pVnode));
|
vDebug("vgId:%d no recyclable buffer pool", TD_VID(pVnode));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue