You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ki...@apache.org on 2013/09/03 18:43:56 UTC

svn commit: r1519752 [43/46] - in /incubator/helix/site-content: ./ apidocs/assets/ apidocs/reference/ apidocs/reference/org/apache/helix/ apidocs/reference/org/apache/helix/agent/ apidocs/reference/org/apache/helix/alerts/ apidocs/reference/org/apache...

Modified: incubator/helix/site-content/releasing.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/releasing.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/releasing.html (original)
+++ incubator/helix/site-content/releasing.html Tue Sep  3 16:43:37 2013
@@ -1,6 +1,6 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
@@ -8,7 +8,7 @@
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta name="Date-Creation-yyyymmdd" content="20121215" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - Helix release process</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -87,6 +87,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -169,7 +172,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>

Modified: incubator/helix/site-content/sonar.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/sonar.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/sonar.html (original)
+++ incubator/helix/site-content/sonar.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - Sonar</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>

Modified: incubator/helix/site-content/source-repository.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/source-repository.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/source-repository.html (original)
+++ incubator/helix/site-content/source-repository.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - Source Repository</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>

Modified: incubator/helix/site-content/team-list.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/team-list.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/team-list.html (original)
+++ incubator/helix/site-content/team-list.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - Team list</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>

Modified: incubator/helix/site-content/tutorial_admin.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_admin.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_admin.html (original)
+++ incubator/helix/site-content/tutorial_admin.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>
@@ -193,53 +196,454 @@ software distributed under the License i
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
-under the License. --><h1>Helix Tutorial: Admin Operations</h1><p>Helix provides interfaces for the operator to administer the cluster. For convenience, there is a command line interface as well as a REST interface.</p><div class="section"><div class="section"><h3>Helix Admin operations<a name="Helix_Admin_operations"></a></h3><p>First, make sure you get to the command-line tool, or include it in your shell PATH.</p>
-<div class="source"><pre class="prettyprint">cd helix/helix-core/target/helix-core-pkg/bin
-</pre></div><p>Get help</p>
-<div class="source"><pre class="prettyprint">./helix-admin.sh --help
+under the License. --><h1>Helix Tutorial: Admin Operations</h1><p>Helix provides a set of admin api for cluster management operations. They are supported via:</p>
+<ul>
+  <li><i>Java API</i></li>
+  <li><i>Commandline interface</i></li>
+  <li><i>REST interface via helix-admin-webapp</i></li>
+</ul><div class="section"><div class="section"><h3>Java API<a name="Java_API"></a></h3><p>See interface <a class="externalLink" href="http://helix.incubator.apache.org/apidocs/reference/org/apache/helix/HelixAdmin.html"><i>org.apache.helix.HelixAdmin</i></a></p></div><div class="section"><h3>Command-line interface<a name="Command-line_interface"></a></h3><p>The command-line tool comes with helix-core package:</p><p>Get the command-line tool:</p>
+<div class="source"><pre class="prettyprint">  - git clone https://git-wip-us.apache.org/repos/asf/incubator-helix.git
+  - cd incubator-helix
+  - ./build
+  - cd helix-core/target/helix-core-pkg/bin
+  - chmod +x *.sh
+</pre></div><p>Get help:</p>
+<div class="source"><pre class="prettyprint">  - ./helix-admin.sh --help
 </pre></div><p>All other commands have this form:</p>
