[TD-4081]<fix>: fix vnode dropping
This commit is contained in:
parent
e08fe44fdf
commit
8c06d5952a
|
@ -124,8 +124,6 @@ int32_t vnodeDrop(int32_t vgId) {
|
||||||
vInfo("vgId:%d, vnode will be dropped, refCount:%d pVnode:%p", pVnode->vgId, pVnode->refCount, pVnode);
|
vInfo("vgId:%d, vnode will be dropped, refCount:%d pVnode:%p", pVnode->vgId, pVnode->refCount, pVnode);
|
||||||
pVnode->dropped = 1;
|
pVnode->dropped = 1;
|
||||||
|
|
||||||
// remove from hash, so new messages wont be consumed
|
|
||||||
vnodeRemoveFromHash(pVnode);
|
|
||||||
vnodeRelease(pVnode);
|
vnodeRelease(pVnode);
|
||||||
vnodeCleanupInMWorker(pVnode);
|
vnodeCleanupInMWorker(pVnode);
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,8 @@ void vnodeRelease(void *vparam) {
|
||||||
tsem_post(&pVnode->sem);
|
tsem_post(&pVnode->sem);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
vnodeRemoveFromHash(pVnode);
|
||||||
|
|
||||||
vDebug("vgId:%d, vnode will be destroyed, refCount:%d pVnode:%p", pVnode->vgId, refCount, pVnode);
|
vDebug("vgId:%d, vnode will be destroyed, refCount:%d pVnode:%p", pVnode->vgId, refCount, pVnode);
|
||||||
vnodeDestroyInMWorker(pVnode);
|
vnodeDestroyInMWorker(pVnode);
|
||||||
int32_t count = taosHashGetSize(tsVnodesHash);
|
int32_t count = taosHashGetSize(tsVnodesHash);
|
||||||
|
|
|
@ -117,14 +117,18 @@ static SVReadMsg *vnodeBuildVReadMsg(SVnodeObj *pVnode, void *pCont, int32_t con
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t vnodeWriteToRQueue(void *vparam, void *pCont, int32_t contLen, int8_t qtype, void *rparam) {
|
int32_t vnodeWriteToRQueue(void *vparam, void *pCont, int32_t contLen, int8_t qtype, void *rparam) {
|
||||||
|
SVnodeObj *pVnode = vparam;
|
||||||
|
|
||||||
|
if (pVnode->dropped) {
|
||||||
|
return TSDB_CODE_VND_INVALID_VGROUP_ID;
|
||||||
|
}
|
||||||
|
|
||||||
SVReadMsg *pRead = vnodeBuildVReadMsg(vparam, pCont, contLen, qtype, rparam);
|
SVReadMsg *pRead = vnodeBuildVReadMsg(vparam, pCont, contLen, qtype, rparam);
|
||||||
if (pRead == NULL) {
|
if (pRead == NULL) {
|
||||||
assert(terrno != 0);
|
assert(terrno != 0);
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
SVnodeObj *pVnode = vparam;
|
|
||||||
|
|
||||||
int32_t code = vnodeCheckRead(pVnode);
|
int32_t code = vnodeCheckRead(pVnode);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
taosFreeQitem(pRead);
|
taosFreeQitem(pRead);
|
||||||
|
|
|
@ -386,4 +386,6 @@ void vnodeWaitWriteCompleted(SVnodeObj *pVnode) {
|
||||||
vTrace("vgId:%d, queued wmsg num:%d", pVnode->vgId, pVnode->queuedWMsg);
|
vTrace("vgId:%d, queued wmsg num:%d", pVnode->vgId, pVnode->queuedWMsg);
|
||||||
taosMsleep(10);
|
taosMsleep(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
taosMsleep(1000 * 3);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue