<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>PartitionRegionHelper (Apache Geode 1.15.1)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="PartitionRegionHelper (Apache Geode 1.15.1)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/geode/cache/partition/PartitionRebalanceInfo.html" title="interface in org.apache.geode.cache.partition"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionInfo.html" title="interface in org.apache.geode.cache.partition"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/geode/cache/partition/PartitionRegionHelper.html" target="_top">Frames</a></li>
<li><a href="PartitionRegionHelper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.geode.cache.partition</div>
<h2 title="Class PartitionRegionHelper" class="title">Class PartitionRegionHelper</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.geode.cache.partition.PartitionRegionHelper</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public final class <span class="typeNameLabel">PartitionRegionHelper</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block">Utility methods for handling partitioned Regions, for example during execution of <a href="../../../../../org/apache/geode/cache/execute/Function.html" title="interface in org.apache.geode.cache.execute"><code>Functions</code></a> on a Partitioned Region.
 <p>
 Example of a Function using utility methods:

 <pre>
  public Serializable execute(FunctionContext context) {
     if (context instanceof RegionFunctionContext) {
         RegionFunctionContext rc = (RegionFunctionContext) context;
         if (PartitionRegionHelper.isPartitionedRegion(rc.getDataSet())) {
             Region efficientReader =
              PartitionRegionHelper.getLocalDataForContext(rc);
             efficientReader.get("someKey");
             // ...
         }
      }
  // ...
 </pre></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../org/apache/geode/cache/execute/FunctionService.html#onRegion-org.apache.geode.cache.Region-"><code>FunctionService.onRegion(Region)</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#assignBucketsToPartitions-org.apache.geode.cache.Region-">assignBucketsToPartitions</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;region)</code>
<div class="block">Decide which partitions will host which buckets.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static &lt;K,V&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getAllMembersForKey-org.apache.geode.cache.Region-K-">getAllMembersForKey</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r,
                   K&nbsp;key)</code>
<div class="block">Get all potential owners for a key.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getColocatedRegions-org.apache.geode.cache.Region-">getColocatedRegions</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;r)</code>
<div class="block">Given a partitioned Region, return a map of
 <a href="../../../../../org/apache/geode/cache/PartitionAttributesFactory.html#setColocatedWith-java.lang.String-">colocated Regions</a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getLocalColocatedRegions-org.apache.geode.cache.execute.RegionFunctionContext-">getLocalColocatedRegions</a></span>(<a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html" title="interface in org.apache.geode.cache.execute">RegionFunctionContext</a>&nbsp;c)</code>
<div class="block">Given a RegionFunctionContext <a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html#getDataSet--">for a partitioned
 Region</a>, return a map of <a href="../../../../../org/apache/geode/cache/PartitionAttributesFactory.html#setColocatedWith-java.lang.String-">colocated Regions</a> with read access limited to the context of the function.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static &lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getLocalData-org.apache.geode.cache.Region-">getLocalData</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r)</code>
<div class="block">Given a partitioned Region return a Region providing read access limited to the local heap,
 writes using this Region have no constraints and behave the same as a partitioned Region.<br></div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static &lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getLocalDataForContext-org.apache.geode.cache.execute.RegionFunctionContext-">getLocalDataForContext</a></span>(<a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html" title="interface in org.apache.geode.cache.execute">RegionFunctionContext</a>&nbsp;c)</code>
<div class="block">Given a RegionFunctionContext <a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html#getDataSet--">for a partitioned
 Region</a>, return a Region providing read access limited to the function context.<br>
 Returned Region provides only one copy of the data although
 <a href="../../../../../org/apache/geode/cache/PartitionAttributes.html#getRedundantCopies--"><code>redundantCopies</code></a> configured is more than 0.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static &lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getLocalPrimaryData-org.apache.geode.cache.Region-">getLocalPrimaryData</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r)</code>
<div class="block">Given a partitioned Region return a Region providing read access to primary copy of the data
 which is limited to the local heap, writes using this Region have no constraints and behave the
 same as a partitioned Region.<br></div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/geode/cache/partition/PartitionRegionInfo.html" title="interface in org.apache.geode.cache.partition">PartitionRegionInfo</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getPartitionRegionInfo-org.apache.geode.cache.Cache-">getPartitionRegionInfo</a></span>(<a href="../../../../../org/apache/geode/cache/Cache.html" title="interface in org.apache.geode.cache">Cache</a>&nbsp;cache)</code>