-<div class="source"><pre class="prettyprint">./helix-admin.sh --zkSvr &lt;ZookeeperServerAddress (Required)&gt; &lt;command&gt; &lt;parameters&gt;
-</pre></div><p>Now, here are the admin commands:</p><p>Add a new cluster</p>
-<div class="source"><pre class="prettyprint">   --addCluster &lt;clusterName&gt;                              
-</pre></div><p>Add a new Instance to a cluster</p>
-<div class="source"><pre class="prettyprint">   --addNode &lt;clusterName&gt; &lt;InstanceAddress (host:port)&gt;
-</pre></div><p>Add a State model to a cluster <i>WE NEED A SPEC FOR A VALID STATE MODEL</i> </p>
-<div class="source"><pre class="prettyprint">   --addStateModelDef &lt;clusterName&gt; &lt;filename&gt;&gt;    
-</pre></div><p>Add a resource to a cluster</p>
-<div class="source"><pre class="prettyprint">   --addResource &lt;clusterName&gt; &lt;resourceName&gt; &lt;partitionNum&gt; &lt;stateModelRef&gt; &lt;mode (AUTO_REBALANCE|AUTO|CUSTOM)&gt;
-</pre></div><p>Upload an IdealState (Partition to Node Mapping) <i>WE NEED A SPEC FOR A VALID IDEAL STATE</i></p>
-<div class="source"><pre class="prettyprint">   --addIdealState &lt;clusterName&gt; &lt;resourceName&gt; &lt;filename&gt;
-</pre></div><p>Delete a cluster</p>
-<div class="source"><pre class="prettyprint">   --dropCluster &lt;clusterName&gt;                                                                         
-</pre></div><p>Delete a resource (drop an existing resource from a cluster)</p>
-<div class="source"><pre class="prettyprint">   --dropResource &lt;clusterName&gt; &lt;resourceName&gt;
-</pre></div><p>Drop an existing instance from a cluster</p>
-<div class="source"><pre class="prettyprint">   --dropNode &lt;clusterName&gt; &lt;InstanceAddress (host:port)&gt;
-</pre></div><p>Enable/disable the entire cluster. This will pause the controller, which means no transitions will be trigger, but the existing nodes in the cluster continue to function, but without any management by the controller.</p>
-<div class="source"><pre class="prettyprint">   --enableCluster &lt;clusterName&gt; &lt;true/false&gt;
-</pre></div><p>Enable/disable an instance. Useful to take a node out of the cluster for maintenance/upgrade.</p>
-<div class="source"><pre class="prettyprint">   --enableInstance &lt;clusterName&gt; &lt;InstanceName&gt; &lt;true/false&gt;
-</pre></div><p>Enable/disable a partition</p>
-<div class="source"><pre class="prettyprint">   --enablePartition &lt;clusterName&gt; &lt;instanceName&gt; &lt;resourceName&gt; &lt;partitionName&gt; &lt;true/false&gt;
-</pre></div><p>Query info of a cluster</p>
-<div class="source"><pre class="prettyprint">   --listClusterInfo &lt;clusterName&gt;
-</pre></div><p>List existing clusters (remember, Helix can manage multiple clusters)</p>
-<div class="source"><pre class="prettyprint">   --listClusters
-</pre></div><p>Query info of a single Instance in a cluster</p>
-<div class="source"><pre class="prettyprint">   --listInstanceInfo &lt;clusterName&gt; &lt;InstanceName&gt;
-</pre></div><p>List instances in a cluster</p>
-<div class="source"><pre class="prettyprint">   --listInstances &lt;clusterName&gt;
-</pre></div><p>Query info of a partition</p>
-<div class="source"><pre class="prettyprint">   --listPartitionInfo &lt;clusterName&gt; &lt;resourceName&gt; &lt;partitionName&gt;
-</pre></div><p>Query info of a resource</p>
-<div class="source"><pre class="prettyprint">   --listResourceInfo &lt;clusterName&gt; &lt;resourceName&gt;
-</pre></div><p>List resources hosted in a cluster</p>
-<div class="source"><pre class="prettyprint">   --listResources &lt;clusterName&gt;
-</pre></div><p>Query info of a state model in a cluster</p>
-<div class="source"><pre class="prettyprint">   --listStateModel &lt;clusterName&gt; &lt;stateModelName&gt;
-</pre></div><p>Query info of state models in a cluster</p>
-<div class="source"><pre class="prettyprint">   --listStateModels &lt;clusterName&gt;                                                                     
-</pre></div></div></div>
+<div class="source"><pre class="prettyprint">  ./helix-admin.sh --zkSvr &lt;ZookeeperServerAddress&gt; &lt;command&gt; &lt;parameters&gt;
+</pre></div><p>Admin commands and brief description:</p>
+<table border="0" class="table table-striped">
+  <thead>
+    <tr class="a">
+      <th>Command syntax </th>
+      <th>Description </th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr class="b">
+      <td><i>--activateCluster &lt;clusterName controllerCluster true/false&gt;</i> </td>
+      <td>Enable/disable a cluster in distributed controller mode </td>
+    </tr>
+    <tr class="a">
+      <td><i>--addCluster &lt;clusterName&gt;</i> </td>
+      <td>Add a new cluster </td>
+    </tr>
+    <tr class="b">
+      <td><i>--addIdealState &lt;clusterName resourceName fileName.json&gt;</i> </td>
+      <td>Add an ideal state to a cluster </td>
+    </tr>
+    <tr class="a">
+      <td><i>--addInstanceTag &lt;clusterName instanceName tag&gt;</i> </td>
+      <td>Add a tag to an instance </td>
+    </tr>
+    <tr class="b">
+      <td><i>--addNode &lt;clusterName instanceId&gt;</i> </td>
+      <td>Add an instance to a cluster </td>
+    </tr>
+    <tr class="a">
+      <td><i>--addResource &lt;clusterName resourceName partitionNumber stateModelName&gt;</i> </td>
+      <td>Add a new resource to a cluster </td>
+    </tr>
+    <tr class="b">
+      <td><i>--addResourceProperty &lt;clusterName resourceName propertyName propertyValue&gt;</i> </td>
+      <td>Add a resource property </td>
+    </tr>
+    <tr class="a">
+      <td><i>--addStateModelDef &lt;clusterName fileName.json&gt;</i> </td>
+      <td>Add a State model definition to a cluster </td>
+    </tr>
+    <tr class="b">
+      <td><i>--dropCluster &lt;clusterName&gt;</i> </td>
+      <td>Delete a cluster </td>
+    </tr>
+    <tr class="a">
+      <td><i>--dropNode &lt;clusterName instanceId&gt;</i> </td>
+      <td>Remove a node from a cluster </td>
+    </tr>
+    <tr class="b">
+      <td><i>--dropResource &lt;clusterName resourceName&gt;</i> </td>
+      <td>Remove an existing resource from a cluster </td>
+    </tr>
+    <tr class="a">
+      <td><i>--enableCluster &lt;clusterName true/false&gt;</i> </td>
+      <td>Enable/disable a cluster </td>
+    </tr>
+    <tr class="b">
+      <td><i>--enableInstance &lt;clusterName instanceId true/false&gt;</i> </td>
+      <td>Enable/disable an instance </td>
+    </tr>
+    <tr class="a">
+      <td><i>--enablePartition &lt;true/false clusterName nodeId resourceName partitionName&gt;</i> </td>
+      <td>Enable/disable a partition </td>
+    </tr>
+    <tr class="b">
+      <td><i>--getConfig &lt;configScope configScopeArgs configKeys&gt;</i> </td>
+      <td>Get user configs </td>
+    </tr>
+    <tr class="a">
+      <td><i>--getConstraints &lt;clusterName constraintType&gt;</i> </td>
+      <td>Get constraints </td>
+    </tr>
+    <tr class="b">
+      <td><i>--help</i> </td>
+      <td>print help information </td>
+    </tr>
+    <tr class="a">
+      <td><i>--instanceGroupTag &lt;instanceTag&gt;</i> </td>
+      <td>Specify instance group tag, used with rebalance command </td>
+    </tr>
+    <tr class="b">
+      <td><i>--listClusterInfo &lt;clusterName&gt;</i> </td>
+      <td>Show information of a cluster </td>
+    </tr>
+    <tr class="a">
+      <td><i>--listClusters</i> </td>
+      <td>List all clusters </td>
+    </tr>
+    <tr class="b">
+      <td><i>--listInstanceInfo &lt;clusterName instanceId&gt;</i> </td>
+      <td>Show information of an instance </td>
+    </tr>
+    <tr class="a">
+      <td><i>--listInstances &lt;clusterName&gt;</i> </td>
+      <td>List all instances in a cluster </td>
+    </tr>
+    <tr class="b">
+      <td><i>--listPartitionInfo &lt;clusterName resourceName partitionName&gt;</i> </td>
+      <td>Show information of a partition </td>
+    </tr>
+    <tr class="a">
+      <td><i>--listResourceInfo &lt;clusterName resourceName&gt;</i> </td>
+      <td>Show information of a resource </td>
+    </tr>
+    <tr class="b">
+      <td><i>--listResources &lt;clusterName&gt;</i> </td>
+      <td>List all resources in a cluster </td>
+    </tr>
+    <tr class="a">
+      <td><i>--listStateModel &lt;clusterName stateModelName&gt;</i> </td>
+      <td>Show information of a state model </td>
+    </tr>
+    <tr class="b">
+      <td><i>--listStateModels &lt;clusterName&gt;</i> </td>
+      <td>List all state models in a cluster </td>
+    </tr>
+    <tr class="a">
+      <td><i>--maxPartitionsPerNode &lt;maxPartitionsPerNode&gt;</i> </td>
+      <td>Specify the max partitions per instance, used with addResourceGroup command </td>
+    </tr>
+    <tr class="b">
+      <td><i>--rebalance &lt;clusterName resourceName replicas&gt;</i> </td>
+      <td>Rebalance a resource </td>
+    </tr>
+    <tr class="a">
+      <td><i>--removeConfig &lt;configScope configScopeArgs configKeys&gt;</i> </td>
+      <td>Remove user configs </td>
+    </tr>
+    <tr class="b">
+      <td><i>--removeConstraint &lt;clusterName constraintType constraintId&gt;</i> </td>
+      <td>Remove a constraint </td>
+    </tr>
+    <tr class="a">
+      <td><i>--removeInstanceTag &lt;clusterName instanceId tag&gt;</i> </td>
+      <td>Remove a tag from an instance </td>
+    </tr>
+    <tr class="b">
+      <td><i>--removeResourceProperty &lt;clusterName resourceName propertyName&gt;</i> </td>
+      <td>Remove a resource property </td>
+    </tr>
+    <tr class="a">
+      <td><i>--resetInstance &lt;clusterName instanceId&gt;</i> </td>
+      <td>Reset all erroneous partitions on an instance </td>
+    </tr>
+    <tr class="b">
+      <td><i>--resetPartition &lt;clusterName instanceId resourceName partitionName&gt;</i> </td>
+      <td>Reset an erroneous partition </td>
+    </tr>
+    <tr class="a">
+      <td><i>--resetResource &lt;clusterName resourceName&gt;</i> </td>
+      <td>Reset all erroneous partitions of a resource </td>
+    </tr>
+    <tr class="b">
+      <td><i>--setConfig &lt;configScope configScopeArgs configKeyValueMap&gt;</i> </td>
+      <td>Set user configs </td>
+    </tr>
+    <tr class="a">
+      <td><i>--setConstraint &lt;clusterName constraintType constraintId constraintKeyValueMap&gt;</i> </td>
+      <td>Set a constraint </td>
+    </tr>
+    <tr class="b">
+      <td><i>--swapInstance &lt;clusterName oldInstance newInstance&gt;</i> </td>
+      <td>Swap an old instance with a new instance </td>
+    </tr>
+    <tr class="a">
+      <td><i>--zkSvr &lt;ZookeeperServerAddress&gt;</i> </td>
+      <td>Provide zookeeper address </td>
+    </tr>
+  </tbody>
+</table></div><div class="section"><h3>REST interface<a name="REST_interface"></a></h3><p>The REST interface comes wit helix-admin-webapp package:</p>
+<div class="source"><pre class="prettyprint">  - git clone https://git-wip-us.apache.org/repos/asf/incubator-helix.git
+  - cd incubator-helix 
+  - ./build
+  - cd helix-admin-webapp/target/helix-admin-webapp-pkg/bin
+  - chmod +x *.sh
+  - ./run-rest-admin.sh --zkSvr &lt;zookeeperAddress&gt; --port &lt;port&gt; // make sure zookeeper is running
+</pre></div><div class="section"><h4>URL and support methods<a name="URL_and_support_methods"></a></h4>
+<ul>
+  <li><p><i>/clusters</i></p>
+  <ul>
+    <li>List all clusters</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters
+</pre></div>
+  <ul>
+    <li>Add a cluster</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;addCluster&quot;,&quot;clusterName&quot;:&quot;MyCluster&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}</i></p>
+  <ul>
+    <li>List cluster information</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster
+</pre></div>
+  <ul>
+    <li>Enable/disable a cluster in distributed controller mode</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;activateCluster&quot;,&quot;grandCluster&quot;:&quot;MyControllerCluster&quot;,&quot;enabled&quot;:&quot;true&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster
+</pre></div>
+  <ul>
+    <li>Remove a cluster</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -X DELETE http://localhost:8100/clusters/MyCluster
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/resourceGroups</i></p>
+  <ul>
+    <li>List all resources in a cluster</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/resourceGroups
+</pre></div>
+  <ul>
+    <li>Add a resource to cluster</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;addResource&quot;,&quot;resourceGroupName&quot;:&quot;MyDB&quot;,&quot;partitions&quot;:&quot;8&quot;,&quot;stateModelDefRef&quot;:&quot;MasterSlave&quot; }' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/resourceGroups
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/resourceGroups/{resourceName}</i></p>
+  <ul>
+    <li>List resource information</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/resourceGroups/MyDB
+</pre></div>
+  <ul>
+    <li>Drop a resource</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -X DELETE http://localhost:8100/clusters/MyCluster/resourceGroups/MyDB
+</pre></div>
+  <ul>
+    <li>Reset all erroneous partitions of a resource</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;resetResource&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/resourceGroups/MyDB
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/resourceGroups/{resourceName}/idealState</i></p>
+  <ul>
+    <li>Rebalance a resource</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;rebalance&quot;,&quot;replicas&quot;:&quot;3&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/resourceGroups/MyDB/idealState
+</pre></div>
+  <ul>
+    <li>Add an ideal state</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">echo jsonParameters={
+&quot;command&quot;:&quot;addIdealState&quot;
+   }&amp;newIdealState={
+  &quot;id&quot; : &quot;MyDB&quot;,
+  &quot;simpleFields&quot; : {
+    &quot;IDEAL_STATE_MODE&quot; : &quot;AUTO&quot;,
+    &quot;NUM_PARTITIONS&quot; : &quot;8&quot;,
+    &quot;REBALANCE_MODE&quot; : &quot;SEMI_AUTO&quot;,
+    &quot;REPLICAS&quot; : &quot;0&quot;,
+    &quot;STATE_MODEL_DEF_REF&quot; : &quot;MasterSlave&quot;,
+    &quot;STATE_MODEL_FACTORY_NAME&quot; : &quot;DEFAULT&quot;
+  },
+  &quot;listFields&quot; : {
+  },
+  &quot;mapFields&quot; : {
+    &quot;MyDB_0&quot; : {
+      &quot;localhost_1001&quot; : &quot;MASTER&quot;,
+      &quot;localhost_1002&quot; : &quot;SLAVE&quot;
+    }
+  }
+}
+&gt; newIdealState.json
+curl -d @'./newIdealState.json' -H 'Content-Type: application/json' http://localhost:8100/clusters/MyCluster/resourceGroups/MyDB/idealState
+</pre></div>
+  <ul>
+    <li>Add resource property</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;addResourceProperty&quot;,&quot;REBALANCE_TIMER_PERIOD&quot;:&quot;500&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/resourceGroups/MyDB/idealState
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/resourceGroups/{resourceName}/externalView</i></p>
+  <ul>
+    <li>Show resource external view</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/resourceGroups/MyDB/externalView
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/instances</i></p>
+  <ul>
+    <li>List all instances</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/instances
+</pre></div>
+  <ul>
+    <li>Add an instance</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">curl -d 'jsonParameters={&quot;command&quot;:&quot;addInstance&quot;,&quot;instanceNames&quot;:&quot;localhost_1001&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/instances
+</pre></div>
+  <ul>
+    <li>Swap an instance</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;swapInstance&quot;,&quot;oldInstance&quot;:&quot;localhost_1001&quot;, &quot;newInstance&quot;:&quot;localhost_1002&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/instances
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/instances/{instanceName}</i></p>
+  <ul>
+    <li>Show instance information</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/instances/localhost_1001
+</pre></div>
+  <ul>
+    <li>Enable/disable an instance</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;enableInstance&quot;,&quot;enabled&quot;:&quot;false&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/instances/localhost_1001
+</pre></div>
+  <ul>
+    <li>Drop an instance</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -X DELETE http://localhost:8100/clusters/MyCluster/instances/localhost_1001
+</pre></div>
+  <ul>
+    <li>Disable/enable partitions on an instance</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;enablePartition&quot;,&quot;resource&quot;: &quot;MyDB&quot;,&quot;partition&quot;:&quot;MyDB_0&quot;,  &quot;enabled&quot; : &quot;false&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/instances/localhost_1001
+</pre></div>
+  <ul>
+    <li>Reset an erroneous partition on an instance</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;resetPartition&quot;,&quot;resource&quot;: &quot;MyDB&quot;,&quot;partition&quot;:&quot;MyDB_0&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/instances/localhost_1001
+</pre></div>
+  <ul>
+    <li>Reset all erroneous partitions on an instance</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;resetInstance&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/instances/localhost_1001
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/configs</i></p>
+  <ul>
+    <li>Get user cluster level config</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/configs/cluster
+</pre></div>
+  <ul>
+    <li>Set user cluster level config</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;setConfig&quot;,&quot;configs&quot;:&quot;key1=value1,key2=value2&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/configs/cluster
+</pre></div>
+  <ul>
+    <li>Remove user cluster level config</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">curl -d 'jsonParameters={&quot;command&quot;:&quot;removeConfig&quot;,&quot;configs&quot;:&quot;key1,key2&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/configs/cluster
+</pre></div>
+  <ul>
+    <li>Get/set/remove user participant level config</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;setConfig&quot;,&quot;configs&quot;:&quot;key1=value1,key2=value2&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/configs/participant/localhost_1001
+</pre></div>
+  <ul>
+    <li>Get/set/remove resource level config</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">curl -d 'jsonParameters={&quot;command&quot;:&quot;setConfig&quot;,&quot;configs&quot;:&quot;key1=value1,key2=value2&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/configs/resource/MyDB
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/controller</i></p>
+  <ul>
+    <li>Show controller information</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/Controller
+</pre></div>
+  <ul>
+    <li>Enable/disable cluster</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -d 'jsonParameters={&quot;command&quot;:&quot;enableCluster&quot;,&quot;enabled&quot;:&quot;false&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/Controller
+</pre></div></li>
+  <li><p><i>/zkPath/{path}</i></p>
+  <ul>
+    <li>Get information for zookeeper path</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/zkPath/MyCluster
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/StateModelDefs</i></p>
+  <ul>
+    <li>Show all state model definitions</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/StateModelDefs
+</pre></div>
+  <ul>
+    <li>Add a state mdoel definition</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  echo jsonParameters={
+    &quot;command&quot;:&quot;addStateModelDef&quot;
+   }&amp;newStateModelDef={
+      &quot;id&quot; : &quot;OnlineOffline&quot;,
+      &quot;simpleFields&quot; : {
+        &quot;INITIAL_STATE&quot; : &quot;OFFLINE&quot;
+      },
+      &quot;listFields&quot; : {
+        &quot;STATE_PRIORITY_LIST&quot; : [ &quot;ONLINE&quot;, &quot;OFFLINE&quot;, &quot;DROPPED&quot; ],
+        &quot;STATE_TRANSITION_PRIORITYLIST&quot; : [ &quot;OFFLINE-ONLINE&quot;, &quot;ONLINE-OFFLINE&quot;, &quot;OFFLINE-DROPPED&quot; ]
+      },
+      &quot;mapFields&quot; : {
+        &quot;DROPPED.meta&quot; : {
+          &quot;count&quot; : &quot;-1&quot;
+        },
+        &quot;OFFLINE.meta&quot; : {
+          &quot;count&quot; : &quot;-1&quot;
+        },
+        &quot;OFFLINE.next&quot; : {
+          &quot;DROPPED&quot; : &quot;DROPPED&quot;,
+          &quot;ONLINE&quot; : &quot;ONLINE&quot;
+        },
+        &quot;ONLINE.meta&quot; : {
+          &quot;count&quot; : &quot;R&quot;
+        },
+        &quot;ONLINE.next&quot; : {
+          &quot;DROPPED&quot; : &quot;OFFLINE&quot;,
+          &quot;OFFLINE&quot; : &quot;OFFLINE&quot;
+        }
+      }
+    }
+    &gt; newStateModelDef.json
+    curl -d @'./untitled.txt' -H 'Content-Type: application/json' http://localhost:8100/clusters/MyCluster/StateModelDefs
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/StateModelDefs/{stateModelDefName}</i></p>
+  <ul>
+    <li>Show a state model definition</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/StateModelDefs/OnlineOffline
+</pre></div></li>
+  <li><p><i>/clusters/{clusterName}/constraints/{constraintType}</i></p>
+  <ul>
+    <li>Show all contraints</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl http://localhost:8100/clusters/MyCluster/constraints/MESSAGE_CONSTRAINT
+</pre></div>
+  <ul>
+    <li>Set a contraint</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">   curl -d 'jsonParameters={&quot;constraintAttributes&quot;:&quot;RESOURCE=MyDB,CONSTRAINT_VALUE=1&quot;}' -H &quot;Content-Type: application/json&quot; http://localhost:8100/clusters/MyCluster/constraints/MESSAGE_CONSTRAINT/MyConstraint
+</pre></div>
+  <ul>
+    <li>Remove a constraint</li>
+  </ul>
+  <div class="source"><pre class="prettyprint">  curl -X DELETE http://localhost:8100/clusters/MyCluster/constraints/MESSAGE_CONSTRAINT/MyConstraint
+</pre></div></li>
+</ul></div></div></div>
                   </div>
           </div>
 

