shredLoad = SnLoadMap.get(plan.getSource()); if(!sourceMap.containsKey(plan.getSource())) sourceMap.put(plan.getSource(), 0); sourceMap.put(plan.getSource(), sourceMap.get(plan.getSource()) + 1); if(shredLoad.getSecond() < assignLength && sourceMap.get(plan.getSource()) == 1) { planToRemoveList.add(plan); List<Integer> pos = returnMap.get(regionsToReturn.get(regionsToReturn.size() - 1).getSource()); if (pos != null && pos.size() != 0) { regionsToReturn.get(pos.get(pos.size() - 1)).setDestination(
/** * This assumes the RegionPlan HSI instances are the same ones in the map, so * actually no need to even pass in the map, but I think it's clearer. * * @param list * @param plans * @return */ protected List<ServerAndLoad> reconcile(List<ServerAndLoad> list, List<RegionPlan> plans, Map<ServerName, List<RegionInfo>> servers) { List<ServerAndLoad> result = new ArrayList<>(list.size()); Map<ServerName, ServerAndLoad> map = new HashMap<>(list.size()); for (ServerAndLoad sl : list) { map.put(sl.getServerName(), sl); } if (plans != null) { for (RegionPlan plan : plans) { ServerName source = plan.getSource(); updateLoad(map, source, -1); ServerName destination = plan.getDestination(); updateLoad(map, destination, +1); servers.get(source).remove(plan.getRegionInfo()); servers.get(destination).add(plan.getRegionInfo()); } } result.clear(); result.addAll(map.values()); return result; }
Set<ServerName> targetServers = new HashSet<>(); for(RegionPlan plan : plans) { if(plan.getSource().equals(serverA)) { regionsMoveFromServerA.add(plan.getRegionInfo()); targetServers.add(plan.getDestination());
@Override protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException { super.serializeStateData(serializer); final MoveRegionStateData.Builder state = MoveRegionStateData.newBuilder() // No need to serialize the RegionInfo. The super class has the region. .setSourceServer(ProtobufUtil.toServerName(plan.getSource())); if (plan.getDestination() != null) { state.setDestinationServer(ProtobufUtil.toServerName(plan.getDestination())); } serializer.serialize(state.build()); }
protected ArrayListMultimap<String, ServerAndLoad> reconcile( ArrayListMultimap<String, ServerAndLoad> previousLoad, List<RegionPlan> plans) { ArrayListMultimap<String, ServerAndLoad> result = ArrayListMultimap .create(); result.putAll(previousLoad); if (plans != null) { for (RegionPlan plan : plans) { ServerName source = plan.getSource(); updateLoad(result, source, -1); ServerName destination = plan.getDestination(); updateLoad(result, destination, +1); } } return result; }
Set<ServerName> targetServers = new HashSet<>(); for(RegionPlan plan : plans) { if(plan.getSource().equals(serverA)) { regionsMoveFromServerA.add(plan.getRegionInfo()); targetServers.add(plan.getDestination());
@SuppressWarnings("deprecation") private void balance(Args args, List<RegionPlan> regionPlanList, Phase phase, boolean asynchronous) throws IOException, InterruptedException { int progress = 1; for (RegionPlan regionPlan : regionPlanList) { String tableName = Bytes.toString(regionPlan.getRegionInfo().getTableName()); String encodedRegionName = regionPlan.getRegionInfo().getEncodedName(); String serverNameDest = regionPlan.getDestination().getServerName(); String serverNameSource; if (regionPlan.getSource() == null) { serverNameSource = "N/A"; } else { serverNameSource = regionPlan.getSource().getServerName(); } String planStr = progress++ + "/" + regionPlanList.size() + " - move " + encodedRegionName + " of " + tableName + " from " + serverNameSource + " to " + serverNameDest; if (phase == Phase.BALANCE) { System.out.print(planStr); } else { System.out.println(planStr); } if (phase == Phase.BALANCE) { Common.moveWithPrintingResult(args, admin, tableName, encodedRegionName, serverNameDest, asynchronous); } } if (asynchronous && phase == Phase.BALANCE) Thread.sleep(Constant.SMALL_WAIT_INTERVAL_MS); }
/** * This assumes the RegionPlan HSI instances are the same ones in the map, so * actually no need to even pass in the map, but I think it's clearer. * * @param list * @param plans * @return */ protected List<ServerAndLoad> reconcile(List<ServerAndLoad> list, List<RegionPlan> plans, Map<ServerName, List<RegionInfo>> servers) { List<ServerAndLoad> result = new ArrayList<>(list.size()); Map<ServerName, ServerAndLoad> map = new HashMap<>(list.size()); for (ServerAndLoad sl : list) { map.put(sl.getServerName(), sl); } if (plans != null) { for (RegionPlan plan : plans) { ServerName source = plan.getSource(); updateLoad(map, source, -1); ServerName destination = plan.getDestination(); updateLoad(map, destination, +1); servers.get(source).remove(plan.getRegionInfo()); servers.get(destination).add(plan.getRegionInfo()); } } result.clear(); result.addAll(map.values()); return result; }
private ArrayListMultimap<String, ServerAndLoad> reconcile( ArrayListMultimap<String, ServerAndLoad> previousLoad, List<RegionPlan> plans) { ArrayListMultimap<String, ServerAndLoad> result = ArrayListMultimap .create(); result.putAll(previousLoad); if (plans != null) { for (RegionPlan plan : plans) { ServerName source = plan.getSource(); updateLoad(result, source, -1); ServerName destination = plan.getDestination(); updateLoad(result, destination, +1); } } return result; }