<div class="block">Gathers a set of details about all partitioned regions in the local Cache.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/geode/cache/partition/PartitionRegionInfo.html" title="interface in org.apache.geode.cache.partition">PartitionRegionInfo</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getPartitionRegionInfo-org.apache.geode.cache.Region-">getPartitionRegionInfo</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;region)</code>
<div class="block">Gathers details about the specified partitioned region.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static &lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getPrimaryMemberForKey-org.apache.geode.cache.Region-K-">getPrimaryMemberForKey</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r,
                      K&nbsp;key)</code>
<div class="block">Get the current primary owner for a key.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static &lt;K,V&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#getRedundantMembersForKey-org.apache.geode.cache.Region-K-">getRedundantMembersForKey</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r,
                         K&nbsp;key)</code>
<div class="block">Get all potential redundant owners for a key.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#isPartitionedRegion-org.apache.geode.cache.Region-">isPartitionedRegion</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;r)</code>
<div class="block">Test a Region to see if it is a partitioned Region</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static &lt;K&gt;&nbsp;void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#moveBucketByKey-org.apache.geode.cache.Region-org.apache.geode.distributed.DistributedMember-org.apache.geode.distributed.DistributedMember-K-">moveBucketByKey</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,?&gt;&nbsp;region,
               <a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;source,
               <a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;destination,
               K&nbsp;key)</code>
<div class="block">Moves the bucket which contains the given key from the source member to the destination member.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/geode/cache/control/RebalanceResults.html" title="interface in org.apache.geode.cache.control">RebalanceResults</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionHelper.html#moveData-org.apache.geode.cache.Region-org.apache.geode.distributed.DistributedMember-org.apache.geode.distributed.DistributedMember-float-">moveData</a></span>(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;region,
        <a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;source,
        <a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;destination,
        float&nbsp;percentage)</code>
<div class="block">Moves data from the source member to the destination member, up to the given percentage of data
 (measured in bytes).</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getColocatedRegions-org.apache.geode.cache.Region-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getColocatedRegions</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&gt;&nbsp;getColocatedRegions(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;r)</pre>
<div class="block">Given a partitioned Region, return a map of
 <a href="../../../../../org/apache/geode/cache/PartitionAttributesFactory.html#setColocatedWith-java.lang.String-">colocated Regions</a>. Given a
 local data reference to a partitioned region, return a map of local
 <a href="../../../../../org/apache/geode/cache/PartitionAttributesFactory.html#setColocatedWith-java.lang.String-">colocated Regions</a>. If there
 are no colocated regions, return an empty map.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>r</code> - a partitioned Region</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an unmodifiable map of <a href="../../../../../org/apache/geode/cache/Region.html#getFullPath--">region name</a> to <a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache"><code>Region</code></a></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the Region is not a <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="isPartitionedRegion-org.apache.geode.cache.Region-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isPartitionedRegion</h4>
<pre>public static&nbsp;boolean&nbsp;isPartitionedRegion(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;r)</pre>
<div class="block">Test a Region to see if it is a partitioned Region</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>r</code> - the region</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if it is a partitioned Region</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getPartitionRegionInfo-org.apache.geode.cache.Cache-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPartitionRegionInfo</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/geode/cache/partition/PartitionRegionInfo.html" title="interface in org.apache.geode.cache.partition">PartitionRegionInfo</a>&gt;&nbsp;getPartitionRegionInfo(<a href="../../../../../org/apache/geode/cache/Cache.html" title="interface in org.apache.geode.cache">Cache</a>&nbsp;cache)</pre>
<div class="block">Gathers a set of details about all partitioned regions in the local Cache. If there are no
 partitioned regions then an empty set will be returned.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cache</code> - the cache which has the regions</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>set of details about all locally defined partitioned regions</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getPartitionRegionInfo-org.apache.geode.cache.Region-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPartitionRegionInfo</h4>