Modified: incubator/helix/site-content/tutorial_controller.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_controller.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_controller.html (original)
+++ incubator/helix/site-content/tutorial_controller.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>
@@ -225,7 +228,7 @@ under the License. --><h1>Helix Tutorial
 </pre></div><p>The snippet above shows how the controller is started. You can also start the controller using command line interface.</p>
 <div class="source"><pre class="prettyprint">cd helix/helix-core/target/helix-core-pkg/bin
 ./run-helix-controller.sh --zkSvr &lt;Zookeeper ServerAddress (Required)&gt;  --cluster &lt;Cluster name (Required)&gt;
-</pre></div></div><div class="section"><h3>Controller deployment modes<a name="Controller_deployment_modes"></a></h3><p>Helix provides multiple options to deploy the controller.</p><div class="section"><h4>STANDALONE<a name="STANDALONE"></a></h4><p>The Controller can be started as a separate process to manage a cluster. This is the recommended approach. However, since one controller can be a single point of failure, multiple controller processes are required for reliability. Even if multiple controllers are running, only one will be actively managing the cluster at any time and is decided by a leader-election process. If the leader fails, another leader will take over managing the cluster.</p><p>Even though we recommend this method of deployment, it has the drawback of having to manage an additional service for each cluster. See Controller As a Service option.</p></div><div class="section"><h4>EMBEDDED<a name="EMBEDDED"></a></h4><p>If setting up a separate controller process is not 
 viable, then it is possible to embed the controller as a library in each of the participants.</p></div><div class="section"><h4>CONTROLLER AS A SERVICE<a name="CONTROLLER_AS_A_SERVICE"></a></h4><p>One of the cool feature we added in Helix was to use a set of controllers to manage a large number of clusters. </p><p>For example if you have X clusters to be managed, instead of deploying X*3 (3 controllers for fault tolerance) controllers for each cluster, one can deploy just 3 controllers. Each controller can manage X/3 clusters. If any controller fails, the remaining two will manage X/2 clusters.</p></div></div></div>
