Modified: helix/site-content/1.0.2-docs/Tutorial.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/Tutorial.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/Tutorial.html (original)
+++ helix/site-content/1.0.2-docs/Tutorial.html Mon Apr 25 08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-tutorial project-102-docs" data-spy="scroll" 
data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="./" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Tutorial</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -207,10 +220,10 @@ under the License.
    <div class="source"> 
     <pre><code>// Create setup tool instance
 // Note: ZK_ADDRESS is the host:port of Zookeeper
-String ZK_ADDRESS = &quot;localhost:2199&quot;;
+String ZK_ADDRESS = "localhost:2199";
 admin = new ZKHelixAdmin(ZK_ADDRESS);
 
-String CLUSTER_NAME = &quot;helix-demo&quot;;
+String CLUSTER_NAME = "helix-demo";
 //Create cluster namespace in zookeeper
 admin.addCluster(CLUSTER_NAME);
 </code></pre> 
@@ -226,19 +239,19 @@ admin.addCluster(CLUSTER_NAME);
    <h4 id="Configure_the_Nodes_of_the_Cluster">Configure the Nodes of the 
Cluster</h4> 
    <p>First we'll add new nodes to the cluster, then configure the nodes in 
the cluster. Each node in the cluster must be uniquely identifiable. The most 
commonly used convention is hostname:port.</p> 
    <div class="source"> 
-    <pre><code>String CLUSTER_NAME = &quot;helix-demo&quot;;
+    <pre><code>String CLUSTER_NAME = "helix-demo";
 int NUM_NODES = 2;
-String hosts[] = new String[]{&quot;localhost&quot;,&quot;localhost&quot;};
-String ports[] = new String[]{&quot;7000&quot;,&quot;7001&quot;};
+String hosts[] = new String[]{"localhost","localhost"};
+String ports[] = new String[]{"7000","7001"};
 for (int i = 0; i &lt; NUM_NODES; i++)
 {
-  InstanceConfig instanceConfig = new InstanceConfig(hosts[i]+ &quot;_&quot; + 
ports[i]);
+  InstanceConfig instanceConfig = new InstanceConfig(hosts[i]+ "_" + ports[i]);
   instanceConfig.setHostName(hosts[i]);
   instanceConfig.setPort(ports[i]);
   instanceConfig.setInstanceEnabled(true);
 
   //Add additional system specific configuration if needed. These can be 
accessed during the node start up.
-  instanceConfig.getRecord().setSimpleField(&quot;key&quot;, 
&quot;value&quot;);
+  instanceConfig.getRecord().setSimpleField("key", "value");
   admin.addInstance(CLUSTER_NAME, instanceConfig);
 }
 </code></pre> 
@@ -270,13 +283,13 @@ for (int i = 0; i &lt; NUM_NODES; i++)
     </ul> 
     <p>The following snippet shows how to declare the state model and 
constraints for the LEADER-STANDBY model.</p> 
     <div class="source"> 
-     <pre><code>String STATE_MODEL_NAME = &quot;LeaderStandby&quot;;
+     <pre><code>String STATE_MODEL_NAME = "LeaderStandby";
 StateModelDefinition.Builder builder = new 
StateModelDefinition.Builder(STATE_MODEL_NAME);
 // Define your own states: those are opaque strings to Helix
 // Only the topology of the state machine (initial state, transitions, 
priorities, final DROPPED state) is meaningful to Helix
-String LEADER = &quot;LEADER&quot;;
-String STANDBY = &quot;STANDBY&quot;;
-String OFFLINE = &quot;OFFLINE&quot;;
+String LEADER = "LEADER";
+String STANDBY = "STANDBY";
+String OFFLINE = "OFFLINE";
 
 // Add states and their rank to indicate priority. A lower rank corresponds to 
a higher priority
 builder.addState(LEADER, 1);
@@ -306,7 +319,7 @@ builder.upperBound(LEADER, 1);
 // this allows a different replication factor for each resource without
 // having to define a new state model
 
-builder.dynamicUpperBound(STANDBY, &quot;R&quot;);
+builder.dynamicUpperBound(STANDBY, "R");
 
 StateModelDefinition myStateModel = builder.build();
 admin.addStateModelDef(CLUSTER_NAME, STATE_MODEL_NAME, myStateModel);
