Set<String> excludeRegionNames = (Set<String>) args[2]; RebalanceFactory rbFactory = manager.createRebalanceFactory(); rbFactory.excludeRegions(excludeRegionNames); rbFactory.includeRegions(includeRegionNames); RebalanceResults results = null; op = rbFactory.simulate(); } else { op = rbFactory.start();
public static RebalanceResults rebalanceRegion(Region region) throws CancellationException, InterruptedException { String regionName = region.getName(); // FilterByName only looks at name and not full path if (!PartitionRegionHelper.isPartitionedRegion(region)) { StringBuilder builder = new StringBuilder(); builder.append("Region ").append(regionName).append(" is not partitioned. Instead, it is ") .append(region.getAttributes().getDataPolicy()).append(". It can't be rebalanced."); throw new IllegalArgumentException(builder.toString()); } // Rebalance the region ResourceManager resourceManager = region.getCache().getResourceManager(); RebalanceFactory rebalanceFactory = resourceManager.createRebalanceFactory(); Set<String> regionsToRebalance = new HashSet<String>(); regionsToRebalance.add(regionName); rebalanceFactory.includeRegions(regionsToRebalance); RebalanceOperation rebalanceOperation = rebalanceFactory.start(); // Return the results return rebalanceOperation.getResults(); }
private GeodeCacheFacade getFacadeForResourceManagerOps(final boolean simulate) throws Exception { final GemFireCacheImpl mockCache = mock(GemFireCacheImpl.class); final InternalResourceManager mockRM = mock(InternalResourceManager.class); final RebalanceFactory mockRebalanceFactory = mock(RebalanceFactory.class); final RebalanceOperation mockRebalanceOperation = mock(RebalanceOperation.class); final RebalanceResults mockRebalanceResults = mock(RebalanceResults.class); when(mockCache.isClosed()).thenReturn(false); when(mockCache.getResourceManager()).thenReturn(mockRM); when(mockRM.createRebalanceFactory()).thenReturn(mockRebalanceFactory); when(mockRebalanceFactory.start()).thenReturn(mockRebalanceOperation); when(mockRebalanceFactory.simulate()).thenReturn(mockRebalanceOperation); when(mockRebalanceOperation.getResults()).thenReturn(mockRebalanceResults); if (simulate) when(mockRebalanceResults.getTotalBucketTransferBytes()).thenReturn(12345L); return new GeodeCacheFacade(mockCache); }
/** * Causes a rebalance operation to occur on the given Cache. * * @param cache the reference to the Cache to rebalance. * @see org.apache.geode.cache.control.ResourceManager#createRebalanceFactory() */ private void rebalance(final Cache cache) { if (isRebalancing()) { cache.getResourceManager().createRebalanceFactory().start(); } }
@Override public long getTotalTransferSize() { try { RebalanceOperation operation = getCache().getResourceManager().createRebalanceFactory().simulate(); RebalanceResults result = operation.getResults(); if (logger.isDebugEnabled()) { logger.debug("Rebalance estimate: RebalanceResultsImpl [TotalBucketCreateBytes=" + result.getTotalBucketCreateBytes() + ", TotalBucketCreatesCompleted=" + result.getTotalBucketCreatesCompleted() + ", TotalBucketTransferBytes=" + result.getTotalBucketTransferBytes() + ", TotalBucketTransfersCompleted=" + result.getTotalBucketTransfersCompleted() + ", TotalPrimaryTransfersCompleted=" + result.getTotalPrimaryTransfersCompleted() + "]"); } return result.getTotalBucketTransferBytes(); } catch (CancellationException e) { logger.info("Error while trying to estimate rebalance cost ", e); } catch (InterruptedException e) { logger.info("Error while trying to estimate rebalance cost ", e); } return 0; }
public static RebalanceResults rebalanceCache(GemFireCache cache) throws CancellationException, InterruptedException { ResourceManager resourceManager = cache.getResourceManager(); RebalanceFactory rebalanceFactory = resourceManager.createRebalanceFactory(); RebalanceOperation rebalanceOperation = rebalanceFactory.start(); return rebalanceOperation.getResults(); }
/** * Do a rebalance and verify balance was improved. If evictionPercentage > 0 (the default) then we * have heapLRU and this can cause simulate and rebalance results to differ if eviction kicks in * between. (See BUG 44899). */ public static void doRebalance() { ResourceManager resMan = cache.getResourceManager(); boolean heapEviction = (resMan.getEvictionHeapPercentage() > 0); RebalanceFactory factory = resMan.createRebalanceFactory(); try { RebalanceResults simulateResults = null; if (!heapEviction) { LogWriterUtils.getLogWriter().info("Calling rebalance simulate"); RebalanceOperation simulateOp = factory.simulate(); simulateResults = simulateOp.getResults(); } LogWriterUtils.getLogWriter().info("Starting rebalancing"); RebalanceOperation rebalanceOp = factory.start(); RebalanceResults rebalanceResults = rebalanceOp.getResults(); } catch (InterruptedException e) { Assert.fail("Interrupted", e); } }
public static RebalanceResults rebalanceRegion(Region region) throws CancellationException, InterruptedException { String regionName = region.getName(); // FilterByName only looks at name and not full path if (!PartitionRegionHelper.isPartitionedRegion(region)) { StringBuilder builder = new StringBuilder(); builder.append("Region ").append(regionName).append(" is not partitioned. Instead, it is ") .append(region.getAttributes().getDataPolicy()).append(". It can't be rebalanced."); throw new IllegalArgumentException(builder.toString()); } // Rebalance the region ResourceManager resourceManager = region.getCache().getResourceManager(); RebalanceFactory rebalanceFactory = resourceManager.createRebalanceFactory(); Set<String> regionsToRebalance = new HashSet<String>(); regionsToRebalance.add(regionName); rebalanceFactory.includeRegions(regionsToRebalance); RebalanceOperation rebalanceOperation = rebalanceFactory.start(); // Return the results return rebalanceOperation.getResults(); }
Collections.addAll(excludeRegionSet, excludeRegions); rbFactory.excludeRegions(excludeRegionSet); Set<String> includeRegionSet = new HashSet<>(); includeRegionSet.add(regionName); rbFactory.includeRegions(includeRegionSet); op = manager.createRebalanceFactory().simulate(); result = ResultBuilder.buildResult(buildResultForRebalance(rebalanceResultData, op.getResults(), index, true, cache)); op = manager.createRebalanceFactory().start();
private void executeWithLastResult(FunctionContext context) { RegionFunctionContext rfContext = (RegionFunctionContext) context; final PartitionedRegion pr = (PartitionedRegion) rfContext.getDataSet(); ResourceManager resMan = pr.getCache().getResourceManager(); RebalanceFactory factory = resMan.createRebalanceFactory(); RebalanceOperation rebalanceOp = factory.start(); try { rebalanceOp.getResults(); } catch (CancellationException | InterruptedException e) { e.printStackTrace(); } context.getResultSender().lastResult(context.getArguments()); }
@Override public void rebalance() { try { RebalanceOperation operation = getCache().getResourceManager().createRebalanceFactory().start(); RebalanceResults result = operation.getResults(); logger .info("Rebalance result: [TotalBucketCreateBytes=" + result.getTotalBucketCreateBytes() + ", TotalBucketCreateTime=" + result.getTotalBucketCreateTime() + ", TotalBucketCreatesCompleted=" + result.getTotalBucketCreatesCompleted() + ", TotalBucketTransferBytes=" + result.getTotalBucketTransferBytes() + ", TotalBucketTransferTime=" + result.getTotalBucketTransferTime() + ", TotalBucketTransfersCompleted=" + +result.getTotalBucketTransfersCompleted() + ", TotalPrimaryTransferTime=" + result.getTotalPrimaryTransferTime() + ", TotalPrimaryTransfersCompleted=" + result.getTotalPrimaryTransfersCompleted() + ", TotalTime=" + result.getTotalTime() + "]"); } catch (CancellationException e) { logger.info("Error rebalancing the cluster", e); } catch (InterruptedException e) { logger.info("Error rebalancing the cluster", e); } }
cache.getResourceManager().createRebalanceFactory().start();
public static RebalanceResults rebalanceCache(GemFireCache cache) throws CancellationException, InterruptedException { ResourceManager resourceManager = cache.getResourceManager(); RebalanceFactory rebalanceFactory = resourceManager.createRebalanceFactory(); RebalanceOperation rebalanceOperation = rebalanceFactory.start(); return rebalanceOperation.getResults(); }