+</pre></div></div><div class="section"><h3>Controller deployment modes<a name="Controller_deployment_modes"></a></h3><p>Helix provides multiple options to deploy the controller.</p><div class="section"><h4>STANDALONE<a name="STANDALONE"></a></h4><p>The Controller can be started as a separate process to manage a cluster. This is the recommended approach. However, since one controller can be a single point of failure, multiple controller processes are required for reliability. Even if multiple controllers are running, only one will be actively managing the cluster at any time and is decided by a leader-election process. If the leader fails, another leader will take over managing the cluster.</p><p>Even though we recommend this method of deployment, it has the drawback of having to manage an additional service for each cluster. See Controller As a Service option.</p></div><div class="section"><h4>EMBEDDED<a name="EMBEDDED"></a></h4><p>If setting up a separate controller process is not 
 viable, then it is possible to embed the controller as a library in each of the participants.</p></div><div class="section"><h4>CONTROLLER AS A SERVICE<a name="CONTROLLER_AS_A_SERVICE"></a></h4><p>One of the cool features we added in Helix is to use a set of controllers to manage a large number of clusters. </p><p>For example if you have X clusters to be managed, instead of deploying X*3 (3 controllers for fault tolerance) controllers for each cluster, one can deploy just 3 controllers. Each controller can manage X/3 clusters. If any controller fails, the remaining two will manage X/2 clusters.</p></div></div></div>
                   </div>
           </div>
 