@@ -324,10 +337,10 @@ admin.addStateModelDef(CLUSTER_NAME, STA
     </ul> 
     <p>For more information on the assignment modes, see the <a 
href="./tutorial_rebalance.html">Rebalancing Algorithms</a> section of this 
tutorial.</p> 
     <div class="source"> 
-     <pre><code>String RESOURCE_NAME = &quot;MyDB&quot;;
+     <pre><code>String RESOURCE_NAME = "MyDB";
 int NUM_PARTITIONS = 6;
-String STATE_MODEL_NAME = &quot;LeaderStandby&quot;;
-String MODE = &quot;SEMI_AUTO&quot;;
+String STATE_MODEL_NAME = "LeaderStandby";
+String MODE = "SEMI_AUTO";
 int NUM_REPLICAS = 2;
 
 admin.addResource(CLUSTER_NAME, RESOURCE_NAME, NUM_PARTITIONS, 
STATE_MODEL_NAME, MODE);
@@ -407,7 +420,7 @@ admin.rebalance(CLUSTER_NAME, RESOURCE_N
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/auto_exit_maintenance.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/auto_exit_maintenance.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/auto_exit_maintenance.html (original)
+++ helix/site-content/1.0.2-docs/auto_exit_maintenance.html Mon Apr 25 
08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-auto_exit_maintenance project-102-docs" 
data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="./" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Auto-exit of Maintenance Mode</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -199,19 +212,19 @@ under the License.
   <p>Currently, Helix stores the maintenance signal in 
/{CLUSTER_NAME}/CONTROLLER/MAINTENANCE. A sample maintenance signal ZNode will 
look like the following:</p> 
   <div class="source"> 
    <pre><code class="language-json">{
-  &quot;id&quot; : &quot;maintenance&quot;,
-  &quot;simpleFields&quot; : {
-    &quot;REASON&quot; : &quot;Offline Instances count 5 greater than allowed 
count 4. Stop rebalance and put the cluster 
CLUSTER_TestClusterInMaintenanceModeWhenReachingOfflineInstancesLimit into 
maintenance mode.&quot;,
-    &quot;TRIGGERED_BY&quot; : &quot;CONTROLLER&quot;,
-    &quot;TIMESTAMP&quot; : &quot;12312838831***&quot;,
+  "id" : "maintenance",
+  "simpleFields" : {
+    "REASON" : "Offline Instances count 5 greater than allowed count 4. Stop 
rebalance and put the cluster 
CLUSTER_TestClusterInMaintenanceModeWhenReachingOfflineInstancesLimit into 
maintenance mode.",
+    "TRIGGERED_BY" : "CONTROLLER",
+    "TIMESTAMP" : "12312838831***",
     // The following are sample user-defined fields from the REST call payload 
//
-    &quot;id&quot; : &quot;hulee&quot;,
-    &quot;jira&quot; : &quot;HELIX-123&quot;,
-    &quot;cluster&quot; : &quot;testCluster&quot;
+    "id" : "hulee",
+    "jira" : "HELIX-123",
+    "cluster" : "testCluster"
   },
-  &quot;listFields&quot; : {
+  "listFields" : {
   },
-  &quot;mapFields&quot; : {
+  "mapFields" : {
   }
 }
 </code></pre> 
@@ -229,8 +242,8 @@ under the License.
   <p>Currently, Helix maintains the controller history in the 
/{clusterName}/CONTROLLER/HISTORY ZNode. We plan to add a history for 
maintenance mode. This way, users will be able to access the history in 
ZooKeeper directly, or utilize the REST endpoint for viewing. The format will 
be in a human-readable format like the following (this is how Helix maintains 
the Controller leader history):</p> 
   <div class="source"> 
    <pre><code class="language-java">long currentTime = 
System.currentTimeMillis();
-DateFormat df = new SimpleDateFormat(&quot;yyyy-MM-dd-HH:mm:ss&quot;);
-df.setTimeZone(TimeZone.getTimeZone(&quot;UTC&quot;));
+DateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
+df.setTimeZone(TimeZone.getTimeZone("UTC"));
 String dateTime = df.format(new Date(currentTime));
 </code></pre> 
   </div> 
@@ -261,7 +274,7 @@ String dateTime = df.format(new Date(cur
  <section> 
   <h3 id="Guide">Guide</h3> 
   <p>First, we encourage all users of this feature to understand Helix's 
workflow below:</p> 
-  <p><img src="./images/auto-exit-maintenance.jpg" alt="Intro" /></p> 
+  <p><img src="./images/auto-exit-maintenance.jpg" alt="Intro"></p> 
   <p>In order to use this feature, you'd need to set the following config 
parameters in your cluster's ClusterConfig.</p> 
   <section> 
    <h4 id="Auto-enter_maintenance_mode">Auto-enter maintenance mode</h4> 
@@ -363,7 +376,7 @@ String dateTime = df.format(new Date(cur
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/design_crushed.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/design_crushed.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/design_crushed.html (original)
+++ helix/site-content/1.0.2-docs/design_crushed.html Mon Apr 25 08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-design_crushed project-102-docs" data-spy="scroll" 
data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="./" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>CrushED (Crush-based rebalancer with Even 
Distribution)</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -147,20 +160,20 @@
  <p>CrushRebalanceStrategy has very small movement count, but the distribution 
is not optimal. MultiRoundCrushRebalanceStrategy was designed to solve this 
problem by running CRUSH multiple times on partition assignments that 
contribute to uneven mapping. However, due to potentially high number of 
rounds, computation cost is high, we observed significantly more partition 
movements when the cluster topology is changed.</p> 
  <p>Since we have a good base strategy, CrushRebalanceStrategy, we built 
CrushEDRebalanceStrategy on top of it. Sample mapping of both strategies are as 
following. Note that blue parts remain unchanged before and after.</p> 
  <p>Before (CRUSH)</p> 
- <p><img src="images/design/crushed/before-using-crush.png" alt="Before 
(CRUSH)" /></p> 
+ <p><img src="images/design/crushed/before-using-crush.png" alt="Before 
(CRUSH)"></p> 
  <p>After (new strategy)</p> 
- <p><img src="images/design/crushed/after-using-crushed.png" alt="After (new 
strategy)" /></p> 
- <p>Since the problem is NP-hard. We are not expecting the best assignment. A 
greedy algorithm works good enough.<br /> After we tried different designs, we 
found it's hard to achieve both goals (even distribution and fewer movements) 
using a single strategy. So we decided to apply a hybrid algorithm that 
finishes the work step by step.</p> 
- <p><b>Step 1, run CRUSH to get a base assignment.</b><br /> The base 
assignment usually contains a certain number of uneven partitions(i.e. extra 
partitions above perfect distribution), so we need the following steps to 
re-distribute them.</p> 
- <p><b>Step 2, run a card dealing algorithm on the uneven parts.</b><br /> 
Assign extra partitions to under-loaded nodes, using card dealing strategy. 
This algorithm is conceptually simple. The result ensures that all partitions 
are assigned to instances with minimum difference. When gauranteeing fault-zone 
safe assignment, our greedy algorithm may not be able to calculate possible 
results because of fault-zone conflict.</p> 
+ <p><img src="images/design/crushed/after-using-crushed.png" alt="After (new 
strategy)"></p> 
+ <p>Since the problem is NP-hard. We are not expecting the best assignment. A 
greedy algorithm works good enough.<br> After we tried different designs, we 
found it's hard to achieve both goals (even distribution and fewer movements) 
using a single strategy. So we decided to apply a hybrid algorithm that 
finishes the work step by step.</p> 
+ <p><b>Step 1, run CRUSH to get a base assignment.</b><br> The base assignment 
usually contains a certain number of uneven partitions(i.e. extra partitions 
above perfect distribution), so we need the following steps to re-distribute 
them.</p> 
+ <p><b>Step 2, run a card dealing algorithm on the uneven parts.</b><br> 
Assign extra partitions to under-loaded nodes, using card dealing strategy. 
This algorithm is conceptually simple. The result ensures that all partitions 
are assigned to instances with minimum difference. When gauranteeing fault-zone 
safe assignment, our greedy algorithm may not be able to calculate possible 
results because of fault-zone conflict.</p> 
  <p>Example of assignments after step 2,</p> 
- <p><img src="images/design/crushed/example-cluster-partition-dist.png" 
alt="Example" /></p> 
- <p><b>Step 3, Shuffle partitions' preference lists.</b><br /> State 
assignments (i.e. Master, Slave, Online, Offline, etc) are made according to 
preflist, ordered node. When using randomly ordered lists, State assignment is 
also random, and it may result in uneven state distribution. To resolve this 
issue, CrushED assigns scores to nodes as it computes pref list, to give all 
nodes equal chances in appearing at the top of the pref list. This operation 
results in a much more even state distribution.</p> 
+ <p><img src="images/design/crushed/example-cluster-partition-dist.png" 
alt="Example"></p> 
+ <p><b>Step 3, Shuffle partitions' preference lists.</b><br> State assignments 
(i.e. Master, Slave, Online, Offline, etc) are made according to preflist, 
ordered node. When using randomly ordered lists, State assignment is also 
random, and it may result in uneven state distribution. To resolve this issue, 
CrushED assigns scores to nodes as it computes pref list, to give all nodes 
equal chances in appearing at the top of the pref list. This operation results 
in a much more even state distribution.</p> 
  <p>Example of master distribution before step 3,</p> 
- <p><img src="images/design/crushed/example-cluster-master-dist.png" 
alt="Example" /></p> 
+ <p><img src="images/design/crushed/example-cluster-master-dist.png" 
alt="Example"></p> 
  <p>Example of master distribution after step 3,</p> 
- <p><img src="images/design/crushed/example-cluster-master-dist-after.png" 
alt="Example" /></p> 
- <p><b>Step 4, re-calculate the assignment for the partitions on temporarily 
disabled nodes using a consistent hashing algorithm.</b><br /> Consistent 
hashing ensures minimize partition movement.<br /> Note that the first 3 steps 
are using full node list, regardless of disabled or offline nodes. So the 
assignment will be stable even the algorithm contains random factors such 
hashCode. Then step 4 ensures all the disabled nodes are handled correctly 
without causing huge partition movements.</p> 
+ <p><img src="images/design/crushed/example-cluster-master-dist-after.png" 
alt="Example"></p> 
+ <p><b>Step 4, re-calculate the assignment for the partitions on temporarily 
disabled nodes using a consistent hashing algorithm.</b><br> Consistent hashing 
ensures minimize partition movement.<br> Note that the first 3 steps are using 
full node list, regardless of disabled or offline nodes. So the assignment will 
be stable even the algorithm contains random factors such hashCode. Then step 4 
ensures all the disabled nodes are handled correctly without causing huge 
partition movements.</p> 
  <p>Pseudocode of above algorithm is as follows :</p> 
  <p><b>Pseudo Code</b></p> 
  <div class="source"> 
@@ -207,23 +220,23 @@ if (!nodeToPartitionMap.isEmpty()) {
   <li>Adding hosts to simulate expansion.</li> 
   <li>Rolling upgrade.</li> 
  </ul> 
- <p>All results show that CrushED generates more uniform global distribution 
compared with CRUSH.<br /> Moreover, partition movements in most scenarios are 
minimized. When topology changes (i.e. cluster expansion), there can be 
significantly more partition movements, but we can control the impact by using 
State Transition Throttling feature.</p> 
+ <p>All results show that CrushED generates more uniform global distribution 
compared with CRUSH.<br> Moreover, partition movements in most scenarios are 
minimized. When topology changes (i.e. cluster expansion), there can be 
significantly more partition movements, but we can control the impact by using 
State Transition Throttling feature.</p> 
  <section> 
   <h3 id="Partition_Distribution">Partition Distribution</h3> 
-  <p>Following charts demonstrate the worst cases (min load vs. max load) and 
STDEVs of partition/master distributions from some sample clusters data.<br /> 
If we measure the improvement by STDEV, CrushED improves the partition 
distribution evenness by 87% on average compared with CRUSH. And for state 
assignment (i.e. Mastership assignment) the evenness improvement is 68% on 
average.</p> 
-  <p><img src="images/design/crushed/cursh-partition-dist.png" alt="Example" 
/><img src="images/design/crushed/crushed-partition-dist.png" alt="Example" 
/></p> 
-  <p><img src="images/design/crushed/cursh-master-dist.png" alt="Example" 
/><img src="images/design/crushed/crushed-master-dist.png" alt="Example" /></p> 
+  <p>Following charts demonstrate the worst cases (min load vs. max load) and 
STDEVs of partition/master distributions from some sample clusters data.<br> If 
we measure the improvement by STDEV, CrushED improves the partition 
distribution evenness by 87% on average compared with CRUSH. And for state 
assignment (i.e. Mastership assignment) the evenness improvement is 68% on 
average.</p> 
+  <p><img src="images/design/crushed/cursh-partition-dist.png" 
alt="Example"><img src="images/design/crushed/crushed-partition-dist.png" 
alt="Example"></p> 
+  <p><img src="images/design/crushed/cursh-master-dist.png" alt="Example"><img 
src="images/design/crushed/crushed-master-dist.png" alt="Example"></p> 
  </section> 
  <section> 
   <h3 id="Disabling_Nodes">Disabling Nodes</h3> 
-  <p>When nodes are offline or disabled, CrushED will re-assign the partitions 
to other live nodes. The algorithm move only the necessary partitions.<br /> We 
simulated disabling nodes, and measured partition movement changes and 
mastership changes. We also used the expected movement (the partitions/masters 
count on the disabled nodes) as a baseline to measure extra movements.</p> 
+  <p>When nodes are offline or disabled, CrushED will re-assign the partitions 
to other live nodes. The algorithm move only the necessary partitions.<br> We 
simulated disabling nodes, and measured partition movement changes and 
mastership changes. We also used the expected movement (the partitions/masters 
count on the disabled nodes) as a baseline to measure extra movements.</p> 
   <p>The results show that movement is highly correlated to the number of 
disabled nodes, and extra movements are minor (in most cases 0 movements).</p> 
   <p>Note that <b>Rate</b> in this document is <b>the changed number / total 
partition or master count</b>.</p> 
-  <p><img src="images/design/crushed/node-down-partition-move.png" 
alt="Example" /><img src="images/design/crushed/node-down-master-move.png" 
alt="Example" /></p> 
+  <p><img src="images/design/crushed/node-down-partition-move.png" 
alt="Example"><img src="images/design/crushed/node-down-master-move.png" 
alt="Example"></p> 
  </section> 
  <section> 
   <h3 id="Rolling_upgrade">Rolling upgrade</h3> 
-  <p>Rolling upgrade is different from disabling nodes. Since nodes are reset 
one by one, in this test we assume the difference could be 2 nodes in maximum 
(for example, upgrading Node A then upgrading Node B).<br /> In this case, 
movements are still minimized. Even in the worst case scenario, extra partition 
movements and mastership changes are still close to 0%.</p> 
+  <p>Rolling upgrade is different from disabling nodes. Since nodes are reset 
one by one, in this test we assume the difference could be 2 nodes in maximum 
(for example, upgrading Node A then upgrading Node B).<br> In this case, 
movements are still minimized. Even in the worst case scenario, extra partition 
movements and mastership changes are still close to 0%.</p> 
   <p>Note that in real production clusters, we can completely avoid partition 
movements while doing rolling upgrade, by enabling Delayed Rebalancing.</p> 
  </section> 
  <section> 
@@ -233,10 +246,10 @@ if (!nodeToPartitionMap.isEmpty()) {
  </section> 
  <section> 
   <h3 id="Algorithm_Performance">Algorithm Performance</h3> 
-  <p>We compared CrushED with CRUSH algorithms using different instance 
numbers. The tests are executed multiple times and we recorded median 
computation time.<br /> CrushED does not cost much additional computation time 
for regular rebalancing. In some of the worst cases, 30% more runtime was 
observed, compared with CRUSH, but it is quicker than MultiRoundCRUSH.</p> 
+  <p>We compared CrushED with CRUSH algorithms using different instance 
numbers. The tests are executed multiple times and we recorded median 
computation time.<br> CrushED does not cost much additional computation time 
for regular rebalancing. In some of the worst cases, 30% more runtime was 
observed, compared with CRUSH, but it is quicker than MultiRoundCRUSH.</p> 
   <p>However, when there are down nodes since CrushED needs to run an 
additional consistent hashing based re-distribution, the computation time will 
be much longer. In some cases, we saw more than 3 times compared to CRUSH.</p> 
   <p>With some <b>performance improvements</b>, such as using cache to avoid 
duplicate calculation, we achieved to greatly reduce CrushED's running time. 
According to our experiment, it is now close to MultiRound CRUSH.</p> 
-  <p><img src="images/design/crushed/performance.png" alt="Example" /></p> 
+  <p><img src="images/design/crushed/performance.png" alt="Example"></p> 
  </section> 
 </section> 
 <section> 
@@ -252,15 +265,15 @@ if (!nodeToPartitionMap.isEmpty()) {
  </ol> 
  <p><b>IdeaState SimpleFields Example</b></p> 
  <div class="source"> 
-  <pre><code>HELIX_ENABLED : &quot;true&quot;
-IDEAL\_STATE\_MODE : &quot;AUTO_REBALANCE&quot;
-REBALANCE\_MODE : &quot;FULL\_AUTO&quot;
-REBALANCE_STRATEGY : 
&quot;org.apache.helix.controller.rebalancer.strategy.CrushRebalanceStrategy&quot;
-MIN\_ACTIVE\_REPLICAS : &quot;0&quot;
-NUM_PARTITIONS : &quot;64&quot;
-REBALANCER\_CLASS\_NAME : 
&quot;org.apache.helix.controller.rebalancer.DelayedAutoRebalancer&quot;
-REPLICAS : &quot;1&quot;
-STATE\_MODEL\_DEF_REF : &quot;LeaderStandby&quot;
+  <pre><code>HELIX_ENABLED : "true"
+IDEAL\_STATE\_MODE : "AUTO_REBALANCE"
+REBALANCE\_MODE : "FULL\_AUTO"
+REBALANCE_STRATEGY : 
"org.apache.helix.controller.rebalancer.strategy.CrushRebalanceStrategy"
+MIN\_ACTIVE\_REPLICAS : "0"
+NUM_PARTITIONS : "64"
+REBALANCER\_CLASS\_NAME : 
"org.apache.helix.controller.rebalancer.DelayedAutoRebalancer"
+REPLICAS : "1"
+STATE\_MODEL\_DEF_REF : "LeaderStandby"
 </code></pre> 
  </div> 
 </section>
@@ -333,7 +346,7 @@ STATE\_MODEL\_DEF_REF : &quot;LeaderStan
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/download.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/download.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/download.html (original)
+++ helix/site-content/1.0.2-docs/download.html Mon Apr 25 08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -30,24 +36,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-download project-102-docs" data-spy="scroll" 
data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -120,7 +133,7 @@
                                <li><a href="./" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Apache Helix Downloads</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -151,15 +164,13 @@
 <section> 
  <h2 id="Release">Release</h2> 
  <p>Release date: 06/10/2019 </p> 
- <p><a href="releasenotes/release-1.0.2.html">1.0.2 Release notes</a></p> 
- <a name="mirror"></a> 
+ <p><a href="releasenotes/release-1.0.2.html">1.0.2 Release notes</a></p> <a 
name="mirror"></a> 
  <section> 
   <h3 id="Mirror">Mirror</h3> 
-  <p> [if-any logo] <a href="[link]"> <img src="[logo]" align="right" 
border="0" alt="logo" /> </a> [end] The currently selected mirror is 
<b>[preferred]</b>. If you encounter a problem with this mirror, please select 
another mirror. If all mirrors are failing, there are <i>backup</i> mirrors (at 
the end of the mirrors list) that should be available. </p> 
+  <p> [if-any logo] <a href="[link]"> <img src="[logo]" align="right" 
border="0" alt="logo"> </a> [end] The currently selected mirror is 
<b>[preferred]</b>. If you encounter a problem with this mirror, please select 
another mirror. If all mirrors are failing, there are <i>backup</i> mirrors (at 
the end of the mirrors list) that should be available. </p> 
   <form action="[location]" method="get" id="SelectMirror" class="form-inline">
-    Other mirrors: 
-   <select name="Preferred" class="input-xlarge"> [if-any http] [for http] 
<option value="[http]">[http]</option> [end] [end] [if-any ftp] [for ftp] 
<option value="[ftp]">[ftp]</option> [end] [end] [if-any backup] [for backup] 
<option value="[backup]">[backup] (backup)</option> [end] [end] </select> 
-   <input type="submit" value="Change" class="btn" /> 
+    Other mirrors: <select name="Preferred" class="input-xlarge"> [if-any 
http] [for http] <option value="[http]">[http]</option> [end] [end] [if-any 
ftp] [for ftp] <option value="[ftp]">[ftp]</option> [end] [end] [if-any backup] 
[for backup] <option value="[backup]">[backup] (backup)</option> [end] [end] 
</select> 
+   <input type="submit" value="Change" class="btn"> 
   </form> 
   <p> You may also consult the <a class="externalLink" 
href="http://www.apache.org/mirrors/";>complete list of mirrors.</a> </p> 
  </section> 
@@ -225,12 +236,12 @@
   <pre>% pgpk -a KEYS
 % pgpv downloaded_file.asc</pre> 
  </div> or 
- <br /> 
+ <br> 
  <div class="source"> 
   <pre>% pgp -ka KEYS
 % pgp downloaded_file.asc</pre> 
  </div> or 
- <br /> 
+ <br> 
  <div class="source"> 
   <pre>% gpg --import KEYS
 % gpg --verify downloaded_file.asc</pre> 
@@ -311,7 +322,7 @@
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/index.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/index.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/index.html (original)
+++ helix/site-content/1.0.2-docs/index.html Mon Apr 25 08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-index project-102-docs" data-spy="scroll" 
data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="./" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Helix 1.0.2 Documentation</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -231,7 +244,7 @@
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/privacy-policy.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/privacy-policy.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/privacy-policy.html (original)
+++ helix/site-content/1.0.2-docs/privacy-policy.html Mon Apr 25 08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -30,24 +36,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-privacy-policy project-102-docs" data-spy="scroll" 
data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -120,7 +133,7 @@
                                <li><a href="./" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Privacy Policy</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -214,7 +227,7 @@
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/quota_scheduling.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/quota_scheduling.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/quota_scheduling.html (original)
+++ helix/site-content/1.0.2-docs/quota_scheduling.html Mon Apr 25 08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-quota_scheduling project-102-docs" data-spy="scroll" 
data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="./" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Quota-based Task Scheduling</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -151,7 +164,7 @@ under the License.
 </div> 
 <section> 
  <h2 id="Introduction">Introduction</h2> 
- <p><img src="./images/quota_intro.png" alt="Intro" /></p> 
+ <p><img src="./images/quota_intro.png" alt="Intro"></p> 
  <p>Quota-based task scheduling is a feature addition to Helix Task Framework 
that enables users of Task Framework to apply the notion of categories in 
distributed task management.</p> 
 </section> 
 <section> 
@@ -200,7 +213,7 @@ under the License.
  <section> 
   <h3 id="RuntimeJobDag_.28JobDagIterator.29">RuntimeJobDag 
(JobDagIterator)</h3> 
   <p>This new component serves as an iterator for JobDAGs for the Controller. 
Previously, task assignment required the Controller to iterate through all jobs 
and their underlying tasks to determine whether there were any tasks that 
needed to be assigned and scheduled. This proved to be inefficient and did not 
scale with the increasing load we were putting on Task Framework. Each 
RuntimeJobDag records states, that is, it knows what task needs to be offered 
up to the Controller for scheduling. This saves the redundant computation for 
the Controller every time it goes through the TaskSchedulingStage of the Task 
pipeline.</p> 
-  <p><img src="./images/quota_InstanceCapacityManager.jpeg" alt="Architecture" 
/></p> 
+  <p><img src="./images/quota_InstanceCapacityManager.jpeg" 
alt="Architecture"></p> 
  </section> 
 </section> 
 <section> 
@@ -209,10 +222,10 @@ under the License.
   <h3 id="How_it_works">How it works</h3> 
   <p>Quota-based task scheduling works as follows. If a quota type is set, 
Task Framework will calculate a ratio against the sum of all quota config 
numbers for each quota type. Then it will apply that ratio to find the actual 
resource amount allotted to each quota type. Here is an example to illustrate 
this: Suppose the quota config is as follows:</p> 
   <div class="source"> 
-   <pre><code class="language-json">&quot;QUOTA_TYPES&quot;:{
-  &quot;A&quot;:&quot;2&quot;
-  ,&quot;B&quot;:&quot;1&quot;
-  ,&quot;DEFAULT&quot;:&quot;1&quot;
+   <pre><code class="language-json">"QUOTA_TYPES":{
+  "A":"2"
+  ,"B":"1"
+  ,"DEFAULT":"1"
 }
 </code></pre> 
   </div> 
@@ -259,9 +272,9 @@ under the License.
   <div class="source"> 
    <pre><code class="language-java">ClusterConfig clusterConfig = 
_manager.getConfigAccessor().getClusterConfig(CLUSTER_NAME); // Retrieve 
ClusterConfig
 clusterConfig.resetTaskQuotaRatioMap(); // Optional: you may want to reset the 
quota config before creating a new quota config
-clusterConfig.setTaskQuotaRatio(DEFAULT_QUOTA_TYPE, 10); // Define the default 
quota (DEFAULT_QUOTA_TYPE = &quot;DEFAULT&quot;)
-clusterConfig.setTaskQuotaRatio(&quot;A&quot;, 20); // Define quota type A
-clusterConfig.setTaskQuotaRatio(&quot;B&quot;, 10); // Define quota type B
+clusterConfig.setTaskQuotaRatio(DEFAULT_QUOTA_TYPE, 10); // Define the default 
quota (DEFAULT_QUOTA_TYPE = "DEFAULT")
+clusterConfig.setTaskQuotaRatio("A", 20); // Define quota type A
+clusterConfig.setTaskQuotaRatio("B", 10); // Define quota type B
 _manager.getConfigAccessor().setClusterConfig(CLUSTER_NAME, clusterConfig); // 
Set the new ClusterConfig
 </code></pre> 
   </div> 
@@ -269,17 +282,17 @@ _manager.getConfigAccessor().setClusterC
   <p>Upon setting the quota config in ClusterConfig, you will see the updated 
field in your ZooKeeper cluster config ZNode in the JSON format. See an example 
below:</p> 
   <div class="source"> 
    <pre><code class="language-json">{
-  &quot;id&quot;:&quot;Example_Cluster&quot;
-  ,&quot;simpleFields&quot;:{
-    &quot;allowParticipantAutoJoin&quot;:&quot;true&quot;
+  "id":"Example_Cluster"
+  ,"simpleFields":{
+    "allowParticipantAutoJoin":"true"
   }
-  ,&quot;listFields&quot;:{
+  ,"listFields":{
   }
-  ,&quot;mapFields&quot;:{
-    &quot;QUOTA_TYPES&quot;:{
-      &quot;A&quot;:&quot;20&quot;
-      ,&quot;B&quot;:&quot;10&quot;
-      ,&quot;DEFAULT&quot;:&quot;10&quot;
+  ,"mapFields":{
+    "QUOTA_TYPES":{
+      "A":"20"
+      ,"B":"10"
+      ,"DEFAULT":"10"
     }
   }
 }
@@ -291,8 +304,8 @@ _manager.getConfigAccessor().setClusterC
   <div class="source"> 
    <pre><code class="language-java">JobConfig.Builder jobBuilderA =
     new 
JobConfig.Builder().setCommand(JOB_COMMAND).setJobCommandConfigMap(_jobCommandMap)
-        
.addTaskConfigs(taskConfigsA).setNumConcurrentTasksPerInstance(50).setJobType(&quot;A&quot;);
 // Setting the job quota type as &quot;A&quot;
-workflowBuilder.addJob(&quot;JOB_A&quot;, jobBuilderA);
+        
.addTaskConfigs(taskConfigsA).setNumConcurrentTasksPerInstance(50).setJobType("A");
 // Setting the job quota type as "A"
+workflowBuilder.addJob("JOB_A", jobBuilderA);
 </code></pre> 
   </div> 
  </section> 
@@ -407,7 +420,7 @@ workflowBuilder.addJob(&quot;JOB_A&quot;
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/recipes/lock_manager.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/recipes/lock_manager.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/recipes/lock_manager.html (original)
+++ helix/site-content/1.0.2-docs/recipes/lock_manager.html Mon Apr 25 08:18:23 
2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-recipes-lock_manager project-102-docs" 
data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="../" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Distributed Lock Manager</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -171,7 +184,7 @@ under the License.
  </ul> 
  <p>Helix provides a simple and elegant solution to this problem. Simply 
specify the number of locks and Helix will ensure that above constraints are 
satisfied.</p> 
  <p>To quickly see this working run the <code>lock-manager-demo</code> script 
where 12 locks are evenly distributed among three nodes, and when a node fails, 
the locks get re-distributed among remaining two nodes. Note that Helix does 
not re-shuffle the locks completely, instead it simply distributes the locks 
relinquished by dead node among 2 remaining nodes evenly.</p> 
- <hr /> 
+ <hr> 
  <section> 
   <h3 id="Short_Version">Short Version</h3> 
   <p>This version starts multiple threads within the same process to simulate 
a multi node deployment. Try the long version to get a better idea of how it 
works.</p> 
@@ -244,7 +257,7 @@ lock-group_9    localhost_12001
 
 </code></pre> 
    </div> 
-   <hr /> 
+   <hr> 
   </section> 
  </section> 
  <section> 
@@ -284,11 +297,11 @@ lock-group_9    localhost_12001
   }
 
   public void lock(Message m, NotificationContext context) {
-    System.out.println(&quot; acquired lock:&quot;+ lockName );
+    System.out.println(" acquired lock:"+ lockName );
   }
 
   public void release(Message m, NotificationContext context) {
-    System.out.println(&quot; releasing lock:&quot;+ lockName );
+    System.out.println(" releasing lock:"+ lockName );
   }
 
 }
@@ -308,15 +321,15 @@ lock-group_9    localhost_12001
    <div class="source"> 
     <pre><code>public class LockProcess {
   public static void main(String args) {
-    String zkAddress= &quot;localhost:2199&quot;;
-    String clusterName = &quot;lock-manager-demo&quot;;
+    String zkAddress= "localhost:2199";
+    String clusterName = "lock-manager-demo";
     //Give a unique id to each process, most commonly used format hostname_port
-    String instanceName =&quot;localhost_12000&quot;;
+    String instanceName ="localhost_12000";
     ZKHelixAdmin helixAdmin = new ZKHelixAdmin(zkAddress);
     //configure the instance and provide some metadata
     InstanceConfig config = new InstanceConfig(instanceName);
-    config.setHostName(&quot;localhost&quot;);
-    config.setPort(&quot;12000&quot;);
+    config.setHostName("localhost");
+    config.setPort("12000");
     admin.addInstance(clusterName, config);
     //join the cluster
     HelixManager manager;
@@ -324,7 +337,7 @@ lock-group_9    localhost_12001
                                                   instanceName,
                                                   InstanceType.PARTICIPANT,
                                                   zkAddress);
-    
manager.getStateMachineEngine().registerStateModelFactory(&quot;OnlineOffline&quot;,
 modelFactory);
+    manager.getStateMachineEngine().registerStateModelFactory("OnlineOffline", 
modelFactory);
     manager.connect();
     Thread.currentThread.join();
   }
@@ -349,15 +362,15 @@ lock-group_9    localhost_12001
     <div class="source"> 
      <pre><code>public class LockProcess {
   public static void main(String args) {
-    String zkAddress= &quot;localhost:2199&quot;;
-    String clusterName = &quot;lock-manager-demo&quot;;
+    String zkAddress= "localhost:2199";
+    String clusterName = "lock-manager-demo";
     // .
     // .
     manager.connect();
     HelixManager controller;
     controller = HelixControllerMain.startHelixController(zkAddress,
                                                           clusterName,
-                                                          
&quot;controller&quot;,
+                                                          "controller",
                                                           
HelixControllerMain.STANDALONE);
     Thread.currentThread.join();
   }
@@ -437,7 +450,7 @@ lock-group_9    localhost_12001
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/recipes/rabbitmq_consumer_group.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/recipes/rabbitmq_consumer_group.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/recipes/rabbitmq_consumer_group.html 
(original)
+++ helix/site-content/1.0.2-docs/recipes/rabbitmq_consumer_group.html Mon Apr 
25 08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-recipes-rabbitmq_consumer_group project-102-docs" 
data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="../" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>RabbitMQ Consumer Group</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -266,12 +279,12 @@ admin.addCluster(clusterName, true);
 
 // add state model definition
 StateModelConfigGenerator generator = new StateModelConfigGenerator();
-admin.addStateModelDef(clusterName, &quot;OnlineOffline&quot;,
+admin.addStateModelDef(clusterName, "OnlineOffline",
     new StateModelDefinition(generator.generateConfigForOnlineOffline()));
 
-// add resource &quot;topic&quot; which has 6 partitions
-String resourceName = &quot;rabbitmq-consumer-group&quot;;
-admin.addResource(clusterName, resourceName, 6, &quot;OnlineOffline&quot;, 
&quot;AUTO_REBALANCE&quot;);
+// add resource "topic" which has 6 partitions
+String resourceName = "rabbitmq-consumer-group";
+admin.addResource(clusterName, resourceName, 6, "OnlineOffline", 
"AUTO_REBALANCE");
 </code></pre> 
    </div> 
   </section> 
@@ -288,35 +301,35 @@ admin.addResource(clusterName, resourceN
 StateMachineEngine stateMach = _manager.getStateMachineEngine();
 ConsumerStateModelFactory modelFactory =
     new ConsumerStateModelFactory(_consumerId, _mqServer);
-stateMach.registerStateModelFactory(&quot;OnlineOffline&quot;, modelFactory);
+stateMach.registerStateModelFactory("OnlineOffline", modelFactory);
 
 _manager.connect();
 </code></pre> 
   </div> 
   <p>Once the consumer has registered the state model and the controller is 
started, the consumer starts getting callbacks (onBecomeOnlineFromOffline) for 
the partition it needs to host. All it needs to do as part of the callback is 
to start consuming messages from the appropriate queue. Similarly, when the 
controller deallocates a partitions from a consumer, it fires 
onBecomeOfflineFromOnline for the same partition. As a part of this transition, 
the consumer will stop consuming from a that queue.</p> 
   <div class="source"> 
-   <pre><code>@Transition(to = &quot;ONLINE&quot;, from = &quot;OFFLINE&quot;)
+   <pre><code>@Transition(to = "ONLINE", from = "OFFLINE")
 public void onBecomeOnlineFromOffline(Message message, NotificationContext 
context) {
-  LOG.debug(_consumerId + &quot; becomes ONLINE from OFFLINE for &quot; + 
_partition);
+  LOG.debug(_consumerId + " becomes ONLINE from OFFLINE for " + _partition);
   if (_thread == null) {
-    LOG.debug(&quot;Starting ConsumerThread for &quot; + _partition + 
&quot;...&quot;);
+    LOG.debug("Starting ConsumerThread for " + _partition + "...");
     _thread = new ConsumerThread(_partition, _mqServer, _consumerId);
     _thread.start();
-    LOG.debug(&quot;Starting ConsumerThread for &quot; + _partition + &quot; 
done&quot;);
+    LOG.debug("Starting ConsumerThread for " + _partition + " done");
 
   }
 }
 
-@Transition(to = &quot;OFFLINE&quot;, from = &quot;ONLINE&quot;)
+@Transition(to = "OFFLINE", from = "ONLINE")
 public void onBecomeOfflineFromOnline(Message message, NotificationContext 
context)
     throws InterruptedException {
-  LOG.debug(_consumerId + &quot; becomes OFFLINE from ONLINE for &quot; + 
_partition);
+  LOG.debug(_consumerId + " becomes OFFLINE from ONLINE for " + _partition);
   if (_thread != null) {
-    LOG.debug(&quot;Stopping &quot; + _consumerId + &quot; for &quot; + 
_partition + &quot;...&quot;);
+    LOG.debug("Stopping " + _consumerId + " for " + _partition + "...");
     _thread.interrupt();
     _thread.join(2000);
     _thread = null;
-    LOG.debug(&quot;Stopping &quot; +  _consumerId + &quot; for &quot; + 
_partition + &quot; done&quot;);
+    LOG.debug("Stopping " +  _consumerId + " for " + _partition + " done");
   }
 }
 </code></pre> 
@@ -392,7 +405,7 @@ public void onBecomeOfflineFromOnline(Me
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/recipes/rsync_replicated_file_store.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/recipes/rsync_replicated_file_store.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/recipes/rsync_replicated_file_store.html 
(original)
+++ helix/site-content/1.0.2-docs/recipes/rsync_replicated_file_store.html Mon 
Apr 25 08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-recipes-rsync_replicated_file_store project-102-docs" 
data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="../" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Near-Realtime Rsync Replicated File 
System</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -222,12 +235,12 @@ chmod +x *
   <section> 
    <h4 id="Failover">Failover</h4> 
    <p>When a master fails, a new slave will be promoted to master. If the 
previous master node is reachable, then the new master will flush all the 
changes from previous the master before taking up mastership. The new master 
will record the end transaction ID of the current generation and then start a 
new generation with sequence starting from 1. After this the master will begin 
accepting writes.</p> 
-   <p><img src="../images/PFS-Generic.png" alt="Partitioned File Store" /></p> 
+   <p><img src="../images/PFS-Generic.png" alt="Partitioned File Store"></p> 
   </section> 
  </section> 
  <section> 
   <h3 id="Rsync-based_Solution">Rsync-based Solution</h3> 
-  <p><img src="../images/RSYNC_BASED_PFS.png" alt="Rsync based File Store" 
/></p> 
+  <p><img src="../images/RSYNC_BASED_PFS.png" alt="Rsync based File 
Store"></p> 
   <p>This application demonstrates a file store that uses rsync as the 
replication mechanism. One can envision a similar system where instead of using 
rsync, one can implement a custom solution to notify the slave of the changes 
and also provide an api to pull the change files.</p> 
   <section> 
    <h4 id="Concepts">Concepts</h4> 
@@ -334,7 +347,7 @@ chmod +x *
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/recipes/service_discovery.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/recipes/service_discovery.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/recipes/service_discovery.html (original)
+++ helix/site-content/1.0.2-docs/recipes/service_discovery.html Mon Apr 25 
08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-recipes-service_discovery project-102-docs" 
data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="../" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Service Discovery</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -379,7 +392,7 @@ END:Service discovery demo mode:NONE
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/recipes/task_dag_execution.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/recipes/task_dag_execution.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/recipes/task_dag_execution.html (original)
+++ helix/site-content/1.0.2-docs/recipes/task_dag_execution.html Mon Apr 25 
08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-recipes-task_dag_execution project-102-docs" 
data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="../" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Distributed Task Execution</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -181,14 +194,14 @@ under the License.
   <p>Each stage is represented as a Node along with the upstream dependency 
and desired parallelism. Each stage is modeled as a resource in Helix using 
OnlineOffline state model. As part of an Offline to Online transition, we watch 
the external view of upstream resources and wait for them to transition to the 
online state. See Task.java for additional info.</p> 
   <div class="source"> 
    <pre><code>Dag dag = new Dag();
-dag.addNode(new Node(&quot;filterImps&quot;, 10, &quot;&quot;));
-dag.addNode(new Node(&quot;filterClicks&quot;, 5, &quot;&quot;));
-dag.addNode(new Node(&quot;impClickJoin&quot;, 10, 
&quot;filterImps,filterClicks&quot;));
-dag.addNode(new Node(&quot;impCountsByGender&quot;, 10, 
&quot;filterImps&quot;));
-dag.addNode(new Node(&quot;impCountsByCountry&quot;, 10, 
&quot;filterImps&quot;));
-dag.addNode(new Node(&quot;clickCountsByGender&quot;, 5, 
&quot;impClickJoin&quot;));
-dag.addNode(new Node(&quot;clickCountsByCountry&quot;, 5, 
&quot;impClickJoin&quot;));
-dag.addNode(new 
Node(&quot;report&quot;,1,&quot;impCountsByGender,impCountsByCountry,clickCountsByGender,clickCountsByCountry&quot;));
+dag.addNode(new Node("filterImps", 10, ""));
+dag.addNode(new Node("filterClicks", 5, ""));
+dag.addNode(new Node("impClickJoin", 10, "filterImps,filterClicks"));
+dag.addNode(new Node("impCountsByGender", 10, "filterImps"));
+dag.addNode(new Node("impCountsByCountry", 10, "filterImps"));
+dag.addNode(new Node("clickCountsByGender", 5, "impClickJoin"));
+dag.addNode(new Node("clickCountsByCountry", 5, "impClickJoin"));
+dag.addNode(new 
Node("report",1,"impCountsByGender,impCountsByCountry,clickCountsByGender,clickCountsByCountry"));
 </code></pre> 
   </div> 
  </section> 
@@ -389,7 +402,7 @@ Click counts per gender
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>

Modified: helix/site-content/1.0.2-docs/releasenotes/release-1.0.2.html
URL: 
http://svn.apache.org/viewvc/helix/site-content/1.0.2-docs/releasenotes/release-1.0.2.html?rev=1900255&r1=1900254&r2=1900255&view=diff
==============================================================================
--- helix/site-content/1.0.2-docs/releasenotes/release-1.0.2.html (original)
+++ helix/site-content/1.0.2-docs/releasenotes/release-1.0.2.html Mon Apr 25 
08:18:23 2022
@@ -1,7 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-23  Rendered using Reflow Maven 
Skin 2.0.0-SNAPSHOT (https://andriusvelykis.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2022-04-25  Rendered using Reflow Maven 
Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -29,24 +35,31 @@
                <![endif]-->
 
 
-               <script type="text/javascript">
-
-        var _gaq = _gaq || [];
-        _gaq.push(['_setAccount', 'UA-3211522-12']);
-        _gaq.push(['_trackPageview']);
 
-        (function() {
-        var ga = document.createElement('script'); ga.type = 
'text/javascript'; ga.async = true;
-        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
-        var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
-        })();
 
-      </script>
 
-       </head>
+    
+<!-- Matomo -->
+<script>
+    var _paq = window._paq = window._paq || [];
+                        _paq.push(['disableCookies']);
+                                    _paq.push(['trackPageView']);
+                                    _paq.push(['enableLinkTracking']);
+                    
+    (function() {
+        var u="https://analytics.apache.org";;
+        _paq.push(['setTrackerUrl', u+'/matomo.php']);
+        _paq.push(['setSiteId', '15']);
+        var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+        g.async=true; g.src=u+'/matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+</script>
+<!-- End Matomo Code -->
+       </head>
 
        <body class="page-releasenotes-release-102 project-102-docs" 
data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+    
                <div class="navbar navbar-fixed-top">
                        <div class="navbar-inner">
                                <div class="container">
@@ -119,7 +132,7 @@
                                <li><a href="../" title="Release 1.0.2">Release 
1.0.2</a></li>
                                <li class="divider">/</li>
                                <li>Release Notes for Apache Helix 1.0.2</li>
-                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-23</li>
+                               <li class="publishDate version-date 
pull-right">Last Published: 2022-04-25</li>
                        </ul>
                </div>
        </header>
@@ -257,7 +270,7 @@
                        <div class="span12">
                                <p class="pull-right"><a href="#">Back to 
top</a></p>
                                <p class="copyright">Copyright &copy;2022 <a 
href="https://www.apache.org/";>The Apache Software Foundation</a>. All Rights 
Reserved.</p>
-                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> by <a href="https://andrius.velykis.lt"; 
target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
+                               <p><a 
href="https://github.com/olamy/reflow-maven-skin"; title="Reflow Maven 
skin">Reflow Maven skin</a> maintained by <a href="https://twitter.com/olamy"; 
target="_blank" title="Olivier Lamy">Olivier Lamy</a>.</p>
                <div class="row span16"><div>Apache Helix, Apache, the Apache 
feather logo, and the Apache Helix project logos are trademarks of The Apache 
Software Foundation.
         All other marks mentioned may be trademarks or registered trademarks 
of their respective owners.</div>
         <a 
href="https://helix.apache.org/1.0.2-docs/privacy-policy.html";>Privacy 
Policy</a>


Reply via email to