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