Modified: incubator/helix/site-content/tutorial_health.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_health.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_health.html (original)
+++ incubator/helix/site-content/tutorial_health.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>

Modified: incubator/helix/site-content/tutorial_messaging.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_messaging.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_messaging.html (original)
+++ incubator/helix/site-content/tutorial_messaging.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>
@@ -193,7 +196,7 @@ software distributed under the License i
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
-under the License. --><h1>Helix Tutorial: Messaging</h1><p>In this chapter, we'll learn about messaging, a convenient feature in Helix for sending messages between nodes of a cluster. This is an interesting feature which is quite useful in practice. It is common that nodes in a distributed system require a mechanism to interact with each other. </p><div class="section"><div class="section"><h3>Example: Bootstrapping a Replica<a name="Example:_Bootstrapping_a_Replica"></a></h3><p>Consider a search system where the index replica starts up and it does not have an index. A typical solution is to get the index from a common location, or to copy the index from another replica.</p><p>Helix provides a messaging api for intra-cluster communication between nodes in the system. Helix provides a mechanism to specify the message recipient in terms of resource, partition, and state rather than specifying hostnames. Helix ensures that the message is delivered to all of the required recipients. In 
 this particular use case, the instance can specify the recipient criteria as all replicas of the desired partition to bootstrap. Since Helix is aware of the global state of the system, it can send the message to appropriate nodes. Once the nodes respond, Helix provides the bootstrapping replica with all the responses.</p><p>This is a very generic api and can also be used to schedule various periodic tasks in the cluster, such as data backups, log cleanup, etc. System Admins can also perform ad-hoc tasks, such as on-demand backups or a system command (such as rm -rf ;) across all nodes of the cluster</p>
+under the License. --><h1>Helix Tutorial: Messaging</h1><p>In this chapter, we'll learn about messaging, a convenient feature in Helix for sending messages between nodes of a cluster. This is an interesting feature which is quite useful in practice. It is common that nodes in a distributed system require a mechanism to interact with each other. </p><div class="section"><div class="section"><h3>Example: Bootstrapping a Replica<a name="Example:_Bootstrapping_a_Replica"></a></h3><p>Consider a search system where the index replica starts up and it does not have an index. A typical solution is to get the index from a common location, or to copy the index from another replica.</p><p>Helix provides a messaging API for intra-cluster communication between nodes in the system. Helix provides a mechanism to specify the message recipient in terms of resource, partition, and state rather than specifying hostnames. Helix ensures that the message is delivered to all of the required recipients. In 
 this particular use case, the instance can specify the recipient criteria as all replicas of the desired partition to bootstrap. Since Helix is aware of the global state of the system, it can send the message to appropriate nodes. Once the nodes respond, Helix provides the bootstrapping replica with all the responses.</p><p>This is a very generic API and can also be used to schedule various periodic tasks in the cluster, such as data backups, log cleanup, etc. System Admins can also perform ad-hoc tasks, such as on-demand backups or a system command (such as rm -rf ;) across all nodes of the cluster</p>
 <div class="source"><pre class="prettyprint">      ClusterMessagingService messagingService = manager.getMessagingService();
 
       // Construct the Message

