only drop one vnode each time
This commit is contained in:
parent
88171545f8
commit
fe834cc75d
|
@ -214,8 +214,8 @@ static bool balanceCheckVgroupReady(SVgObj *pVgroup, SVnodeGid *pRmVnode) {
|
||||||
* desc: remove one vnode from vgroup
|
* desc: remove one vnode from vgroup
|
||||||
* all vnodes in vgroup should in ready state, except the balancing one
|
* all vnodes in vgroup should in ready state, except the balancing one
|
||||||
**/
|
**/
|
||||||
static void balanceRemoveVnode(SVgObj *pVgroup) {
|
static int32_t balanceRemoveVnode(SVgObj *pVgroup) {
|
||||||
if (pVgroup->numOfVnodes <= 1) return;
|
if (pVgroup->numOfVnodes <= 1) return -1;
|
||||||
|
|
||||||
SVnodeGid *pRmVnode = NULL;
|
SVnodeGid *pRmVnode = NULL;
|
||||||
SVnodeGid *pSelVnode = NULL;
|
SVnodeGid *pSelVnode = NULL;
|
||||||
|
@ -258,9 +258,11 @@ static void balanceRemoveVnode(SVgObj *pVgroup) {
|
||||||
|
|
||||||
if (!balanceCheckVgroupReady(pVgroup, pSelVnode)) {
|
if (!balanceCheckVgroupReady(pVgroup, pSelVnode)) {
|
||||||
mDebug("vgId:%d, is not ready", pVgroup->vgId);
|
mDebug("vgId:%d, is not ready", pVgroup->vgId);
|
||||||
|
return -1;
|
||||||
} else {
|
} else {
|
||||||
mDebug("vgId:%d, is ready, discard dnode:%d", pVgroup->vgId, pSelVnode->dnodeId);
|
mDebug("vgId:%d, is ready, discard dnode:%d", pVgroup->vgId, pSelVnode->dnodeId);
|
||||||
balanceDiscardVnode(pVgroup, pSelVnode);
|
balanceDiscardVnode(pVgroup, pSelVnode);
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,22 +409,22 @@ static int32_t balanceMonitorVgroups() {
|
||||||
|
|
||||||
int32_t dbReplica = pVgroup->pDb->cfg.replications;
|
int32_t dbReplica = pVgroup->pDb->cfg.replications;
|
||||||
int32_t vgReplica = pVgroup->numOfVnodes;
|
int32_t vgReplica = pVgroup->numOfVnodes;
|
||||||
|
int32_t code;
|
||||||
|
|
||||||
if (vgReplica > dbReplica) {
|
if (vgReplica > dbReplica) {
|
||||||
mInfo("vgId:%d, replica:%d numOfVnodes:%d, try remove one vnode", pVgroup->vgId, dbReplica, vgReplica);
|
mInfo("vgId:%d, replica:%d numOfVnodes:%d, try remove one vnode", pVgroup->vgId, dbReplica, vgReplica);
|
||||||
hasUpdatingVgroup = true;
|
hasUpdatingVgroup = true;
|
||||||
balanceRemoveVnode(pVgroup);
|
code = balanceRemoveVnode(pVgroup);
|
||||||
} else if (vgReplica < dbReplica) {
|
} else if (vgReplica < dbReplica) {
|
||||||
mInfo("vgId:%d, replica:%d numOfVnodes:%d, try add one vnode", pVgroup->vgId, dbReplica, vgReplica);
|
mInfo("vgId:%d, replica:%d numOfVnodes:%d, try add one vnode", pVgroup->vgId, dbReplica, vgReplica);
|
||||||
hasUpdatingVgroup = true;
|
hasUpdatingVgroup = true;
|
||||||
int32_t code = balanceAddVnode(pVgroup, NULL, NULL);
|
code = balanceAddVnode(pVgroup, NULL, NULL);
|
||||||
if (code == TSDB_CODE_SUCCESS) {
|
|
||||||
mnodeDecVgroupRef(pVgroup);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mnodeDecVgroupRef(pVgroup);
|
mnodeDecVgroupRef(pVgroup);
|
||||||
|
if (code == TSDB_CODE_SUCCESS) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sdbFreeIter(pIter);
|
sdbFreeIter(pIter);
|
||||||
|
|
Loading…
Reference in New Issue