You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by jx...@apache.org on 2023/04/27 23:08:39 UTC

svn commit: r1909461 [8/38] - in /helix/site-content: ./ 0.9.9-docs/ 0.9.9-docs/css/ 0.9.9-docs/images/ 0.9.9-docs/js/ 0.9.9-docs/recipes/ 0.9.9-docs/releasenotes/ 1.0.2-docs/ 1.0.2-docs/css/ 1.0.2-docs/images/ 1.0.2-docs/js/ 1.0.2-docs/recipes/ 1.0.2-...

Modified: helix/site-content/0.9.9-docs/tutorial_participant.html
URL: http://svn.apache.org/viewvc/helix/site-content/0.9.9-docs/tutorial_participant.html?rev=1909461&r1=1909460&r2=1909461&view=diff
==============================================================================
--- helix/site-content/0.9.9-docs/tutorial_participant.html (original)
+++ helix/site-content/0.9.9-docs/tutorial_participant.html Thu Apr 27 23:08:36 2023
@@ -1,8 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-15
- Rendered using Maven Reflow Skin 1.0.0 (http://andriusvelykis.github.com/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2023-04-27  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -13,61 +18,84 @@
 		<meta name="description" content="" />
 		<meta http-equiv="content-language" content="en" />
 
-		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap.min.css" rel="stylesheet" />
-		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css" rel="stylesheet" />
+		<link href="./css/bootstrap.min.css" rel="stylesheet" />
+		<link href="./css/bootstrap-responsive.min.css" rel="stylesheet" />
 		<link href="./css/docs.css" rel="stylesheet" />
 		<link href="./css/reflow-skin.css" rel="stylesheet" />
-		
-		
+
+
 		<link href="./css/lightbox.css" rel="stylesheet" />
-		
+
 		<link href="./css/site.css" rel="stylesheet" />
 		<link href="./css/print.css" rel="stylesheet" media="print" />
-		
+
 		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
 		<!--[if lt IE 9]>
-			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+			<script src="./js/html5.js"></script>
 		<![endif]-->
-		
-	</head>
 
-	<body class="page-$config.fileId project-$config.projectId" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+
+
+
+    
+<!-- 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_participant project-099-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">
-					<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 					</a>
-					<div class="nav-collapse">
+					<a class="brand" href="..">Apache Helix</a>
+					<div class="nav-collapse collapse" id="top-nav-collapse">
 						<ul class="nav pull-right">
-							<li class="active"><a href="" title="Helix 0.9.9">Helix 0.9.9 </a></li>
-							<li class="dropdown active">
+							<li ><a href="index.html" title="Helix 0.9.9">Helix 0.9.9</a></li>
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Helix <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Download">Download </a></li>
-									<li class="active"><a href="" title="Building">Building </a></li>
-									<li class="active"><a href="" title="Release Notes">Release Notes </a></li>
+									<li ><a href="download.html" title="Download">Download</a></li>
+									<li ><a href="Building.html" title="Building">Building</a></li>
+									<li ><a href="releasenotes/release-0.9.9.html" title="Release Notes">Release Notes</a></li>
 								</ul>
 							</li>
-							<li class="dropdown active">
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hands-On <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Quick Start">Quick Start </a></li>
-									<li class="active"><a href="" title="Tutorial">Tutorial </a></li>
-									<li class="active"><a href="" title="Javadocs">Javadocs </a></li>
+									<li ><a href="Quickstart.html" title="Quick Start">Quick Start</a></li>
+									<li ><a href="Tutorial.html" title="Tutorial">Tutorial</a></li>
+									<li ><a href="../javadocs/0.9.9" title="Javadocs">Javadocs</a></li>
 								</ul>
 							</li>
-							<li class="dropdown active">
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Recipes <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Distributed lock manager">Distributed lock manager </a></li>
-									<li class="active"><a href="" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a></li>
-									<li class="active"><a href="" title="Rsync replicated file store">Rsync replicated file store </a></li>
-									<li class="active"><a href="" title="Service discovery">Service discovery </a></li>
-									<li class="active"><a href="" title="Distributed task DAG execution">Distributed task DAG execution </a></li>
+									<li ><a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a></li>
+									<li ><a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a></li>
+									<li ><a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a></li>
+									<li ><a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a></li>
+									<li ><a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a></li>
 								</ul>
 							</li>
 						</ul>
@@ -75,30 +103,34 @@
 				</div>
 			</div>
 		</div>
-		
+
 	<div class="container">
-	
+
 	<!-- Masthead
 	================================================== -->
-	<header class="jumbotron subhead">
+
+	<header>
+	<div class="jumbotron subhead">
 		<div class="row" id="banner">
 			<div class="span12">
 				<div class="pull-left">
-					<a href="" id="bannerLeft"><img src="" alt='"''"' /></a>
+					<a href="http://helix.apache.org/" id="bannerLeft"><img src="../images/helix-logo.jpg" alt='"''"' /></a>
+					<p class="lead">A cluster management framework for partitioned and replicated distributed resources</p>
 				</div>
 				<div class="pull-right">
-					<a href="http://www.apache.org/" id="bannerRight"><img src="" alt='"''"' /></a>
+					<a href="http://www.apache.org/" id="bannerRight"><img src="../images/feather_small.gif" alt='"''"' /></a>
 				</div>
 			</div>
 		</div>
+	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="" title="Apache Helix">Apache Helix </a></li>
+				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
 				<li class="divider">/</li>
-				<li><a href="" title="Release 0.9.9">Release 0.9.9 </a></li>
+				<li><a href="./" title="Release 0.9.9">Release 0.9.9</a></li>
 				<li class="divider">/</li>
 				<li>Tutorial - Participant</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-04-15</li>
+				<li class="publishDate version-date pull-right">Last Published: 2023-04-27</li>
 			</ul>
 		</div>
 	</header>
@@ -107,94 +139,193 @@
 	<div class="row">
 		<div class="span12">
 			<div class="body-content">
-$bodyWithHeader
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+--> 
+<section> 
+ <div class="page-header">
+  <h2 id="Helix_Tutorial:_Participant"><a href="./Tutorial.html">Helix Tutorial</a>: Participant</h2>
+ </div> 
+ <p>In this chapter, we'll learn how to implement a <b>Participant</b>, which is a primary functional component of a distributed system.</p> 
+ <section> 
+  <h3 id="Start_a_Connection">Start a Connection</h3> 
+  <p>The Helix manager is a common component that connects each system component with the controller.</p> 
+  <p>It requires the following parameters:</p> 
+  <ul> 
+   <li>clusterName: A logical name to represent the group of nodes</li> 
+   <li>instanceName: A logical name of the process creating the manager instance. Generally this is host:port</li> 
+   <li>instanceType: Type of the process. This can be one of the following types, in this case, use PARTICIPANT 
+    <ul> 
+     <li>CONTROLLER: Process that controls the cluster, any number of controllers can be started but only one will be active at any given time</li> 
+     <li>PARTICIPANT: Process that performs the actual task in the distributed system</li> 
+     <li>SPECTATOR: Process that observes the changes in the cluster</li> 
+     <li>ADMIN: To carry out system admin actions</li> 
+    </ul> </li> 
+   <li>zkConnectString: Connection string to ZooKeeper. This is of the form host1:port1,host2:port2,host3:port3</li> 
+  </ul> 
+  <p>After the Helix manager instance is created, the only thing that needs to be registered is the state model factory. The methods of the state model will be called when controller sends transitions to the participant. In this example, we'll use the OnlineOffline factory. Other options include:</p> 
+  <ul> 
+   <li>MasterSlaveStateModelFactory</li> 
+   <li>LeaderStandbyStateModelFactory</li> 
+   <li>BootstrapHandler</li> 
+  </ul> 
+  <div class="source"> 
+   <pre><code>manager = HelixManagerFactory.getZKHelixManager(clusterName,
+                                                instanceName,
+                                                InstanceType.PARTICIPANT,
+                                                zkConnectString);
+StateMachineEngine stateMach = manager.getStateMachineEngine();
+
+//create a stateModelFactory that returns a statemodel object for each partition.
+stateModelFactory = new OnlineOfflineStateModelFactory();
+stateMach.registerStateModelFactory(stateModelType, stateModelFactory);
+manager.connect();
+</code></pre> 
+  </div> 
+ </section> 
+ <section> 
+  <h3 id="Example_State_Model_Factory">Example State Model Factory</h3> 
+  <p>Helix doesn't know what it means to change from OFFLINE--&gt;ONLINE or ONLINE--&gt;OFFLINE. The following code snippet shows where you insert your system logic for these two state transitions.</p> 
+  <div class="source"> 
+   <pre><code>public class OnlineOfflineStateModelFactory extends
+    StateModelFactory&lt;StateModel&gt; {
+  @Override
+  public StateModel createNewStateModel(String stateUnitKey) {
+    OnlineOfflineStateModel stateModel = new OnlineOfflineStateModel();
+    return stateModel;
+  }
+  @StateModelInfo(states = "{'OFFLINE','ONLINE'}", initialState = "OFFINE")
+  public static class OnlineOfflineStateModel extends StateModel {
+    @Transition(from = "OFFLINE", to = "ONLINE")
+    public void onBecomeOnlineFromOffline(Message message,
+        NotificationContext context) {
+      System.out.println("OnlineOfflineStateModel.onBecomeOnlineFromOffline()");
+
+      ////////////////////////////////////////////////////////////////////////////////////////////////
+      // Application logic to handle transition                                                     //
+      // For example, you might start a service, run initialization, etc                            //
+      ////////////////////////////////////////////////////////////////////////////////////////////////
+    }
+
+    @Transition(from = "ONLINE", to = "OFFLINE")
+    public void onBecomeOfflineFromOnline(Message message,
+        NotificationContext context) {
+      System.out.println("OnlineOfflineStateModel.onBecomeOfflineFromOnline()");
+
+      ////////////////////////////////////////////////////////////////////////////////////////////////
+      // Application logic to handle transition                                                     //
+      // For example, you might shutdown a service, log this event, or change monitoring settings   //
+      ////////////////////////////////////////////////////////////////////////////////////////////////
+    }
+  }
+}
+</code></pre> 
+  </div> 
+ </section> 
+</section>
 			</div>
 		</div>
 	</div>
 	</div>
 
 	</div><!-- /container -->
-	
+
 	<!-- Footer
 	================================================== -->
 	<footer class="well">
 		<div class="container">
 			<div class="row">
-				<div class="span9 bottom-nav">
+				<div class="span3 bottom-nav">
 					<ul class="nav nav-list">
 						<li class="nav-header">Get Helix</li>
-						<li class="active">
-							<a href="#" title="Download">Download </a>
+						<li >
+							<a href="download.html" title="Download">Download</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Building">Building </a>
+						<li >
+							<a href="Building.html" title="Building">Building</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Release Notes">Release Notes </a>
+						<li >
+							<a href="releasenotes/release-0.9.9.html" title="Release Notes">Release Notes</a>
 						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
 						<li class="nav-header">Hands-On</li>
-						<li class="active">
-							<a href="#" title="Quick Start">Quick Start </a>
+						<li >
+							<a href="Quickstart.html" title="Quick Start">Quick Start</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Tutorial">Tutorial </a>
+						<li >
+							<a href="Tutorial.html" title="Tutorial">Tutorial</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Javadocs">Javadocs </a>
+						<li >
+							<a href="../javadocs/0.9.9" title="Javadocs">Javadocs</a>
 						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
 						<li class="nav-header">Recipes</li>
-						<li class="active">
-							<a href="#" title="Distributed lock manager">Distributed lock manager </a>
+						<li >
+							<a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a>
+						<li >
+							<a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Rsync replicated file store">Rsync replicated file store </a>
+						<li >
+							<a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Service discovery">Service discovery </a>
+						<li >
+							<a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Distributed task DAG execution">Distributed task DAG execution </a>
+						<li >
+							<a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a>
 						</li>
 					</ul>
 				</div>
 			</div>
 		</div>
 	</footer>
-		
+
 	<div class="container subfooter">
 		<div class="row">
 			<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="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
-					</div>
+				<p class="copyright">Copyright &copy;2023 <a href="http://www.apache.org">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> 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/0.9.9-docs/privacy-policy.html">Privacy Policy</a>
+      </div>
+			</div>
 		</div>
 	</div>
 
 	<!-- Le javascript
 	================================================== -->
 	<!-- Placed at the end of the document so the pages load faster -->
+	<script src="./js/jquery.min.js"></script>
 
-	<!-- Fallback jQuery loading from Google CDN:
-	     http://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go -->
-	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
-	<script type="text/javascript">
-		if (typeof jQuery == 'undefined')
-		{
-			document.write(unescape("%3Cscript src='./js/jquery-1.8.3.min.js' type='text/javascript'%3E%3C/script%3E"));
-		}
-	</script>
-	
-	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>
-	<script src="./js/lightbox.js"></script>
-	<script src="./js/jquery.smooth-scroll.min.js"></script>
-	<!-- back button support for smooth scroll -->
-	<script src="./js/jquery.ba-bbq.min.js"></script>
+	<script src="./js/bootstrap.min.js"></script>
+	<script src="./js/lightbox.min.js"></script>
+	<script src="./js/reflow-scroll.js"></script>
 
 	<script src="./js/reflow-skin.js"></script>
-	
+
 	</body>
 </html>
\ No newline at end of file

Modified: helix/site-content/0.9.9-docs/tutorial_propstore.html
URL: http://svn.apache.org/viewvc/helix/site-content/0.9.9-docs/tutorial_propstore.html?rev=1909461&r1=1909460&r2=1909461&view=diff
==============================================================================
--- helix/site-content/0.9.9-docs/tutorial_propstore.html (original)
+++ helix/site-content/0.9.9-docs/tutorial_propstore.html Thu Apr 27 23:08:36 2023
@@ -1,8 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-15
- Rendered using Maven Reflow Skin 1.0.0 (http://andriusvelykis.github.com/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2023-04-27  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -13,61 +18,84 @@
 		<meta name="description" content="" />
 		<meta http-equiv="content-language" content="en" />
 
-		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap.min.css" rel="stylesheet" />
-		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css" rel="stylesheet" />
+		<link href="./css/bootstrap.min.css" rel="stylesheet" />
+		<link href="./css/bootstrap-responsive.min.css" rel="stylesheet" />
 		<link href="./css/docs.css" rel="stylesheet" />
 		<link href="./css/reflow-skin.css" rel="stylesheet" />
-		
-		
+
+
 		<link href="./css/lightbox.css" rel="stylesheet" />
-		
+
 		<link href="./css/site.css" rel="stylesheet" />
 		<link href="./css/print.css" rel="stylesheet" media="print" />
-		
+
 		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
 		<!--[if lt IE 9]>
-			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+			<script src="./js/html5.js"></script>
 		<![endif]-->
-		
-	</head>
 
-	<body class="page-$config.fileId project-$config.projectId" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+
+
+
+    
+<!-- 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_propstore project-099-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">
-					<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 					</a>
-					<div class="nav-collapse">
+					<a class="brand" href="..">Apache Helix</a>
+					<div class="nav-collapse collapse" id="top-nav-collapse">
 						<ul class="nav pull-right">
-							<li class="active"><a href="" title="Helix 0.9.9">Helix 0.9.9 </a></li>
-							<li class="dropdown active">
+							<li ><a href="index.html" title="Helix 0.9.9">Helix 0.9.9</a></li>
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Helix <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Download">Download </a></li>
-									<li class="active"><a href="" title="Building">Building </a></li>
-									<li class="active"><a href="" title="Release Notes">Release Notes </a></li>
+									<li ><a href="download.html" title="Download">Download</a></li>
+									<li ><a href="Building.html" title="Building">Building</a></li>
+									<li ><a href="releasenotes/release-0.9.9.html" title="Release Notes">Release Notes</a></li>
 								</ul>
 							</li>
-							<li class="dropdown active">
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hands-On <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Quick Start">Quick Start </a></li>
-									<li class="active"><a href="" title="Tutorial">Tutorial </a></li>
-									<li class="active"><a href="" title="Javadocs">Javadocs </a></li>
+									<li ><a href="Quickstart.html" title="Quick Start">Quick Start</a></li>
+									<li ><a href="Tutorial.html" title="Tutorial">Tutorial</a></li>
+									<li ><a href="../javadocs/0.9.9" title="Javadocs">Javadocs</a></li>
 								</ul>
 							</li>
-							<li class="dropdown active">
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Recipes <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Distributed lock manager">Distributed lock manager </a></li>
-									<li class="active"><a href="" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a></li>
-									<li class="active"><a href="" title="Rsync replicated file store">Rsync replicated file store </a></li>
-									<li class="active"><a href="" title="Service discovery">Service discovery </a></li>
-									<li class="active"><a href="" title="Distributed task DAG execution">Distributed task DAG execution </a></li>
+									<li ><a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a></li>
+									<li ><a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a></li>
+									<li ><a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a></li>
+									<li ><a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a></li>
+									<li ><a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a></li>
 								</ul>
 							</li>
 						</ul>
@@ -75,30 +103,34 @@
 				</div>
 			</div>
 		</div>
-		
+
 	<div class="container">
-	
+
 	<!-- Masthead
 	================================================== -->
-	<header class="jumbotron subhead">
+
+	<header>
+	<div class="jumbotron subhead">
 		<div class="row" id="banner">
 			<div class="span12">
 				<div class="pull-left">
-					<a href="" id="bannerLeft"><img src="" alt='"''"' /></a>
+					<a href="http://helix.apache.org/" id="bannerLeft"><img src="../images/helix-logo.jpg" alt='"''"' /></a>
+					<p class="lead">A cluster management framework for partitioned and replicated distributed resources</p>
 				</div>
 				<div class="pull-right">
-					<a href="http://www.apache.org/" id="bannerRight"><img src="" alt='"''"' /></a>
+					<a href="http://www.apache.org/" id="bannerRight"><img src="../images/feather_small.gif" alt='"''"' /></a>
 				</div>
 			</div>
 		</div>
+	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="" title="Apache Helix">Apache Helix </a></li>
+				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
 				<li class="divider">/</li>
-				<li><a href="" title="Release 0.9.9">Release 0.9.9 </a></li>
+				<li><a href="./" title="Release 0.9.9">Release 0.9.9</a></li>
 				<li class="divider">/</li>
 				<li>Tutorial - Application Property Store</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-04-15</li>
+				<li class="publishDate version-date pull-right">Last Published: 2023-04-27</li>
 			</ul>
 		</div>
 	</header>
@@ -107,94 +139,124 @@
 	<div class="row">
 		<div class="span12">
 			<div class="body-content">
-$bodyWithHeader
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+--> 
+<section> 
+ <div class="page-header">
+  <h2 id="Helix_Tutorial:_Application_Property_Store"><a href="./Tutorial.html">Helix Tutorial</a>: Application Property Store</h2>
+ </div> 
+ <p>In this chapter, we'll learn how to use the application property store.</p> 
+ <section> 
+  <h3 id="Property_Store">Property Store</h3> 
+  <p>It is common that an application needs support for distributed, shared data structures. Helix uses ZooKeeper to store the application data and hence provides notifications when the data changes.</p> 
+  <p>While you could use ZooKeeper directly, Helix supports caching the data with a write-through cache. This is far more efficient than reading from ZooKeeper for every access.</p> 
+  <p>See <a class="externalLink" href="http://helix.apache.org/javadocs/0.9.9/reference/org/apache/helix/store/package-summary.html">HelixManager.getHelixPropertyStore</a> for details.</p> 
+ </section> 
+</section>
 			</div>
 		</div>
 	</div>
 	</div>
 
 	</div><!-- /container -->
-	
+
 	<!-- Footer
 	================================================== -->
 	<footer class="well">
 		<div class="container">
 			<div class="row">
-				<div class="span9 bottom-nav">
+				<div class="span3 bottom-nav">
 					<ul class="nav nav-list">
 						<li class="nav-header">Get Helix</li>
-						<li class="active">
-							<a href="#" title="Download">Download </a>
+						<li >
+							<a href="download.html" title="Download">Download</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Building">Building </a>
+						<li >
+							<a href="Building.html" title="Building">Building</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Release Notes">Release Notes </a>
+						<li >
+							<a href="releasenotes/release-0.9.9.html" title="Release Notes">Release Notes</a>
 						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
 						<li class="nav-header">Hands-On</li>
-						<li class="active">
-							<a href="#" title="Quick Start">Quick Start </a>
+						<li >
+							<a href="Quickstart.html" title="Quick Start">Quick Start</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Tutorial">Tutorial </a>
+						<li >
+							<a href="Tutorial.html" title="Tutorial">Tutorial</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Javadocs">Javadocs </a>
+						<li >
+							<a href="../javadocs/0.9.9" title="Javadocs">Javadocs</a>
 						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
 						<li class="nav-header">Recipes</li>
-						<li class="active">
-							<a href="#" title="Distributed lock manager">Distributed lock manager </a>
+						<li >
+							<a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a>
+						<li >
+							<a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Rsync replicated file store">Rsync replicated file store </a>
+						<li >
+							<a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Service discovery">Service discovery </a>
+						<li >
+							<a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Distributed task DAG execution">Distributed task DAG execution </a>
+						<li >
+							<a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a>
 						</li>
 					</ul>
 				</div>
 			</div>
 		</div>
 	</footer>
-		
+
 	<div class="container subfooter">
 		<div class="row">
 			<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="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
-					</div>
+				<p class="copyright">Copyright &copy;2023 <a href="http://www.apache.org">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> 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/0.9.9-docs/privacy-policy.html">Privacy Policy</a>
+      </div>
+			</div>
 		</div>
 	</div>
 
 	<!-- Le javascript
 	================================================== -->
 	<!-- Placed at the end of the document so the pages load faster -->
+	<script src="./js/jquery.min.js"></script>
 
-	<!-- Fallback jQuery loading from Google CDN:
-	     http://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go -->
-	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
-	<script type="text/javascript">
-		if (typeof jQuery == 'undefined')
-		{
-			document.write(unescape("%3Cscript src='./js/jquery-1.8.3.min.js' type='text/javascript'%3E%3C/script%3E"));
-		}
-	</script>
-	
-	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>
-	<script src="./js/lightbox.js"></script>
-	<script src="./js/jquery.smooth-scroll.min.js"></script>
-	<!-- back button support for smooth scroll -->
-	<script src="./js/jquery.ba-bbq.min.js"></script>
+	<script src="./js/bootstrap.min.js"></script>
+	<script src="./js/lightbox.min.js"></script>
+	<script src="./js/reflow-scroll.js"></script>
 
 	<script src="./js/reflow-skin.js"></script>
-	
+
 	</body>
 </html>
\ No newline at end of file

Modified: helix/site-content/0.9.9-docs/tutorial_rebalance.html
URL: http://svn.apache.org/viewvc/helix/site-content/0.9.9-docs/tutorial_rebalance.html?rev=1909461&r1=1909460&r2=1909461&view=diff
==============================================================================
--- helix/site-content/0.9.9-docs/tutorial_rebalance.html (original)
+++ helix/site-content/0.9.9-docs/tutorial_rebalance.html Thu Apr 27 23:08:36 2023
@@ -7,7 +7,7 @@
 
 
 <!--
- Generated by Apache Maven Doxia at 2022-05-12  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2023-04-27  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -125,14 +125,12 @@
 	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="http://helix.apache.org/" title="Apache Helix" class="externalLink">Apache Helix</a></li>
-				<li class="divider">/</li>
 				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
 				<li class="divider">/</li>
 				<li><a href="./" title="Release 0.9.9">Release 0.9.9</a></li>
 				<li class="divider">/</li>
 				<li>Tutorial - Rebalancing Algorithms</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-05-12</li>
+				<li class="publishDate version-date pull-right">Last Published: 2023-04-27</li>
 			</ul>
 		</div>
 	</header>
@@ -375,7 +373,7 @@ under the License.
 		<div class="row">
 			<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 class="copyright">Copyright &copy;2023 <a href="http://www.apache.org">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> 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>

Modified: helix/site-content/0.9.9-docs/tutorial_rest_service.html
URL: http://svn.apache.org/viewvc/helix/site-content/0.9.9-docs/tutorial_rest_service.html?rev=1909461&r1=1909460&r2=1909461&view=diff
==============================================================================
--- helix/site-content/0.9.9-docs/tutorial_rest_service.html (original)
+++ helix/site-content/0.9.9-docs/tutorial_rest_service.html Thu Apr 27 23:08:36 2023
@@ -7,7 +7,7 @@
 
 
 <!--
- Generated by Apache Maven Doxia at 2022-05-12  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2023-04-27  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -125,14 +125,12 @@
 	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="http://helix.apache.org/" title="Apache Helix" class="externalLink">Apache Helix</a></li>
-				<li class="divider">/</li>
 				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
 				<li class="divider">/</li>
 				<li><a href="./" title="Release 0.9.9">Release 0.9.9</a></li>
 				<li class="divider">/</li>
 				<li>Tutorial - REST Service 2.0</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-05-12</li>
+				<li class="publishDate version-date pull-right">Last Published: 2023-04-27</li>
 			</ul>
 		</div>
 	</header>
@@ -1209,7 +1207,7 @@ $curl -X POST -H "Content-Type: applicat
 		<div class="row">
 			<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 class="copyright">Copyright &copy;2023 <a href="http://www.apache.org">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> 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>

Modified: helix/site-content/0.9.9-docs/tutorial_spectator.html
URL: http://svn.apache.org/viewvc/helix/site-content/0.9.9-docs/tutorial_spectator.html?rev=1909461&r1=1909460&r2=1909461&view=diff
==============================================================================
--- helix/site-content/0.9.9-docs/tutorial_spectator.html (original)
+++ helix/site-content/0.9.9-docs/tutorial_spectator.html Thu Apr 27 23:08:36 2023
@@ -1,8 +1,13 @@
 
 <!DOCTYPE html>
+
+
+
+
+
+
 <!--
- Generated by Apache Maven Doxia at 2022-04-15
- Rendered using Maven Reflow Skin 1.0.0 (http://andriusvelykis.github.com/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2023-04-27  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -13,61 +18,84 @@
 		<meta name="description" content="" />
 		<meta http-equiv="content-language" content="en" />
 
-		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap.min.css" rel="stylesheet" />
-		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css" rel="stylesheet" />
+		<link href="./css/bootstrap.min.css" rel="stylesheet" />
+		<link href="./css/bootstrap-responsive.min.css" rel="stylesheet" />
 		<link href="./css/docs.css" rel="stylesheet" />
 		<link href="./css/reflow-skin.css" rel="stylesheet" />
-		
-		
+
+
 		<link href="./css/lightbox.css" rel="stylesheet" />
-		
+
 		<link href="./css/site.css" rel="stylesheet" />
 		<link href="./css/print.css" rel="stylesheet" media="print" />
-		
+
 		<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
 		<!--[if lt IE 9]>
-			<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+			<script src="./js/html5.js"></script>
 		<![endif]-->
-		
-	</head>
 
-	<body class="page-$config.fileId project-$config.projectId" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
 
+
+
+
+    
+<!-- 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_spectator project-099-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">
-					<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
+					<a class="btn btn-navbar" data-toggle="collapse" data-target="#top-nav-collapse">
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 						<span class="icon-bar"></span>
 					</a>
-					<div class="nav-collapse">
+					<a class="brand" href="..">Apache Helix</a>
+					<div class="nav-collapse collapse" id="top-nav-collapse">
 						<ul class="nav pull-right">
-							<li class="active"><a href="" title="Helix 0.9.9">Helix 0.9.9 </a></li>
-							<li class="dropdown active">
+							<li ><a href="index.html" title="Helix 0.9.9">Helix 0.9.9</a></li>
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Helix <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Download">Download </a></li>
-									<li class="active"><a href="" title="Building">Building </a></li>
-									<li class="active"><a href="" title="Release Notes">Release Notes </a></li>
+									<li ><a href="download.html" title="Download">Download</a></li>
+									<li ><a href="Building.html" title="Building">Building</a></li>
+									<li ><a href="releasenotes/release-0.9.9.html" title="Release Notes">Release Notes</a></li>
 								</ul>
 							</li>
-							<li class="dropdown active">
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Hands-On <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Quick Start">Quick Start </a></li>
-									<li class="active"><a href="" title="Tutorial">Tutorial </a></li>
-									<li class="active"><a href="" title="Javadocs">Javadocs </a></li>
+									<li ><a href="Quickstart.html" title="Quick Start">Quick Start</a></li>
+									<li ><a href="Tutorial.html" title="Tutorial">Tutorial</a></li>
+									<li ><a href="../javadocs/0.9.9" title="Javadocs">Javadocs</a></li>
 								</ul>
 							</li>
-							<li class="dropdown active">
+							<li class="dropdown">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Recipes <b class="caret"></b></a>
 								<ul class="dropdown-menu">
-									<li class="active"><a href="" title="Distributed lock manager">Distributed lock manager </a></li>
-									<li class="active"><a href="" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a></li>
-									<li class="active"><a href="" title="Rsync replicated file store">Rsync replicated file store </a></li>
-									<li class="active"><a href="" title="Service discovery">Service discovery </a></li>
-									<li class="active"><a href="" title="Distributed task DAG execution">Distributed task DAG execution </a></li>
+									<li ><a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a></li>
+									<li ><a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a></li>
+									<li ><a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a></li>
+									<li ><a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a></li>
+									<li ><a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a></li>
 								</ul>
 							</li>
 						</ul>
@@ -75,30 +103,34 @@
 				</div>
 			</div>
 		</div>
-		
+
 	<div class="container">
-	
+
 	<!-- Masthead
 	================================================== -->
-	<header class="jumbotron subhead">
+
+	<header>
+	<div class="jumbotron subhead">
 		<div class="row" id="banner">
 			<div class="span12">
 				<div class="pull-left">
-					<a href="" id="bannerLeft"><img src="" alt='"''"' /></a>
+					<a href="http://helix.apache.org/" id="bannerLeft"><img src="../images/helix-logo.jpg" alt='"''"' /></a>
+					<p class="lead">A cluster management framework for partitioned and replicated distributed resources</p>
 				</div>
 				<div class="pull-right">
-					<a href="http://www.apache.org/" id="bannerRight"><img src="" alt='"''"' /></a>
+					<a href="http://www.apache.org/" id="bannerRight"><img src="../images/feather_small.gif" alt='"''"' /></a>
 				</div>
 			</div>
 		</div>
+	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="" title="Apache Helix">Apache Helix </a></li>
+				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
 				<li class="divider">/</li>
-				<li><a href="" title="Release 0.9.9">Release 0.9.9 </a></li>
+				<li><a href="./" title="Release 0.9.9">Release 0.9.9</a></li>
 				<li class="divider">/</li>
 				<li>Tutorial - Spectator</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-04-15</li>
+				<li class="publishDate version-date pull-right">Last Published: 2023-04-27</li>
 			</ul>
 		</div>
 	</header>
@@ -107,94 +139,165 @@
 	<div class="row">
 		<div class="span12">
 			<div class="body-content">
-$bodyWithHeader
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+--> 
+<section> 
+ <div class="page-header">
+  <h2 id="Helix_Tutorial:_Spectator"><a href="./Tutorial.html">Helix Tutorial</a>: Spectator</h2>
+ </div> 
+ <p>Next, we'll learn how to implement a <b>spectator</b>. Typically, a spectator needs to react to changes within the distributed system. Examples: a client that needs to know where to send a request, a topic consumer in a consumer group. The spectator is automatically informed of changes in the <i>external state</i> of the cluster, but it does not have to add any code to keep track of other components in the system.</p> 
+ <section> 
+  <h3 id="Start_a_Connection">Start a Connection</h3> 
+  <p>Same as for a participant, The Helix manager is the common component that connects each system component with the cluster.</p> 
+  <p>It requires the following parameters:</p> 
+  <ul> 
+   <li>clusterName: A logical name to represent the group of nodes</li> 
+   <li>instanceName: A logical name of the process creating the manager instance. Generally this is host:port</li> 
+   <li>instanceType: Type of the process. This can be one of the following types, in this case, use SPECTATOR: 
+    <ul> 
+     <li>CONTROLLER: Process that controls the cluster, any number of controllers can be started but only one will be active at any given time</li> 
+     <li>PARTICIPANT: Process that performs the actual task in the distributed system</li> 
+     <li>SPECTATOR: Process that observes the changes in the cluster</li> 
+     <li>ADMIN: To carry out system admin actions</li> 
+    </ul> </li> 
+   <li>zkConnectString: Connection string to ZooKeeper. This is of the form host1:port1,host2:port2,host3:port3</li> 
+  </ul> 
+  <p>After the Helix manager instance is created, the only thing that needs to be registered is the listener. When the ExternalView changes, the listener is notified.</p> 
+  <p>A spectator observes the cluster and is notified when the state of the system changes. Helix consolidates the state of entire cluster in one Znode called ExternalView. Helix provides a default implementation RoutingTableProvider that caches the cluster state and updates it when there is a change in the cluster.</p> 
+  <div class="source"> 
+   <pre><code>manager = HelixManagerFactory.getZKHelixManager(clusterName,
+                                                instanceName,
+                                                InstanceType.SPECTATOR,
+                                                zkConnectString);
+manager.connect();
+RoutingTableProvider routingTableProvider = new RoutingTableProvider();
+manager.addExternalViewChangeListener(routingTableProvider);
+</code></pre> 
+  </div> 
+ </section> 
+ <section> 
+  <h3 id="Spectator_Code">Spectator Code</h3> 
+  <p>In the following code snippet, the application sends the request to a valid instance by interrogating the external view. Suppose the desired resource for this request is in the partition myDB_1.</p> 
+  <div class="source"> 
+   <pre><code>// instances = routingTableProvider.getInstances(, "PARTITION_NAME", "PARTITION_STATE");
+instances = routingTableProvider.getInstances("myDB", "myDB_1", "ONLINE");
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+// Application-specific code to send a request to one of the instances                        //
+////////////////////////////////////////////////////////////////////////////////////////////////
+
+theInstance = instances.get(0);  // should choose an instance and throw an exception if none are available
+result = theInstance.sendRequest(yourApplicationRequest, responseObject);
+
+</code></pre> 
+  </div> 
+  <p>When the external view changes, the application needs to react by sending requests to a different instance.</p> 
+ </section> 
+</section>
 			</div>
 		</div>
 	</div>
 	</div>
 
 	</div><!-- /container -->
-	
+
 	<!-- Footer
 	================================================== -->
 	<footer class="well">
 		<div class="container">
 			<div class="row">
-				<div class="span9 bottom-nav">
+				<div class="span3 bottom-nav">
 					<ul class="nav nav-list">
 						<li class="nav-header">Get Helix</li>
-						<li class="active">
-							<a href="#" title="Download">Download </a>
+						<li >
+							<a href="download.html" title="Download">Download</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Building">Building </a>
+						<li >
+							<a href="Building.html" title="Building">Building</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Release Notes">Release Notes </a>
+						<li >
+							<a href="releasenotes/release-0.9.9.html" title="Release Notes">Release Notes</a>
 						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
 						<li class="nav-header">Hands-On</li>
-						<li class="active">
-							<a href="#" title="Quick Start">Quick Start </a>
+						<li >
+							<a href="Quickstart.html" title="Quick Start">Quick Start</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Tutorial">Tutorial </a>
+						<li >
+							<a href="Tutorial.html" title="Tutorial">Tutorial</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Javadocs">Javadocs </a>
+						<li >
+							<a href="../javadocs/0.9.9" title="Javadocs">Javadocs</a>
 						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
 						<li class="nav-header">Recipes</li>
-						<li class="active">
-							<a href="#" title="Distributed lock manager">Distributed lock manager </a>
+						<li >
+							<a href="recipes/lock_manager.html" title="Distributed lock manager">Distributed lock manager</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Rabbit MQ consumer group">Rabbit MQ consumer group </a>
+						<li >
+							<a href="recipes/rabbitmq_consumer_group.html" title="Rabbit MQ consumer group">Rabbit MQ consumer group</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Rsync replicated file store">Rsync replicated file store </a>
+						<li >
+							<a href="recipes/rsync_replicated_file_store.html" title="Rsync replicated file store">Rsync replicated file store</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Service discovery">Service discovery </a>
+						<li >
+							<a href="recipes/service_discovery.html" title="Service discovery">Service discovery</a>
 						</li>
-						<li class="active">
-							<a href="#" title="Distributed task DAG execution">Distributed task DAG execution </a>
+						<li >
+							<a href="recipes/task_dag_execution.html" title="Distributed task DAG execution">Distributed task DAG execution</a>
 						</li>
 					</ul>
 				</div>
 			</div>
 		</div>
 	</footer>
-		
+
 	<div class="container subfooter">
 		<div class="row">
 			<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="http://github.com/andriusvelykis/reflow-maven-skin" title="Reflow Maven skin">Reflow Maven skin</a> by <a href="http://andrius.velykis.lt" target="_blank" title="Andrius Velykis">Andrius Velykis</a>.</p>
-					</div>
+				<p class="copyright">Copyright &copy;2023 <a href="http://www.apache.org">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> 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/0.9.9-docs/privacy-policy.html">Privacy Policy</a>
+      </div>
+			</div>
 		</div>
 	</div>
 
 	<!-- Le javascript
 	================================================== -->
 	<!-- Placed at the end of the document so the pages load faster -->
+	<script src="./js/jquery.min.js"></script>
 
-	<!-- Fallback jQuery loading from Google CDN:
-	     http://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go -->
-	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
-	<script type="text/javascript">
-		if (typeof jQuery == 'undefined')
-		{
-			document.write(unescape("%3Cscript src='./js/jquery-1.8.3.min.js' type='text/javascript'%3E%3C/script%3E"));
-		}
-	</script>
-	
-	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>
-	<script src="./js/lightbox.js"></script>
-	<script src="./js/jquery.smooth-scroll.min.js"></script>
-	<!-- back button support for smooth scroll -->
-	<script src="./js/jquery.ba-bbq.min.js"></script>
+	<script src="./js/bootstrap.min.js"></script>
+	<script src="./js/lightbox.min.js"></script>
+	<script src="./js/reflow-scroll.js"></script>
 
 	<script src="./js/reflow-skin.js"></script>
-	
+
 	</body>
 </html>
\ No newline at end of file

Modified: helix/site-content/0.9.9-docs/tutorial_state.html
URL: http://svn.apache.org/viewvc/helix/site-content/0.9.9-docs/tutorial_state.html?rev=1909461&r1=1909460&r2=1909461&view=diff
==============================================================================
--- helix/site-content/0.9.9-docs/tutorial_state.html (original)
+++ helix/site-content/0.9.9-docs/tutorial_state.html Thu Apr 27 23:08:36 2023
@@ -7,7 +7,7 @@
 
 
 <!--
- Generated by Apache Maven Doxia at 2022-05-12  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
+ Generated by Apache Maven Doxia at 2023-04-27  Rendered using Reflow Maven Skin 2.0.0 (https://olamy.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
 
@@ -125,14 +125,12 @@
 	</div>
 		<div>
 			<ul class="breadcrumb">
-				<li><a href="http://helix.apache.org/" title="Apache Helix" class="externalLink">Apache Helix</a></li>
-				<li class="divider">/</li>
 				<li><a href="../" title="Apache Helix">Apache Helix</a></li>
 				<li class="divider">/</li>
 				<li><a href="./" title="Release 0.9.9">Release 0.9.9</a></li>
 				<li class="divider">/</li>
 				<li>Tutorial - State Machine Configuration</li>
-				<li class="publishDate version-date pull-right">Last Published: 2022-05-12</li>
+				<li class="publishDate version-date pull-right">Last Published: 2023-04-27</li>
 			</ul>
 		</div>
 	</header>
@@ -341,7 +339,7 @@ under the License.
 		<div class="row">
 			<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 class="copyright">Copyright &copy;2023 <a href="http://www.apache.org">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> 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>