Modified: incubator/helix/site-content/tutorial_participant.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_participant.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_participant.html (original)
+++ incubator/helix/site-content/tutorial_participant.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>
@@ -193,7 +196,7 @@ software distributed under the License i
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
-under the License. --><h1>Helix Tutorial: Participant</h1><p>In this chapter, we'll learn how to implement a PARTICIPANT, which is a primary functional component of a distributed system.</p><div class="section"><div class="section"><h3>Start the Helix agent<a name="Start_the_Helix_agent"></a></h3><p>The Helix agent is a common component that connects each system component with the controller.</p><p>It requires the following parameters:</p>
+under the License. --><h1>Helix Tutorial: Participant</h1><p>In this chapter, we'll learn how to implement a Participant, which is a primary functional component of a distributed system.</p><div class="section"><div class="section"><h3>Start the Helix agent<a name="Start_the_Helix_agent"></a></h3><p>The Helix agent is a common component that connects each system component with the controller.</p><p>It requires the following parameters:</p>
 <ul>
   <li>clusterName: A logical name to represent the group of nodes</li>
   <li>instanceName: A logical name of the process creating the manager instance. Generally this is host:port.</li>
@@ -210,6 +213,7 @@ under the License. --><h1>Helix Tutorial
   <li>MasterSlaveStateModelFactory</li>
   <li>LeaderStandbyStateModelFactory</li>
   <li>BootstrapHandler</li>