<pre>public static&nbsp;<a href="../../../../../org/apache/geode/cache/partition/PartitionRegionInfo.html" title="interface in org.apache.geode.cache.partition">PartitionRegionInfo</a>&nbsp;getPartitionRegionInfo(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;region)</pre>
<div class="block">Gathers details about the specified partitioned region. Returns null if the partitioned region
 is not locally defined.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>region</code> - the region to get info about</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>details about the specified partitioned region</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="assignBucketsToPartitions-org.apache.geode.cache.Region-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>assignBucketsToPartitions</h4>
<pre>public static&nbsp;void&nbsp;assignBucketsToPartitions(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;region)</pre>
<div class="block">Decide which partitions will host which buckets. Gemfire normally assigns buckets to partitions
 as needed when data is added to a partitioned region. This method provides way to assign all of
 the buckets without putting any data in partition region. This method should not be called
 until all of the partitions are running because it will divide the buckets between the running
 partitions. If the buckets are already assigned this method will have no effect.

 This method will block until all buckets are assigned.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>region</code> - The region which should have it's buckets assigned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the provided region is something other than a
         <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getPrimaryMemberForKey-org.apache.geode.cache.Region-java.lang.Object-">
<!--   -->
</a><a name="getPrimaryMemberForKey-org.apache.geode.cache.Region-K-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPrimaryMemberForKey</h4>
<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;getPrimaryMemberForKey(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r,
                                                             K&nbsp;key)</pre>
<div class="block">Get the current primary owner for a key. Upon return there is no guarantee that primary owner
 remains the primary owner, or that the member is still alive.
 <p>
 This method is not a substitute for <a href="../../../../../org/apache/geode/cache/Region.html#containsKey-java.lang.Object-"><code>Region.containsKey(Object)</code></a>.
 <p></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - The key type of the region</dd>
<dd><code>V</code> - The value type of the region</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>r</code> - a PartitionedRegion</dd>
<dd><code>key</code> - the key to evaluate</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the primary member for the key, possibly null if a primary is not yet determined</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the provided region is something other than a
         <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getRedundantMembersForKey-org.apache.geode.cache.Region-java.lang.Object-">
<!--   -->
</a><a name="getRedundantMembersForKey-org.apache.geode.cache.Region-K-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRedundantMembersForKey</h4>
<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&gt;&nbsp;getRedundantMembersForKey(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r,
                                                                     K&nbsp;key)</pre>
<div class="block">Get all potential redundant owners for a key. If the key exists in the Region, upon return
 there is no guarantee that key has not been moved or that the members are still alive.

 <p>
 This method is not a substitute for <a href="../../../../../org/apache/geode/cache/Region.html#containsKey-java.lang.Object-"><code>Region.containsKey(Object)</code></a>.
 <p>
 This method is equivalent to: <code>
  DistributedMember primary = getPrimaryMemberForKey(r, key);
  Set&lt;? extends DistributedMember&gt; allMembers = getAllMembersForKey(r, key);
  allMembers.remove(primary);
 </code>
 <p></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - The key type of the region</dd>
<dd><code>V</code> - The value type of the region</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>r</code> - a PartitionedRegion</dd>
<dd><code>key</code> - the key to evaluate</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an unmodifiable set of members minus the primary</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the provided region is something other than a
         <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getAllMembersForKey-org.apache.geode.cache.Region-java.lang.Object-">
<!--   -->
</a><a name="getAllMembersForKey-org.apache.geode.cache.Region-K-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllMembersForKey</h4>
<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&gt;&nbsp;getAllMembersForKey(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r,
                                                               K&nbsp;key)</pre>
<div class="block">Get all potential owners for a key. If the key exists in the Region, upon return there is no
 guarantee that it has not moved nor does it guarantee all members are still alive.
 <p>
 This method is not a substitute for <a href="../../../../../org/apache/geode/cache/Region.html#containsKey-java.lang.Object-"><code>Region.containsKey(Object)</code></a>.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - The key type of the region</dd>
<dd><code>V</code> - The value type of the region</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>r</code> - PartitionedRegion</dd>
<dd><code>key</code> - the key to evaluate</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an unmodifiable set of all members</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the provided region is something other than a
         <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getLocalColocatedRegions-org.apache.geode.cache.execute.RegionFunctionContext-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalColocatedRegions</h4>