+  <li><i>An application defined state model factory</i></li>
 </ul>
 <div class="source"><pre class="prettyprint">      manager = HelixManagerFactory.getZKHelixManager(clusterName,
                                                           instanceName,
@@ -221,7 +225,7 @@ under the License. --><h1>Helix Tutorial
      stateModelFactory = new OnlineOfflineStateModelFactory();     
      stateMach.registerStateModelFactory(stateModelType, stateModelFactory);
      manager.connect();
-</pre></div><p>Helix doesn't know what it means to change from OFFLIN--&gt;ONLINE or ONLINE--&gt;OFFLINE. The following code snippet shows where you insert your system logic for these two state transitions.</p>
+</pre></div><p>Helix doesn't know what it means to change from OFFLINE--&gt;ONLINE or ONLINE--&gt;OFFLINE. The following code snippet shows where you insert your system logic for these two state transitions.</p>
 <div class="source"><pre class="prettyprint">public class OnlineOfflineStateModelFactory extends
         StateModelFactory&lt;StateModel&gt; {
     @Override

Modified: incubator/helix/site-content/tutorial_propstore.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_propstore.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_propstore.html (original)
+++ incubator/helix/site-content/tutorial_propstore.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>

Modified: incubator/helix/site-content/tutorial_rebalance.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_rebalance.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_rebalance.html (original)
+++ incubator/helix/site-content/tutorial_rebalance.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>
@@ -193,29 +196,30 @@ software distributed under the License i
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
-under the License. --><h1>Helix Tutorial: Rebalancing Algorithms</h1><p>The placement of partitions in a distributed system is essential for the reliability and scalability of the system. For example, when a node fails, it is important that the partitions hosted on that node are reallocated evenly among the remaining nodes. Consistent hashing is one such algorithm that can satisfy this guarantee. Helix provides a variant of consistent hashing based on the RUSH algorithm.</p><p>This means given a number of partitions, replicas and number of nodes, Helix does the automatic assignment of partition to nodes such that:</p>
+under the License. --><h1>Helix Tutorial: Rebalancing Algorithms</h1><p>The placement of partitions in a distributed system is essential for the reliability and scalability of the system. For example, when a node fails, it is important that the partitions hosted on that node are reallocated evenly among the remaining nodes. Consistent hashing is one such algorithm that can satisfy this guarantee. Helix provides a variant of consistent hashing based on the RUSH algorithm, among others.</p><p>This means given a number of partitions, replicas and number of nodes, Helix does the automatic assignment of partition to nodes such that:</p>
 <ul>
   <li>Each node has the same number of partitions</li>
   <li>Replicas of the same partition do not stay on the same node</li>
   <li>When a node fails, the partitions will be equally distributed among the remaining nodes</li>
   <li>When new nodes are added, the number of partitions moved will be minimized along with satisfying the above criteria</li>
-</ul><p>Helix employs a rebalancing algorithm to compute the <i>ideal state</i> of the system. When the <i>current state</i> differs from the <i>ideal state</i>, Helix uses it as the target state of the system and computes the appropriate transitions needed to bring it to the <i>ideal state</i>.</p><p>Helix makes it easy to perform this operation, while giving you control over the algorithm. In this section, we'll see how to implement the desired behavior.</p><p>Helix has three options for rebalancing, in increasing order of customization by the system builder:</p>
+</ul><p>Helix employs a rebalancing algorithm to compute the <i>ideal state</i> of the system. When the <i>current state</i> differs from the <i>ideal state</i>, Helix uses it as the target state of the system and computes the appropriate transitions needed to bring it to the <i>ideal state</i>.</p><p>Helix makes it easy to perform this operation, while giving you control over the algorithm. In this section, we'll see how to implement the desired behavior.</p><p>Helix has four options for rebalancing, in increasing order of customization by the system builder:</p>
 <ul>
-  <li>AUTO_REBALANCE</li>
-  <li>AUTO</li>
-  <li>CUSTOM</li>
+  <li>FULL_AUTO</li>
+  <li>SEMI_AUTO</li>
+  <li>CUSTOMIZED</li>
+  <li>USER_DEFINED</li>
 </ul>
-<div class="source"><pre class="prettyprint">            |AUTO REBALANCE|   AUTO     |   CUSTOM  |       
-            -----------------------------------------
-   LOCATION | HELIX        |  APP       |  APP      |
-            -----------------------------------------
-      STATE | HELIX        |  HELIX     |  APP      |
-            -----------------------------------------
-</pre></div><div class="section"><div class="section"><h3>AUTO_REBALANCE<a name="AUTO_REBALANCE"></a></h3><p>When the idealstate mode is set to AUTO_REBALANCE, Helix controls both the location of the replica along with the state. This option is useful for applications where creation of a replica is not expensive. </p><p>For example, consider this system that uses a MasterSlave state model, with 3 partitions and 2 replicas in the ideal state.</p>
+<div class="source"><pre class="prettyprint">            |FULL_AUTO     |  SEMI_AUTO | CUSTOMIZED|  USER_DEFINED  |
+            ---------------------------------------------------------|
+   LOCATION | HELIX        |  APP       |  APP      |      APP       |
+            ---------------------------------------------------------|
+      STATE | HELIX        |  HELIX     |  APP      |      APP       |
+            ----------------------------------------------------------
+</pre></div><div class="section"><div class="section"><h3>FULL_AUTO<a name="FULL_AUTO"></a></h3><p>When the rebalance mode is set to FULL_AUTO, Helix controls both the location of the replica along with the state. This option is useful for applications where creation of a replica is not expensive. </p><p>For example, consider this system that uses a MasterSlave state model, with 3 partitions and 2 replicas in the ideal state.</p>
 <div class="source"><pre class="prettyprint">{
   &quot;id&quot; : &quot;MyResource&quot;,
   &quot;simpleFields&quot; : {
-    &quot;IDEAL_STATE_MODE&quot; : &quot;AUTO_REBALANCE&quot;,
+    &quot;REBALANCE_MODE&quot; : &quot;FULL_AUTO&quot;,
     &quot;NUM_PARTITIONS&quot; : &quot;3&quot;,
     &quot;REPLICAS&quot; : &quot;2&quot;,
     &quot;STATE_MODEL_DEF_REF&quot; : &quot;MasterSlave&quot;,
@@ -251,11 +255,11 @@ under the License. --><h1>Helix Tutorial
     }
   }
 }
-</pre></div><p>Another typical example is evenly distributing a group of tasks among the currently healthy processes. For example, if there are 60 tasks and 4 nodes, Helix assigns 15 tasks to each node. When one node fails, Helix redistributes its 15 tasks to the remaining 3 nodes, resulting in a balanced 20 tasks per node. Similarly, if a node is added, Helix re-allocates 3 tasks from each of the 4 nodes to the 5th node, resulting in a balanced distribution of 12 tasks per node.. </p><div class="section"><h4>AUTO<a name="AUTO"></a></h4><p>When the application needs to control the placement of the replicas, use the AUTO idealstate mode.</p><p>Example: In the ideal state below, the partition 'MyResource_0' is constrained to be placed only on node1 or node2. The choice of <i>state</i> is still controlled by Helix. That means MyResource_0.MASTER could be on node1 and MyResource_0.SLAVE on node2, or vice-versa but neither would be placed on node3.</p>
+</pre></div><p>Another typical example is evenly distributing a group of tasks among the currently healthy processes. For example, if there are 60 tasks and 4 nodes, Helix assigns 15 tasks to each node. When one node fails, Helix redistributes its 15 tasks to the remaining 3 nodes, resulting in a balanced 20 tasks per node. Similarly, if a node is added, Helix re-allocates 3 tasks from each of the 4 nodes to the 5th node, resulting in a balanced distribution of 12 tasks per node.. </p><div class="section"><h4>SEMI_AUTO<a name="SEMI_AUTO"></a></h4><p>When the application needs to control the placement of the replicas, use the SEMI_AUTO rebalance mode.</p><p>Example: In the ideal state below, the partition 'MyResource_0' is constrained to be placed only on node1 or node2. The choice of <i>state</i> is still controlled by Helix. That means MyResource_0.MASTER could be on node1 and MyResource_0.SLAVE on node2, or vice-versa but neither would be placed on node3.</p>
 <div class="source"><pre class="prettyprint">{
   &quot;id&quot; : &quot;MyResource&quot;,
   &quot;simpleFields&quot; : {
-    &quot;IDEAL_STATE_MODE&quot; : &quot;AUTO&quot;,
+    &quot;REBALANCE_MODE&quot; : &quot;SEMI_AUTO&quot;,
     &quot;NUM_PARTITIONS&quot; : &quot;3&quot;,
     &quot;REPLICAS&quot; : &quot;2&quot;,
     &quot;STATE_MODEL_DEF_REF&quot; : &quot;MasterSlave&quot;,
@@ -268,11 +272,11 @@ under the License. --><h1>Helix Tutorial
   &quot;mapFields&quot; : {
   }
 }
-</pre></div><p>The MasterSlave state model requires that a partition has exactly one MASTER at all times, and the other replicas should be SLAVEs. In this simple example with 2 replicas per partition, there would be one MASTER and one SLAVE. Upon failover, a SLAVE has to assume mastership, and a new SLAVE will be generated.</p><p>In this mode when node1 fails, unlike in AUTO-REBALANCE mode the partition is <i>not</i> moved from node1 to node3. Instead, Helix will decide to change the state of MyResource_0 on node2 from SLAVE to MASTER, based on the system constraints. </p></div><div class="section"><h4>CUSTOM<a name="CUSTOM"></a></h4><p>Finally, Helix offers a third mode called CUSTOM, in which the application controls the placement <i>and</i> state of each replica. The application needs to implement a callback interface that Helix invokes when the cluster state changes. Within this callback, the application can recompute the idealstate. Helix will then issue appropriate transitions
  such that <i>Idealstate</i> and <i>Currentstate</i> converges.</p><p>Here's an example, again with 3 partitions, 2 replicas per partition, and the MasterSlave state model:</p>
+</pre></div><p>The MasterSlave state model requires that a partition has exactly one MASTER at all times, and the other replicas should be SLAVEs. In this simple example with 2 replicas per partition, there would be one MASTER and one SLAVE. Upon failover, a SLAVE has to assume mastership, and a new SLAVE will be generated.</p><p>In this mode when node1 fails, unlike in FULL_AUTO mode the partition is <i>not</i> moved from node1 to node3. Instead, Helix will decide to change the state of MyResource_0 on node2 from SLAVE to MASTER, based on the system constraints. </p></div><div class="section"><h4>CUSTOMIZED<a name="CUSTOMIZED"></a></h4><p>Helix offers a third mode called CUSTOMIZED, in which the application controls the placement <i>and</i> state of each replica. The application needs to implement a callback interface that Helix invokes when the cluster state changes. Within this callback, the application can recompute the idealstate. Helix will then issue appropriate transitions s
 uch that <i>Idealstate</i> and <i>Currentstate</i> converges.</p><p>Here's an example, again with 3 partitions, 2 replicas per partition, and the MasterSlave state model:</p>
 <div class="source"><pre class="prettyprint">{
   &quot;id&quot; : &quot;MyResource&quot;,
   &quot;simpleFields&quot; : {
-      &quot;IDEAL_STATE_MODE&quot; : &quot;CUSTOM&quot;,
+    &quot;REBALANCE_MODE&quot; : &quot;CUSTOMIZED&quot;,
     &quot;NUM_PARTITIONS&quot; : &quot;3&quot;,
     &quot;REPLICAS&quot; : &quot;2&quot;,
     &quot;STATE_MODEL_DEF_REF&quot; : &quot;MasterSlave&quot;,
@@ -292,7 +296,7 @@ under the License. --><h1>Helix Tutorial
     }
   }
 }
-</pre></div><p>Suppose the current state of the system is MyResource_0 -&gt; {N1:MASTER, N2:SLAVE} and the application changes the ideal state to MyResource_0 -&gt; {N1:SLAVE,N2:MASTER}. While the application decides which node is MASTER and which is SLAVE, Helix will not blindly issue MASTER&gt;SLAVE to N1 and SLAVE&gt;MASTER to N2 in parallel, since that might result in a transient state where both N1 and N2 are masters, which violates the MasterSlave constraint that there is exactly one MASTER at a time. Helix will first issue MASTER&gt;SLAVE to N1 and after it is completed, it will issue SLAVE&gt;MASTER to N2. </p></div></div></div>
+</pre></div><p>Suppose the current state of the system is MyResource_0 -&gt; {N1:MASTER, N2:SLAVE} and the application changes the ideal state to MyResource_0 -&gt; {N1:SLAVE,N2:MASTER}. While the application decides which node is MASTER and which is SLAVE, Helix will not blindly issue MASTER&gt;SLAVE to N1 and SLAVE&gt;MASTER to N2 in parallel, since that might result in a transient state where both N1 and N2 are masters, which violates the MasterSlave constraint that there is exactly one MASTER at a time. Helix will first issue MASTER&gt;SLAVE to N1 and after it is completed, it will issue SLAVE&gt;MASTER to N2. </p></div><div class="section"><h4>USER_DEFINED<a name="USER_DEFINED"></a></h4><p>For maximum flexibility, Helix exposes an interface that can allow applications to plug in custom rebalancing logic. By providing the name of a class that implements the Rebalancer interface, Helix will automatically call the contained method whenever there is a change to the live participant
 s in the cluster. For more, see <a href="./tutorial_user_def_rebalancer.html">User-Defined Rebalancer</a>.</p></div><div class="section"><h4>Backwards Compatibility<a name="Backwards_Compatibility"></a></h4><p>In previous versions, FULL_AUTO was called AUTO_REBALANCE and SEMI_AUTO was called AUTO. Furthermore, they were presented as the IDEAL_STATE_MODE. Helix supports both IDEAL_STATE_MODE and REBALANCE_MODE, but IDEAL_STATE_MODE is now deprecated and may be phased out in future versions.</p></div></div></div>
                   </div>
           </div>
 

Modified: incubator/helix/site-content/tutorial_spectator.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_spectator.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_spectator.html (original)
+++ incubator/helix/site-content/tutorial_spectator.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>
@@ -193,7 +196,7 @@ software distributed under the License i
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
-under the License. --><h1>Helix Tutorial: Spectator</h1><p>Next, we'll learn how to implement a SPECTATOR. Typically, a spectator needs to react to changes within the distributed system. Examples: a client that needs to know where to send a request, a topic consumer in a consumer group. The spectator is automatically informed of changes in the <i>external state</i> of the cluster, but it does not have to add any code to keep track of other components in the system.</p><div class="section"><div class="section"><h3>Start the Helix agent<a name="Start_the_Helix_agent"></a></h3><p>Same as for a PARTICIPANT, The Helix agent is the common component that connects each system component with the controller.</p><p>It requires the following parameters:</p>
+under the License. --><h1>Helix Tutorial: Spectator</h1><p>Next, we'll learn how to implement a Spectator. Typically, a spectator needs to react to changes within the distributed system. Examples: a client that needs to know where to send a request, a topic consumer in a consumer group. The spectator is automatically informed of changes in the <i>external state</i> of the cluster, but it does not have to add any code to keep track of other components in the system.</p><div class="section"><div class="section"><h3>Start the Helix agent<a name="Start_the_Helix_agent"></a></h3><p>Same as for a Participant, The Helix agent is the common component that connects each system component with the controller.</p><p>It requires the following parameters:</p>
 <ul>
   <li>clusterName: A logical name to represent the group of nodes</li>
   <li>instanceName: A logical name of the process creating the manager instance. Generally this is host:port.</li>

Modified: incubator/helix/site-content/tutorial_state.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_state.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_state.html (original)
+++ incubator/helix/site-content/tutorial_state.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>

Modified: incubator/helix/site-content/tutorial_throttling.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/tutorial_throttling.html?rev=1519752&r1=1519751&r2=1519752&view=diff
==============================================================================
--- incubator/helix/site-content/tutorial_throttling.html (original)
+++ incubator/helix/site-content/tutorial_throttling.html Tue Sep  3 16:43:37 2013
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia at Aug 28, 2013
+ | Generated by Apache Maven Doxia at Sep 3, 2013
  | Rendered using Apache Maven Fluido Skin 1.3.0
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20130828" />
+    <meta name="Date-Revision-yyyymmdd" content="20130903" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache Helix - </title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
@@ -86,6 +86,9 @@
                   
                       <li>      <a href="recipes/task_dag_execution.html"  title="Distributed task DAG Execution">Distributed task DAG Execution</a>
 </li>
+                  
+                      <li>      <a href="recipes/user_def_rebalancer.html"  title="User-Defined Rebalancer Example">User-Defined Rebalancer Example</a>
+</li>
                           </ul>
       </li>
                 <li class="dropdown">
@@ -168,7 +171,7 @@
                 
                 
             
-                  <li id="publishDate" class="pull-right">Last Published: 2013-08-28</li> 
+                  <li id="publishDate" class="pull-right">Last Published: 2013-09-03</li> 
             
                             </ul>
       </div>