<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&gt;&nbsp;getLocalColocatedRegions(<a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html" title="interface in org.apache.geode.cache.execute">RegionFunctionContext</a>&nbsp;c)</pre>
<div class="block">Given a RegionFunctionContext <a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html#getDataSet--">for a partitioned
 Region</a>, return a map of <a href="../../../../../org/apache/geode/cache/PartitionAttributesFactory.html#setColocatedWith-java.lang.String-">colocated Regions</a> with read access limited to the context of the function.
 <p>
 Writes using these Region have no constraints and behave the same as a partitioned Region.
 <p>
 If there are no colocated regions, return an empty map.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>c</code> - the region function context</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an unmodifiable map of <a href="../../../../../org/apache/geode/cache/Region.html#getFullPath--">region name</a> to <a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache"><code>Region</code></a></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the Region is not a <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getLocalDataForContext-org.apache.geode.cache.execute.RegionFunctionContext-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalDataForContext</h4>
<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;getLocalDataForContext(<a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html" title="interface in org.apache.geode.cache.execute">RegionFunctionContext</a>&nbsp;c)</pre>
<div class="block">Given a RegionFunctionContext <a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html#getDataSet--">for a partitioned
 Region</a>, return a Region providing read access limited to the function context.<br>
 Returned Region provides only one copy of the data although
 <a href="../../../../../org/apache/geode/cache/PartitionAttributes.html#getRedundantCopies--"><code>redundantCopies</code></a> configured is more than 0. If
 the invoking Function is configured to have <a href="../../../../../org/apache/geode/cache/execute/Function.html#optimizeForWrite--"><code>optimizeForWrite</code></a> as true,the returned Region will only contain primary copy of the data.
 <p>
 Writes using this Region have no constraints and behave the same as a partitioned Region.</div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - The key type of the region</dd>
<dd><code>V</code> - The value type of the region</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>c</code> - a functions context</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Region for efficient reads</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if <a href="../../../../../org/apache/geode/cache/execute/RegionFunctionContext.html#getDataSet--"><code>RegionFunctionContext.getDataSet()</code></a> returns something
         other than a <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getLocalData-org.apache.geode.cache.Region-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalData</h4>
<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;getLocalData(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r)</pre>
<div class="block">Given a partitioned Region return a Region providing read access limited to the local heap,
 writes using this Region have no constraints and behave the same as a partitioned Region.<br></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - The key type of the region</dd>
<dd><code>V</code> - The value type of the region</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>r</code> - a partitioned region</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Region for efficient reads</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the provided region is something other than a
         <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.0</dd>
</dl>
</li>
</ul>
<a name="getLocalPrimaryData-org.apache.geode.cache.Region-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLocalPrimaryData</h4>
<pre>public static&nbsp;&lt;K,V&gt;&nbsp;<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;getLocalPrimaryData(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,V&gt;&nbsp;r)</pre>
<div class="block">Given a partitioned Region return a Region providing read access to primary copy of the data
 which is limited to the local heap, writes using this Region have no constraints and behave the
 same as a partitioned Region.<br></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - The key type of the region</dd>
<dd><code>V</code> - The value type of the region</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>r</code> - a partitioned region</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a Region for efficient reads</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the provided region is something other than a
         <a href="../../../../../org/apache/geode/cache/DataPolicy.html#PARTITION">partitioned Region</a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 6.5</dd>
</dl>
</li>
</ul>
<a name="moveBucketByKey-org.apache.geode.cache.Region-org.apache.geode.distributed.DistributedMember-org.apache.geode.distributed.DistributedMember-java.lang.Object-">
<!--   -->
</a><a name="moveBucketByKey-org.apache.geode.cache.Region-org.apache.geode.distributed.DistributedMember-org.apache.geode.distributed.DistributedMember-K-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>moveBucketByKey</h4>
<pre>public static&nbsp;&lt;K&gt;&nbsp;void&nbsp;moveBucketByKey(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;K,?&gt;&nbsp;region,
                                       <a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;source,
                                       <a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;destination,
                                       K&nbsp;key)</pre>
<div class="block">Moves the bucket which contains the given key from the source member to the destination member.
 The bucket will be fully transferred once this method is complete, if the method does not throw
 an exception.
 <p>
 All keys which exist in the same bucket will also be moved to the new node.
 <p>
 Any data in colocated regions that are colocated with this key will also be moved.
 <p>
 This method allows direct control of what data to move. To automatically balance buckets, see
 <a href="../../../../../org/apache/geode/cache/control/ResourceManager.html#createRebalanceFactory--"><code>ResourceManager.createRebalanceFactory()</code></a></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>K</code> - The key type of the region</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>region</code> - The region in which to move the bucket. Data in regions colocated with this
        region will also be moved.</dd>
<dd><code>source</code> - A member that is currently hosting this bucket. The bucket is moved off of this
        member.</dd>
<dd><code>destination</code> - A member that is not currently hosting this bucket, but has the partitioned
        region defined. The bucket is moved to this member.</dd>
<dd><code>key</code> - A key which maps to the bucket to move. This key does not actually need to exist in
        the region, but if using a <a href="../../../../../org/apache/geode/cache/PartitionResolver.html" title="interface in org.apache.geode.cache"><code>PartitionResolver</code></a> the resolver should be able to get
        the routing object from this key to determine the bucket to move.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the bucket is not present on the source, if the source or
         destination are not valid members of the system, if the destination already hosts a
         copy of the bucket, or if the bucket does not exist.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 7.1</dd>
</dl>
</li>
</ul>
<a name="moveData-org.apache.geode.cache.Region-org.apache.geode.distributed.DistributedMember-org.apache.geode.distributed.DistributedMember-float-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>moveData</h4>
<pre>public static&nbsp;<a href="../../../../../org/apache/geode/cache/control/RebalanceResults.html" title="interface in org.apache.geode.cache.control">RebalanceResults</a>&nbsp;moveData(<a href="../../../../../org/apache/geode/cache/Region.html" title="interface in org.apache.geode.cache">Region</a>&lt;?,?&gt;&nbsp;region,
                                        <a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;source,
                                        <a href="../../../../../org/apache/geode/distributed/DistributedMember.html" title="interface in org.apache.geode.distributed">DistributedMember</a>&nbsp;destination,
                                        float&nbsp;percentage)</pre>
<div class="block">Moves data from the source member to the destination member, up to the given percentage of data
 (measured in bytes). The data will be fully transferred once this method is complete, if the
 method does not throw an exception. The percentage is a percentage of the amount of data in
 bytes on the source member for this region.
 <p>

 If this region has colocated regions, the colocated data will also be moved. The total amount
 of data in all colocated regions will be taken into consideration when determining what
 percentage of data will be moved.
 <p>
 It may not be possible to move data to the destination member, if the destination member has no
 available space, no bucket smaller than the given percentage exists, or if moving data would
 violate redundancy constraints. If data cannot be moved, this method will return a
 RebalanceResult object with 0 total bucket transfers.
 <p>
 This method allows direct control of what data to move. To automatically balance buckets, see
 <a href="../../../../../org/apache/geode/cache/control/ResourceManager.html#createRebalanceFactory--"><code>ResourceManager.createRebalanceFactory()</code></a></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>region</code> - The region in which to move data. Data in regions colocated with this region will
        also be moved.</dd>
<dd><code>source</code> - A member that is currently hosting data. The bucket is moved off of this member.</dd>
<dd><code>destination</code> - A member that that has the partitioned region defined. Data is moved to this
        member.</dd>
<dd><code>percentage</code> - the maximum amount of data to move, as a percentage from 0 to 100.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A RebalanceResult object that contains information about what what data was actually
         moved.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang">IllegalStateException</a></code> - if the source or destination are not valid members of the system.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the percentage is not between 0 to 100.</dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>GemFire 7.1</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/geode/cache/partition/PartitionRebalanceInfo.html" title="interface in org.apache.geode.cache.partition"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/geode/cache/partition/PartitionRegionInfo.html" title="interface in org.apache.geode.cache.partition"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/geode/cache/partition/PartitionRegionHelper.html" target="_top">Frames</a></li>
<li><a href="PartitionRegionHelper.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
