You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ka...@apache.org on 2013/10/17 23:43:20 UTC
svn commit: r1533269 [24/27] - in /incubator/helix/site-content: ./
apidocs/assets/ apidocs/reference/ apidocs/reference/org/apache/helix/
apidocs/reference/org/apache/helix/agent/
apidocs/reference/org/apache/helix/alerts/ apidocs/reference/org/apache...
Modified: incubator/helix/site-content/xref/org/apache/helix/manager/zk/ZKHelixAdmin.html
URL: http://svn.apache.org/viewvc/incubator/helix/site-content/xref/org/apache/helix/manager/zk/ZKHelixAdmin.html?rev=1533269&r1=1533268&r2=1533269&view=diff
==============================================================================
--- incubator/helix/site-content/xref/org/apache/helix/manager/zk/ZKHelixAdmin.html (original)
+++ incubator/helix/site-content/xref/org/apache/helix/manager/zk/ZKHelixAdmin.html Thu Oct 17 21:43:06 2013
@@ -625,628 +625,624 @@
<a class="jxr_linenumber" name="615" href="#615">615</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
<a class="jxr_linenumber" name="616" href="#616">616</a> }
<a class="jxr_linenumber" name="617" href="#617">617</a>
-<a class="jxr_linenumber" name="618" href="#618">618</a> <a href="../../../../../org/apache/helix/model/IdealState.html">RebalanceMode</a> mode = RebalanceMode.SEMI_AUTO;
-<a class="jxr_linenumber" name="619" href="#619">619</a> <strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="620" href="#620">620</a> mode = RebalanceMode.valueOf(rebalancerMode);
-<a class="jxr_linenumber" name="621" href="#621">621</a> } <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="622" href="#622">622</a> logger.error(<span class="jxr_string">""</span>, e);
-<a class="jxr_linenumber" name="623" href="#623">623</a> }
-<a class="jxr_linenumber" name="624" href="#624">624</a> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> idealState = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a>(resourceName);
-<a class="jxr_linenumber" name="625" href="#625">625</a> idealState.setNumPartitions(partitions);
-<a class="jxr_linenumber" name="626" href="#626">626</a> idealState.setStateModelDefRef(stateModelRef);
-<a class="jxr_linenumber" name="627" href="#627">627</a> idealState.setRebalanceMode(mode);
-<a class="jxr_linenumber" name="628" href="#628">628</a> idealState.setReplicas(<span class="jxr_string">""</span> + 0);
-<a class="jxr_linenumber" name="629" href="#629">629</a> idealState.setStateModelFactoryName(HelixConstants.DEFAULT_STATE_MODEL_FACTORY);
-<a class="jxr_linenumber" name="630" href="#630">630</a> <strong class="jxr_keyword">if</strong> (maxPartitionsPerInstance > 0 && maxPartitionsPerInstance < Integer.MAX_VALUE) {
-<a class="jxr_linenumber" name="631" href="#631">631</a> idealState.setMaxPartitionsPerInstance(maxPartitionsPerInstance);
-<a class="jxr_linenumber" name="632" href="#632">632</a> }
-<a class="jxr_linenumber" name="633" href="#633">633</a> <strong class="jxr_keyword">if</strong> (bucketSize > 0) {
-<a class="jxr_linenumber" name="634" href="#634">634</a> idealState.setBucketSize(bucketSize);
-<a class="jxr_linenumber" name="635" href="#635">635</a> }
-<a class="jxr_linenumber" name="636" href="#636">636</a> addResource(clusterName, resourceName, idealState);
-<a class="jxr_linenumber" name="637" href="#637">637</a> }
-<a class="jxr_linenumber" name="638" href="#638">638</a>
-<a class="jxr_linenumber" name="639" href="#639">639</a> @Override
-<a class="jxr_linenumber" name="640" href="#640">640</a> <strong class="jxr_keyword">public</strong> List<String> getClusters() {
-<a class="jxr_linenumber" name="641" href="#641">641</a> List<String> zkToplevelPathes = _zkClient.getChildren(<span class="jxr_string">"/"</span>);
-<a class="jxr_linenumber" name="642" href="#642">642</a> List<String> result = <strong class="jxr_keyword">new</strong> ArrayList<String>();
-<a class="jxr_linenumber" name="643" href="#643">643</a> <strong class="jxr_keyword">for</strong> (String pathName : zkToplevelPathes) {
-<a class="jxr_linenumber" name="644" href="#644">644</a> <strong class="jxr_keyword">if</strong> (ZKUtil.isClusterSetup(pathName, _zkClient)) {
-<a class="jxr_linenumber" name="645" href="#645">645</a> result.add(pathName);
-<a class="jxr_linenumber" name="646" href="#646">646</a> }
-<a class="jxr_linenumber" name="647" href="#647">647</a> }
-<a class="jxr_linenumber" name="648" href="#648">648</a> <strong class="jxr_keyword">return</strong> result;
-<a class="jxr_linenumber" name="649" href="#649">649</a> }
-<a class="jxr_linenumber" name="650" href="#650">650</a>
-<a class="jxr_linenumber" name="651" href="#651">651</a> @Override
-<a class="jxr_linenumber" name="652" href="#652">652</a> <strong class="jxr_keyword">public</strong> List<String> getResourcesInCluster(String clusterName) {
-<a class="jxr_linenumber" name="653" href="#653">653</a> <strong class="jxr_keyword">return</strong> _zkClient.getChildren(HelixUtil.getIdealStatePath(clusterName));
-<a class="jxr_linenumber" name="654" href="#654">654</a> }
-<a class="jxr_linenumber" name="655" href="#655">655</a>
-<a class="jxr_linenumber" name="656" href="#656">656</a> @Override
-<a class="jxr_linenumber" name="657" href="#657">657</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> getResourceIdealState(String clusterName, String resourceName) {
-<a class="jxr_linenumber" name="658" href="#658">658</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
-<a class="jxr_linenumber" name="659" href="#659">659</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
-<a class="jxr_linenumber" name="660" href="#660">660</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
-<a class="jxr_linenumber" name="661" href="#661">661</a>
-<a class="jxr_linenumber" name="662" href="#662">662</a> <strong class="jxr_keyword">return</strong> accessor.getProperty(keyBuilder.idealStates(resourceName));
-<a class="jxr_linenumber" name="663" href="#663">663</a> }
-<a class="jxr_linenumber" name="664" href="#664">664</a>
-<a class="jxr_linenumber" name="665" href="#665">665</a> @Override
-<a class="jxr_linenumber" name="666" href="#666">666</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setResourceIdealState(String clusterName, String resourceName, <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> idealState) {
-<a class="jxr_linenumber" name="667" href="#667">667</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
-<a class="jxr_linenumber" name="668" href="#668">668</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
-<a class="jxr_linenumber" name="669" href="#669">669</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
-<a class="jxr_linenumber" name="670" href="#670">670</a>
-<a class="jxr_linenumber" name="671" href="#671">671</a> accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
-<a class="jxr_linenumber" name="672" href="#672">672</a> }
-<a class="jxr_linenumber" name="673" href="#673">673</a>
-<a class="jxr_linenumber" name="674" href="#674">674</a> @Override
-<a class="jxr_linenumber" name="675" href="#675">675</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/model/ExternalView.html">ExternalView</a> getResourceExternalView(String clusterName, String resourceName) {
-<a class="jxr_linenumber" name="676" href="#676">676</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
-<a class="jxr_linenumber" name="677" href="#677">677</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
-<a class="jxr_linenumber" name="678" href="#678">678</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
-<a class="jxr_linenumber" name="679" href="#679">679</a> <strong class="jxr_keyword">return</strong> accessor.getProperty(keyBuilder.externalView(resourceName));
-<a class="jxr_linenumber" name="680" href="#680">680</a> }
-<a class="jxr_linenumber" name="681" href="#681">681</a>
-<a class="jxr_linenumber" name="682" href="#682">682</a> @Override
-<a class="jxr_linenumber" name="683" href="#683">683</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addStateModelDef(String clusterName, String stateModelDef,
-<a class="jxr_linenumber" name="684" href="#684">684</a> <a href="../../../../../org/apache/helix/model/StateModelDefinition.html">StateModelDefinition</a> stateModel) {
-<a class="jxr_linenumber" name="685" href="#685">685</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
-<a class="jxr_linenumber" name="686" href="#686">686</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
-<a class="jxr_linenumber" name="687" href="#687">687</a> }
-<a class="jxr_linenumber" name="688" href="#688">688</a> String stateModelDefPath = HelixUtil.getStateModelDefinitionPath(clusterName);
-<a class="jxr_linenumber" name="689" href="#689">689</a> String stateModelPath = stateModelDefPath + <span class="jxr_string">"/"</span> + stateModelDef;
-<a class="jxr_linenumber" name="690" href="#690">690</a> <strong class="jxr_keyword">if</strong> (_zkClient.exists(stateModelPath)) {
-<a class="jxr_linenumber" name="691" href="#691">691</a> logger.warn(<span class="jxr_string">"Skip the operation.State Model directory exists:"</span> + stateModelPath);
-<a class="jxr_linenumber" name="692" href="#692">692</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"State model path "</span> + stateModelPath + <span class="jxr_string">" already exists."</span>);
-<a class="jxr_linenumber" name="693" href="#693">693</a> }
-<a class="jxr_linenumber" name="694" href="#694">694</a>
-<a class="jxr_linenumber" name="695" href="#695">695</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
-<a class="jxr_linenumber" name="696" href="#696">696</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
-<a class="jxr_linenumber" name="697" href="#697">697</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
-<a class="jxr_linenumber" name="698" href="#698">698</a> accessor.setProperty(keyBuilder.stateModelDef(stateModel.getId()), stateModel);
-<a class="jxr_linenumber" name="699" href="#699">699</a> }
-<a class="jxr_linenumber" name="700" href="#700">700</a>
-<a class="jxr_linenumber" name="701" href="#701">701</a> @Override
-<a class="jxr_linenumber" name="702" href="#702">702</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> dropResource(String clusterName, String resourceName) {
-<a class="jxr_linenumber" name="703" href="#703">703</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
-<a class="jxr_linenumber" name="704" href="#704">704</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
-<a class="jxr_linenumber" name="705" href="#705">705</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
+<a class="jxr_linenumber" name="618" href="#618">618</a> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> idealState = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a>(resourceName);
+<a class="jxr_linenumber" name="619" href="#619">619</a> idealState.setNumPartitions(partitions);
+<a class="jxr_linenumber" name="620" href="#620">620</a> idealState.setStateModelDefRef(stateModelRef);
+<a class="jxr_linenumber" name="621" href="#621">621</a> <a href="../../../../../org/apache/helix/model/IdealState.html">RebalanceMode</a> mode =
+<a class="jxr_linenumber" name="622" href="#622">622</a> idealState.rebalanceModeFromString(rebalancerMode, RebalanceMode.SEMI_AUTO);
+<a class="jxr_linenumber" name="623" href="#623">623</a> idealState.setRebalanceMode(mode);
+<a class="jxr_linenumber" name="624" href="#624">624</a> idealState.setReplicas(<span class="jxr_string">""</span> + 0);
+<a class="jxr_linenumber" name="625" href="#625">625</a> idealState.setStateModelFactoryName(HelixConstants.DEFAULT_STATE_MODEL_FACTORY);
+<a class="jxr_linenumber" name="626" href="#626">626</a> <strong class="jxr_keyword">if</strong> (maxPartitionsPerInstance > 0 && maxPartitionsPerInstance < Integer.MAX_VALUE) {
+<a class="jxr_linenumber" name="627" href="#627">627</a> idealState.setMaxPartitionsPerInstance(maxPartitionsPerInstance);
+<a class="jxr_linenumber" name="628" href="#628">628</a> }
+<a class="jxr_linenumber" name="629" href="#629">629</a> <strong class="jxr_keyword">if</strong> (bucketSize > 0) {
+<a class="jxr_linenumber" name="630" href="#630">630</a> idealState.setBucketSize(bucketSize);
+<a class="jxr_linenumber" name="631" href="#631">631</a> }
+<a class="jxr_linenumber" name="632" href="#632">632</a> addResource(clusterName, resourceName, idealState);
+<a class="jxr_linenumber" name="633" href="#633">633</a> }
+<a class="jxr_linenumber" name="634" href="#634">634</a>
+<a class="jxr_linenumber" name="635" href="#635">635</a> @Override
+<a class="jxr_linenumber" name="636" href="#636">636</a> <strong class="jxr_keyword">public</strong> List<String> getClusters() {
+<a class="jxr_linenumber" name="637" href="#637">637</a> List<String> zkToplevelPathes = _zkClient.getChildren(<span class="jxr_string">"/"</span>);
+<a class="jxr_linenumber" name="638" href="#638">638</a> List<String> result = <strong class="jxr_keyword">new</strong> ArrayList<String>();
+<a class="jxr_linenumber" name="639" href="#639">639</a> <strong class="jxr_keyword">for</strong> (String pathName : zkToplevelPathes) {
+<a class="jxr_linenumber" name="640" href="#640">640</a> <strong class="jxr_keyword">if</strong> (ZKUtil.isClusterSetup(pathName, _zkClient)) {
+<a class="jxr_linenumber" name="641" href="#641">641</a> result.add(pathName);
+<a class="jxr_linenumber" name="642" href="#642">642</a> }
+<a class="jxr_linenumber" name="643" href="#643">643</a> }
+<a class="jxr_linenumber" name="644" href="#644">644</a> <strong class="jxr_keyword">return</strong> result;
+<a class="jxr_linenumber" name="645" href="#645">645</a> }
+<a class="jxr_linenumber" name="646" href="#646">646</a>
+<a class="jxr_linenumber" name="647" href="#647">647</a> @Override
+<a class="jxr_linenumber" name="648" href="#648">648</a> <strong class="jxr_keyword">public</strong> List<String> getResourcesInCluster(String clusterName) {
+<a class="jxr_linenumber" name="649" href="#649">649</a> <strong class="jxr_keyword">return</strong> _zkClient.getChildren(HelixUtil.getIdealStatePath(clusterName));
+<a class="jxr_linenumber" name="650" href="#650">650</a> }
+<a class="jxr_linenumber" name="651" href="#651">651</a>
+<a class="jxr_linenumber" name="652" href="#652">652</a> @Override
+<a class="jxr_linenumber" name="653" href="#653">653</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> getResourceIdealState(String clusterName, String resourceName) {
+<a class="jxr_linenumber" name="654" href="#654">654</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
+<a class="jxr_linenumber" name="655" href="#655">655</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
+<a class="jxr_linenumber" name="656" href="#656">656</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
+<a class="jxr_linenumber" name="657" href="#657">657</a>
+<a class="jxr_linenumber" name="658" href="#658">658</a> <strong class="jxr_keyword">return</strong> accessor.getProperty(keyBuilder.idealStates(resourceName));
+<a class="jxr_linenumber" name="659" href="#659">659</a> }
+<a class="jxr_linenumber" name="660" href="#660">660</a>
+<a class="jxr_linenumber" name="661" href="#661">661</a> @Override
+<a class="jxr_linenumber" name="662" href="#662">662</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setResourceIdealState(String clusterName, String resourceName, <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> idealState) {
+<a class="jxr_linenumber" name="663" href="#663">663</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
+<a class="jxr_linenumber" name="664" href="#664">664</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
+<a class="jxr_linenumber" name="665" href="#665">665</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
+<a class="jxr_linenumber" name="666" href="#666">666</a>
+<a class="jxr_linenumber" name="667" href="#667">667</a> accessor.setProperty(keyBuilder.idealStates(resourceName), idealState);
+<a class="jxr_linenumber" name="668" href="#668">668</a> }
+<a class="jxr_linenumber" name="669" href="#669">669</a>
+<a class="jxr_linenumber" name="670" href="#670">670</a> @Override
+<a class="jxr_linenumber" name="671" href="#671">671</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/model/ExternalView.html">ExternalView</a> getResourceExternalView(String clusterName, String resourceName) {
+<a class="jxr_linenumber" name="672" href="#672">672</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
+<a class="jxr_linenumber" name="673" href="#673">673</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
+<a class="jxr_linenumber" name="674" href="#674">674</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
+<a class="jxr_linenumber" name="675" href="#675">675</a> <strong class="jxr_keyword">return</strong> accessor.getProperty(keyBuilder.externalView(resourceName));
+<a class="jxr_linenumber" name="676" href="#676">676</a> }
+<a class="jxr_linenumber" name="677" href="#677">677</a>
+<a class="jxr_linenumber" name="678" href="#678">678</a> @Override
+<a class="jxr_linenumber" name="679" href="#679">679</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addStateModelDef(String clusterName, String stateModelDef,
+<a class="jxr_linenumber" name="680" href="#680">680</a> <a href="../../../../../org/apache/helix/model/StateModelDefinition.html">StateModelDefinition</a> stateModel) {
+<a class="jxr_linenumber" name="681" href="#681">681</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
+<a class="jxr_linenumber" name="682" href="#682">682</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
+<a class="jxr_linenumber" name="683" href="#683">683</a> }
+<a class="jxr_linenumber" name="684" href="#684">684</a> String stateModelDefPath = HelixUtil.getStateModelDefinitionPath(clusterName);
+<a class="jxr_linenumber" name="685" href="#685">685</a> String stateModelPath = stateModelDefPath + <span class="jxr_string">"/"</span> + stateModelDef;
+<a class="jxr_linenumber" name="686" href="#686">686</a> <strong class="jxr_keyword">if</strong> (_zkClient.exists(stateModelPath)) {
+<a class="jxr_linenumber" name="687" href="#687">687</a> logger.warn(<span class="jxr_string">"Skip the operation.State Model directory exists:"</span> + stateModelPath);
+<a class="jxr_linenumber" name="688" href="#688">688</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"State model path "</span> + stateModelPath + <span class="jxr_string">" already exists."</span>);
+<a class="jxr_linenumber" name="689" href="#689">689</a> }
+<a class="jxr_linenumber" name="690" href="#690">690</a>
+<a class="jxr_linenumber" name="691" href="#691">691</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
+<a class="jxr_linenumber" name="692" href="#692">692</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
+<a class="jxr_linenumber" name="693" href="#693">693</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
+<a class="jxr_linenumber" name="694" href="#694">694</a> accessor.setProperty(keyBuilder.stateModelDef(stateModel.getId()), stateModel);
+<a class="jxr_linenumber" name="695" href="#695">695</a> }
+<a class="jxr_linenumber" name="696" href="#696">696</a>
+<a class="jxr_linenumber" name="697" href="#697">697</a> @Override
+<a class="jxr_linenumber" name="698" href="#698">698</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> dropResource(String clusterName, String resourceName) {
+<a class="jxr_linenumber" name="699" href="#699">699</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
+<a class="jxr_linenumber" name="700" href="#700">700</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
+<a class="jxr_linenumber" name="701" href="#701">701</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
+<a class="jxr_linenumber" name="702" href="#702">702</a>
+<a class="jxr_linenumber" name="703" href="#703">703</a> accessor.removeProperty(keyBuilder.idealStates(resourceName));
+<a class="jxr_linenumber" name="704" href="#704">704</a> accessor.removeProperty(keyBuilder.resourceConfig(resourceName));
+<a class="jxr_linenumber" name="705" href="#705">705</a> }
<a class="jxr_linenumber" name="706" href="#706">706</a>
-<a class="jxr_linenumber" name="707" href="#707">707</a> accessor.removeProperty(keyBuilder.idealStates(resourceName));
-<a class="jxr_linenumber" name="708" href="#708">708</a> accessor.removeProperty(keyBuilder.resourceConfig(resourceName));
-<a class="jxr_linenumber" name="709" href="#709">709</a> }
-<a class="jxr_linenumber" name="710" href="#710">710</a>
-<a class="jxr_linenumber" name="711" href="#711">711</a> @Override
-<a class="jxr_linenumber" name="712" href="#712">712</a> <strong class="jxr_keyword">public</strong> List<String> getStateModelDefs(String clusterName) {
-<a class="jxr_linenumber" name="713" href="#713">713</a> <strong class="jxr_keyword">return</strong> _zkClient.getChildren(HelixUtil.getStateModelDefinitionPath(clusterName));
-<a class="jxr_linenumber" name="714" href="#714">714</a> }
-<a class="jxr_linenumber" name="715" href="#715">715</a>
-<a class="jxr_linenumber" name="716" href="#716">716</a> @Override
-<a class="jxr_linenumber" name="717" href="#717">717</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/model/StateModelDefinition.html">StateModelDefinition</a> getStateModelDef(String clusterName, String stateModelName) {
-<a class="jxr_linenumber" name="718" href="#718">718</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
-<a class="jxr_linenumber" name="719" href="#719">719</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
-<a class="jxr_linenumber" name="720" href="#720">720</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
-<a class="jxr_linenumber" name="721" href="#721">721</a>
-<a class="jxr_linenumber" name="722" href="#722">722</a> <strong class="jxr_keyword">return</strong> accessor.getProperty(keyBuilder.stateModelDef(stateModelName));
-<a class="jxr_linenumber" name="723" href="#723">723</a> }
-<a class="jxr_linenumber" name="724" href="#724">724</a>
-<a class="jxr_linenumber" name="725" href="#725">725</a> @Override
-<a class="jxr_linenumber" name="726" href="#726">726</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addStat(String clusterName, <strong class="jxr_keyword">final</strong> String statName) {
-<a class="jxr_linenumber" name="727" href="#727">727</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
-<a class="jxr_linenumber" name="728" href="#728">728</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
-<a class="jxr_linenumber" name="729" href="#729">729</a> }
+<a class="jxr_linenumber" name="707" href="#707">707</a> @Override
+<a class="jxr_linenumber" name="708" href="#708">708</a> <strong class="jxr_keyword">public</strong> List<String> getStateModelDefs(String clusterName) {
+<a class="jxr_linenumber" name="709" href="#709">709</a> <strong class="jxr_keyword">return</strong> _zkClient.getChildren(HelixUtil.getStateModelDefinitionPath(clusterName));
+<a class="jxr_linenumber" name="710" href="#710">710</a> }
+<a class="jxr_linenumber" name="711" href="#711">711</a>
+<a class="jxr_linenumber" name="712" href="#712">712</a> @Override
+<a class="jxr_linenumber" name="713" href="#713">713</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/model/StateModelDefinition.html">StateModelDefinition</a> getStateModelDef(String clusterName, String stateModelName) {
+<a class="jxr_linenumber" name="714" href="#714">714</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
+<a class="jxr_linenumber" name="715" href="#715">715</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
+<a class="jxr_linenumber" name="716" href="#716">716</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
+<a class="jxr_linenumber" name="717" href="#717">717</a>
+<a class="jxr_linenumber" name="718" href="#718">718</a> <strong class="jxr_keyword">return</strong> accessor.getProperty(keyBuilder.stateModelDef(stateModelName));
+<a class="jxr_linenumber" name="719" href="#719">719</a> }
+<a class="jxr_linenumber" name="720" href="#720">720</a>
+<a class="jxr_linenumber" name="721" href="#721">721</a> @Override
+<a class="jxr_linenumber" name="722" href="#722">722</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addStat(String clusterName, <strong class="jxr_keyword">final</strong> String statName) {
+<a class="jxr_linenumber" name="723" href="#723">723</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
+<a class="jxr_linenumber" name="724" href="#724">724</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
+<a class="jxr_linenumber" name="725" href="#725">725</a> }
+<a class="jxr_linenumber" name="726" href="#726">726</a>
+<a class="jxr_linenumber" name="727" href="#727">727</a> String persistentStatsPath =
+<a class="jxr_linenumber" name="728" href="#728">728</a> PropertyPathConfig.getPath(PropertyType.PERSISTENTSTATS, clusterName);
+<a class="jxr_linenumber" name="729" href="#729">729</a> ZkBaseDataAccessor<ZNRecord> baseAccessor = <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient);
<a class="jxr_linenumber" name="730" href="#730">730</a>
-<a class="jxr_linenumber" name="731" href="#731">731</a> String persistentStatsPath =
-<a class="jxr_linenumber" name="732" href="#732">732</a> PropertyPathConfig.getPath(PropertyType.PERSISTENTSTATS, clusterName);
-<a class="jxr_linenumber" name="733" href="#733">733</a> ZkBaseDataAccessor<ZNRecord> baseAccessor = <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient);
-<a class="jxr_linenumber" name="734" href="#734">734</a>
-<a class="jxr_linenumber" name="735" href="#735">735</a> baseAccessor.update(persistentStatsPath, <strong class="jxr_keyword">new</strong> DataUpdater<ZNRecord>() {
-<a class="jxr_linenumber" name="736" href="#736">736</a>
-<a class="jxr_linenumber" name="737" href="#737">737</a> @Override
-<a class="jxr_linenumber" name="738" href="#738">738</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> update(<a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> statsRec) {
-<a class="jxr_linenumber" name="739" href="#739">739</a> <strong class="jxr_keyword">if</strong> (statsRec == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="740" href="#740">740</a> <em class="jxr_comment">// TODO: fix naming of this record, if it matters</em>
-<a class="jxr_linenumber" name="741" href="#741">741</a> statsRec = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a>(PersistentStats.nodeName);
-<a class="jxr_linenumber" name="742" href="#742">742</a> }
-<a class="jxr_linenumber" name="743" href="#743">743</a>
-<a class="jxr_linenumber" name="744" href="#744">744</a> Map<String, Map<String, String>> currStatMap = statsRec.getMapFields();
-<a class="jxr_linenumber" name="745" href="#745">745</a> Map<String, Map<String, String>> newStatMap = StatsHolder.parseStat(statName);
-<a class="jxr_linenumber" name="746" href="#746">746</a> <strong class="jxr_keyword">for</strong> (String newStat : newStatMap.keySet()) {
-<a class="jxr_linenumber" name="747" href="#747">747</a> <strong class="jxr_keyword">if</strong> (!currStatMap.containsKey(newStat)) {
-<a class="jxr_linenumber" name="748" href="#748">748</a> currStatMap.put(newStat, newStatMap.get(newStat));
-<a class="jxr_linenumber" name="749" href="#749">749</a> }
-<a class="jxr_linenumber" name="750" href="#750">750</a> }
-<a class="jxr_linenumber" name="751" href="#751">751</a> statsRec.setMapFields(currStatMap);
-<a class="jxr_linenumber" name="752" href="#752">752</a>
-<a class="jxr_linenumber" name="753" href="#753">753</a> <strong class="jxr_keyword">return</strong> statsRec;
-<a class="jxr_linenumber" name="754" href="#754">754</a> }
-<a class="jxr_linenumber" name="755" href="#755">755</a> }, AccessOption.PERSISTENT);
-<a class="jxr_linenumber" name="756" href="#756">756</a> }
-<a class="jxr_linenumber" name="757" href="#757">757</a>
-<a class="jxr_linenumber" name="758" href="#758">758</a> @Override
-<a class="jxr_linenumber" name="759" href="#759">759</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addAlert(<strong class="jxr_keyword">final</strong> String clusterName, <strong class="jxr_keyword">final</strong> String alertName) {
-<a class="jxr_linenumber" name="760" href="#760">760</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
-<a class="jxr_linenumber" name="761" href="#761">761</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
-<a class="jxr_linenumber" name="762" href="#762">762</a> }
+<a class="jxr_linenumber" name="731" href="#731">731</a> baseAccessor.update(persistentStatsPath, <strong class="jxr_keyword">new</strong> DataUpdater<ZNRecord>() {
+<a class="jxr_linenumber" name="732" href="#732">732</a>
+<a class="jxr_linenumber" name="733" href="#733">733</a> @Override
+<a class="jxr_linenumber" name="734" href="#734">734</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> update(<a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> statsRec) {
+<a class="jxr_linenumber" name="735" href="#735">735</a> <strong class="jxr_keyword">if</strong> (statsRec == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="736" href="#736">736</a> <em class="jxr_comment">// TODO: fix naming of this record, if it matters</em>
+<a class="jxr_linenumber" name="737" href="#737">737</a> statsRec = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a>(PersistentStats.nodeName);
+<a class="jxr_linenumber" name="738" href="#738">738</a> }
+<a class="jxr_linenumber" name="739" href="#739">739</a>
+<a class="jxr_linenumber" name="740" href="#740">740</a> Map<String, Map<String, String>> currStatMap = statsRec.getMapFields();
+<a class="jxr_linenumber" name="741" href="#741">741</a> Map<String, Map<String, String>> newStatMap = StatsHolder.parseStat(statName);
+<a class="jxr_linenumber" name="742" href="#742">742</a> <strong class="jxr_keyword">for</strong> (String newStat : newStatMap.keySet()) {
+<a class="jxr_linenumber" name="743" href="#743">743</a> <strong class="jxr_keyword">if</strong> (!currStatMap.containsKey(newStat)) {
+<a class="jxr_linenumber" name="744" href="#744">744</a> currStatMap.put(newStat, newStatMap.get(newStat));
+<a class="jxr_linenumber" name="745" href="#745">745</a> }
+<a class="jxr_linenumber" name="746" href="#746">746</a> }
+<a class="jxr_linenumber" name="747" href="#747">747</a> statsRec.setMapFields(currStatMap);
+<a class="jxr_linenumber" name="748" href="#748">748</a>
+<a class="jxr_linenumber" name="749" href="#749">749</a> <strong class="jxr_keyword">return</strong> statsRec;
+<a class="jxr_linenumber" name="750" href="#750">750</a> }
+<a class="jxr_linenumber" name="751" href="#751">751</a> }, AccessOption.PERSISTENT);
+<a class="jxr_linenumber" name="752" href="#752">752</a> }
+<a class="jxr_linenumber" name="753" href="#753">753</a>
+<a class="jxr_linenumber" name="754" href="#754">754</a> @Override
+<a class="jxr_linenumber" name="755" href="#755">755</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addAlert(<strong class="jxr_keyword">final</strong> String clusterName, <strong class="jxr_keyword">final</strong> String alertName) {
+<a class="jxr_linenumber" name="756" href="#756">756</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
+<a class="jxr_linenumber" name="757" href="#757">757</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
+<a class="jxr_linenumber" name="758" href="#758">758</a> }
+<a class="jxr_linenumber" name="759" href="#759">759</a>
+<a class="jxr_linenumber" name="760" href="#760">760</a> ZkBaseDataAccessor<ZNRecord> baseAccessor = <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient);
+<a class="jxr_linenumber" name="761" href="#761">761</a>
+<a class="jxr_linenumber" name="762" href="#762">762</a> String alertsPath = PropertyPathConfig.getPath(PropertyType.ALERTS, clusterName);
<a class="jxr_linenumber" name="763" href="#763">763</a>
-<a class="jxr_linenumber" name="764" href="#764">764</a> ZkBaseDataAccessor<ZNRecord> baseAccessor = <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient);
+<a class="jxr_linenumber" name="764" href="#764">764</a> baseAccessor.update(alertsPath, <strong class="jxr_keyword">new</strong> DataUpdater<ZNRecord>() {
<a class="jxr_linenumber" name="765" href="#765">765</a>
-<a class="jxr_linenumber" name="766" href="#766">766</a> String alertsPath = PropertyPathConfig.getPath(PropertyType.ALERTS, clusterName);
-<a class="jxr_linenumber" name="767" href="#767">767</a>
-<a class="jxr_linenumber" name="768" href="#768">768</a> baseAccessor.update(alertsPath, <strong class="jxr_keyword">new</strong> DataUpdater<ZNRecord>() {
-<a class="jxr_linenumber" name="769" href="#769">769</a>
-<a class="jxr_linenumber" name="770" href="#770">770</a> @Override
-<a class="jxr_linenumber" name="771" href="#771">771</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> update(<a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> alertsRec) {
-<a class="jxr_linenumber" name="772" href="#772">772</a> <strong class="jxr_keyword">if</strong> (alertsRec == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="773" href="#773">773</a> <em class="jxr_comment">// TODO: fix naming of this record, if it matters</em>
-<a class="jxr_linenumber" name="774" href="#774">774</a> alertsRec = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a>(Alerts.nodeName);
-<a class="jxr_linenumber" name="775" href="#775">775</a>
-<a class="jxr_linenumber" name="776" href="#776">776</a> }
+<a class="jxr_linenumber" name="766" href="#766">766</a> @Override
+<a class="jxr_linenumber" name="767" href="#767">767</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> update(<a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> alertsRec) {
+<a class="jxr_linenumber" name="768" href="#768">768</a> <strong class="jxr_keyword">if</strong> (alertsRec == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="769" href="#769">769</a> <em class="jxr_comment">// TODO: fix naming of this record, if it matters</em>
+<a class="jxr_linenumber" name="770" href="#770">770</a> alertsRec = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a>(Alerts.nodeName);
+<a class="jxr_linenumber" name="771" href="#771">771</a>
+<a class="jxr_linenumber" name="772" href="#772">772</a> }
+<a class="jxr_linenumber" name="773" href="#773">773</a>
+<a class="jxr_linenumber" name="774" href="#774">774</a> Map<String, Map<String, String>> currAlertMap = alertsRec.getMapFields();
+<a class="jxr_linenumber" name="775" href="#775">775</a> StringBuilder newStatName = <strong class="jxr_keyword">new</strong> StringBuilder();
+<a class="jxr_linenumber" name="776" href="#776">776</a> Map<String, String> newAlertMap = <strong class="jxr_keyword">new</strong> HashMap<String, String>();
<a class="jxr_linenumber" name="777" href="#777">777</a>
-<a class="jxr_linenumber" name="778" href="#778">778</a> Map<String, Map<String, String>> currAlertMap = alertsRec.getMapFields();
-<a class="jxr_linenumber" name="779" href="#779">779</a> StringBuilder newStatName = <strong class="jxr_keyword">new</strong> StringBuilder();
-<a class="jxr_linenumber" name="780" href="#780">780</a> Map<String, String> newAlertMap = <strong class="jxr_keyword">new</strong> HashMap<String, String>();
-<a class="jxr_linenumber" name="781" href="#781">781</a>
-<a class="jxr_linenumber" name="782" href="#782">782</a> <em class="jxr_comment">// use AlertsHolder to get map of new stats and map for this alert</em>
-<a class="jxr_linenumber" name="783" href="#783">783</a> AlertsHolder.parseAlert(alertName, newStatName, newAlertMap);
-<a class="jxr_linenumber" name="784" href="#784">784</a>
-<a class="jxr_linenumber" name="785" href="#785">785</a> <em class="jxr_comment">// add stat</em>
-<a class="jxr_linenumber" name="786" href="#786">786</a> addStat(clusterName, newStatName.toString());
-<a class="jxr_linenumber" name="787" href="#787">787</a>
-<a class="jxr_linenumber" name="788" href="#788">788</a> <em class="jxr_comment">// add alert</em>
-<a class="jxr_linenumber" name="789" href="#789">789</a> currAlertMap.put(alertName, newAlertMap);
-<a class="jxr_linenumber" name="790" href="#790">790</a>
-<a class="jxr_linenumber" name="791" href="#791">791</a> alertsRec.setMapFields(currAlertMap);
-<a class="jxr_linenumber" name="792" href="#792">792</a>
-<a class="jxr_linenumber" name="793" href="#793">793</a> <strong class="jxr_keyword">return</strong> alertsRec;
-<a class="jxr_linenumber" name="794" href="#794">794</a> }
-<a class="jxr_linenumber" name="795" href="#795">795</a> }, AccessOption.PERSISTENT);
-<a class="jxr_linenumber" name="796" href="#796">796</a> }
-<a class="jxr_linenumber" name="797" href="#797">797</a>
-<a class="jxr_linenumber" name="798" href="#798">798</a> @Override
-<a class="jxr_linenumber" name="799" href="#799">799</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> dropCluster(String clusterName) {
-<a class="jxr_linenumber" name="800" href="#800">800</a> logger.info(<span class="jxr_string">"Deleting cluster "</span> + clusterName);
-<a class="jxr_linenumber" name="801" href="#801">801</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
-<a class="jxr_linenumber" name="802" href="#802">802</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
-<a class="jxr_linenumber" name="803" href="#803">803</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
-<a class="jxr_linenumber" name="804" href="#804">804</a>
-<a class="jxr_linenumber" name="805" href="#805">805</a> String root = <span class="jxr_string">"/"</span> + clusterName;
-<a class="jxr_linenumber" name="806" href="#806">806</a> <strong class="jxr_keyword">if</strong> (accessor.getChildNames(keyBuilder.liveInstances()).size() > 0) {
-<a class="jxr_linenumber" name="807" href="#807">807</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(
-<a class="jxr_linenumber" name="808" href="#808">808</a> <span class="jxr_string">"There are still live instances in the cluster, shut them down first."</span>);
+<a class="jxr_linenumber" name="778" href="#778">778</a> <em class="jxr_comment">// use AlertsHolder to get map of new stats and map for this alert</em>
+<a class="jxr_linenumber" name="779" href="#779">779</a> AlertsHolder.parseAlert(alertName, newStatName, newAlertMap);
+<a class="jxr_linenumber" name="780" href="#780">780</a>
+<a class="jxr_linenumber" name="781" href="#781">781</a> <em class="jxr_comment">// add stat</em>
+<a class="jxr_linenumber" name="782" href="#782">782</a> addStat(clusterName, newStatName.toString());
+<a class="jxr_linenumber" name="783" href="#783">783</a>
+<a class="jxr_linenumber" name="784" href="#784">784</a> <em class="jxr_comment">// add alert</em>
+<a class="jxr_linenumber" name="785" href="#785">785</a> currAlertMap.put(alertName, newAlertMap);
+<a class="jxr_linenumber" name="786" href="#786">786</a>
+<a class="jxr_linenumber" name="787" href="#787">787</a> alertsRec.setMapFields(currAlertMap);
+<a class="jxr_linenumber" name="788" href="#788">788</a>
+<a class="jxr_linenumber" name="789" href="#789">789</a> <strong class="jxr_keyword">return</strong> alertsRec;
+<a class="jxr_linenumber" name="790" href="#790">790</a> }
+<a class="jxr_linenumber" name="791" href="#791">791</a> }, AccessOption.PERSISTENT);
+<a class="jxr_linenumber" name="792" href="#792">792</a> }
+<a class="jxr_linenumber" name="793" href="#793">793</a>
+<a class="jxr_linenumber" name="794" href="#794">794</a> @Override
+<a class="jxr_linenumber" name="795" href="#795">795</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> dropCluster(String clusterName) {
+<a class="jxr_linenumber" name="796" href="#796">796</a> logger.info(<span class="jxr_string">"Deleting cluster "</span> + clusterName);
+<a class="jxr_linenumber" name="797" href="#797">797</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
+<a class="jxr_linenumber" name="798" href="#798">798</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(clusterName, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
+<a class="jxr_linenumber" name="799" href="#799">799</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
+<a class="jxr_linenumber" name="800" href="#800">800</a>
+<a class="jxr_linenumber" name="801" href="#801">801</a> String root = <span class="jxr_string">"/"</span> + clusterName;
+<a class="jxr_linenumber" name="802" href="#802">802</a> <strong class="jxr_keyword">if</strong> (accessor.getChildNames(keyBuilder.liveInstances()).size() > 0) {
+<a class="jxr_linenumber" name="803" href="#803">803</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(
+<a class="jxr_linenumber" name="804" href="#804">804</a> <span class="jxr_string">"There are still live instances in the cluster, shut them down first."</span>);
+<a class="jxr_linenumber" name="805" href="#805">805</a> }
+<a class="jxr_linenumber" name="806" href="#806">806</a>
+<a class="jxr_linenumber" name="807" href="#807">807</a> <strong class="jxr_keyword">if</strong> (accessor.getProperty(keyBuilder.controllerLeader()) != <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="808" href="#808">808</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"There are still LEADER in the cluster, shut them down first."</span>);
<a class="jxr_linenumber" name="809" href="#809">809</a> }
<a class="jxr_linenumber" name="810" href="#810">810</a>
-<a class="jxr_linenumber" name="811" href="#811">811</a> <strong class="jxr_keyword">if</strong> (accessor.getProperty(keyBuilder.controllerLeader()) != <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="812" href="#812">812</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"There are still LEADER in the cluster, shut them down first."</span>);
-<a class="jxr_linenumber" name="813" href="#813">813</a> }
-<a class="jxr_linenumber" name="814" href="#814">814</a>
-<a class="jxr_linenumber" name="815" href="#815">815</a> _zkClient.deleteRecursive(root);
-<a class="jxr_linenumber" name="816" href="#816">816</a> }
-<a class="jxr_linenumber" name="817" href="#817">817</a>
-<a class="jxr_linenumber" name="818" href="#818">818</a> @Override
-<a class="jxr_linenumber" name="819" href="#819">819</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> dropStat(String clusterName, <strong class="jxr_keyword">final</strong> String statName) {
-<a class="jxr_linenumber" name="820" href="#820">820</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
-<a class="jxr_linenumber" name="821" href="#821">821</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
-<a class="jxr_linenumber" name="822" href="#822">822</a> }
+<a class="jxr_linenumber" name="811" href="#811">811</a> _zkClient.deleteRecursive(root);
+<a class="jxr_linenumber" name="812" href="#812">812</a> }
+<a class="jxr_linenumber" name="813" href="#813">813</a>
+<a class="jxr_linenumber" name="814" href="#814">814</a> @Override
+<a class="jxr_linenumber" name="815" href="#815">815</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> dropStat(String clusterName, <strong class="jxr_keyword">final</strong> String statName) {
+<a class="jxr_linenumber" name="816" href="#816">816</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
+<a class="jxr_linenumber" name="817" href="#817">817</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
+<a class="jxr_linenumber" name="818" href="#818">818</a> }
+<a class="jxr_linenumber" name="819" href="#819">819</a>
+<a class="jxr_linenumber" name="820" href="#820">820</a> String persistentStatsPath =
+<a class="jxr_linenumber" name="821" href="#821">821</a> PropertyPathConfig.getPath(PropertyType.PERSISTENTSTATS, clusterName);
+<a class="jxr_linenumber" name="822" href="#822">822</a> ZkBaseDataAccessor<ZNRecord> baseAccessor = <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient);
<a class="jxr_linenumber" name="823" href="#823">823</a>
-<a class="jxr_linenumber" name="824" href="#824">824</a> String persistentStatsPath =
-<a class="jxr_linenumber" name="825" href="#825">825</a> PropertyPathConfig.getPath(PropertyType.PERSISTENTSTATS, clusterName);
-<a class="jxr_linenumber" name="826" href="#826">826</a> ZkBaseDataAccessor<ZNRecord> baseAccessor = <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient);
-<a class="jxr_linenumber" name="827" href="#827">827</a>
-<a class="jxr_linenumber" name="828" href="#828">828</a> baseAccessor.update(persistentStatsPath, <strong class="jxr_keyword">new</strong> DataUpdater<ZNRecord>() {
-<a class="jxr_linenumber" name="829" href="#829">829</a>
-<a class="jxr_linenumber" name="830" href="#830">830</a> @Override
-<a class="jxr_linenumber" name="831" href="#831">831</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> update(<a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> statsRec) {
-<a class="jxr_linenumber" name="832" href="#832">832</a> <strong class="jxr_keyword">if</strong> (statsRec == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="833" href="#833">833</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"No stats record in ZK, nothing to drop"</span>);
-<a class="jxr_linenumber" name="834" href="#834">834</a> }
-<a class="jxr_linenumber" name="835" href="#835">835</a>
-<a class="jxr_linenumber" name="836" href="#836">836</a> Map<String, Map<String, String>> currStatMap = statsRec.getMapFields();
-<a class="jxr_linenumber" name="837" href="#837">837</a> Map<String, Map<String, String>> newStatMap = StatsHolder.parseStat(statName);
-<a class="jxr_linenumber" name="838" href="#838">838</a>
-<a class="jxr_linenumber" name="839" href="#839">839</a> <em class="jxr_comment">// delete each stat from stat map</em>
-<a class="jxr_linenumber" name="840" href="#840">840</a> <strong class="jxr_keyword">for</strong> (String newStat : newStatMap.keySet()) {
-<a class="jxr_linenumber" name="841" href="#841">841</a> <strong class="jxr_keyword">if</strong> (currStatMap.containsKey(newStat)) {
-<a class="jxr_linenumber" name="842" href="#842">842</a> currStatMap.remove(newStat);
-<a class="jxr_linenumber" name="843" href="#843">843</a> }
-<a class="jxr_linenumber" name="844" href="#844">844</a> }
-<a class="jxr_linenumber" name="845" href="#845">845</a> statsRec.setMapFields(currStatMap);
-<a class="jxr_linenumber" name="846" href="#846">846</a>
-<a class="jxr_linenumber" name="847" href="#847">847</a> <strong class="jxr_keyword">return</strong> statsRec;
-<a class="jxr_linenumber" name="848" href="#848">848</a> }
-<a class="jxr_linenumber" name="849" href="#849">849</a> }, AccessOption.PERSISTENT);
-<a class="jxr_linenumber" name="850" href="#850">850</a> }
-<a class="jxr_linenumber" name="851" href="#851">851</a>
-<a class="jxr_linenumber" name="852" href="#852">852</a> @Override
-<a class="jxr_linenumber" name="853" href="#853">853</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> dropAlert(String clusterName, <strong class="jxr_keyword">final</strong> String alertName) {
-<a class="jxr_linenumber" name="854" href="#854">854</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
-<a class="jxr_linenumber" name="855" href="#855">855</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
-<a class="jxr_linenumber" name="856" href="#856">856</a> }
+<a class="jxr_linenumber" name="824" href="#824">824</a> baseAccessor.update(persistentStatsPath, <strong class="jxr_keyword">new</strong> DataUpdater<ZNRecord>() {
+<a class="jxr_linenumber" name="825" href="#825">825</a>
+<a class="jxr_linenumber" name="826" href="#826">826</a> @Override
+<a class="jxr_linenumber" name="827" href="#827">827</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> update(<a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> statsRec) {
+<a class="jxr_linenumber" name="828" href="#828">828</a> <strong class="jxr_keyword">if</strong> (statsRec == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="829" href="#829">829</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"No stats record in ZK, nothing to drop"</span>);
+<a class="jxr_linenumber" name="830" href="#830">830</a> }
+<a class="jxr_linenumber" name="831" href="#831">831</a>
+<a class="jxr_linenumber" name="832" href="#832">832</a> Map<String, Map<String, String>> currStatMap = statsRec.getMapFields();
+<a class="jxr_linenumber" name="833" href="#833">833</a> Map<String, Map<String, String>> newStatMap = StatsHolder.parseStat(statName);
+<a class="jxr_linenumber" name="834" href="#834">834</a>
+<a class="jxr_linenumber" name="835" href="#835">835</a> <em class="jxr_comment">// delete each stat from stat map</em>
+<a class="jxr_linenumber" name="836" href="#836">836</a> <strong class="jxr_keyword">for</strong> (String newStat : newStatMap.keySet()) {
+<a class="jxr_linenumber" name="837" href="#837">837</a> <strong class="jxr_keyword">if</strong> (currStatMap.containsKey(newStat)) {
+<a class="jxr_linenumber" name="838" href="#838">838</a> currStatMap.remove(newStat);
+<a class="jxr_linenumber" name="839" href="#839">839</a> }
+<a class="jxr_linenumber" name="840" href="#840">840</a> }
+<a class="jxr_linenumber" name="841" href="#841">841</a> statsRec.setMapFields(currStatMap);
+<a class="jxr_linenumber" name="842" href="#842">842</a>
+<a class="jxr_linenumber" name="843" href="#843">843</a> <strong class="jxr_keyword">return</strong> statsRec;
+<a class="jxr_linenumber" name="844" href="#844">844</a> }
+<a class="jxr_linenumber" name="845" href="#845">845</a> }, AccessOption.PERSISTENT);
+<a class="jxr_linenumber" name="846" href="#846">846</a> }
+<a class="jxr_linenumber" name="847" href="#847">847</a>
+<a class="jxr_linenumber" name="848" href="#848">848</a> @Override
+<a class="jxr_linenumber" name="849" href="#849">849</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> dropAlert(String clusterName, <strong class="jxr_keyword">final</strong> String alertName) {
+<a class="jxr_linenumber" name="850" href="#850">850</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
+<a class="jxr_linenumber" name="851" href="#851">851</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
+<a class="jxr_linenumber" name="852" href="#852">852</a> }
+<a class="jxr_linenumber" name="853" href="#853">853</a>
+<a class="jxr_linenumber" name="854" href="#854">854</a> String alertsPath = PropertyPathConfig.getPath(PropertyType.ALERTS, clusterName);
+<a class="jxr_linenumber" name="855" href="#855">855</a>
+<a class="jxr_linenumber" name="856" href="#856">856</a> ZkBaseDataAccessor<ZNRecord> baseAccessor = <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient);
<a class="jxr_linenumber" name="857" href="#857">857</a>
-<a class="jxr_linenumber" name="858" href="#858">858</a> String alertsPath = PropertyPathConfig.getPath(PropertyType.ALERTS, clusterName);
-<a class="jxr_linenumber" name="859" href="#859">859</a>
-<a class="jxr_linenumber" name="860" href="#860">860</a> ZkBaseDataAccessor<ZNRecord> baseAccessor = <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient);
+<a class="jxr_linenumber" name="858" href="#858">858</a> <strong class="jxr_keyword">if</strong> (!baseAccessor.exists(alertsPath, 0)) {
+<a class="jxr_linenumber" name="859" href="#859">859</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"No alerts node in ZK, nothing to drop"</span>);
+<a class="jxr_linenumber" name="860" href="#860">860</a> }
<a class="jxr_linenumber" name="861" href="#861">861</a>
-<a class="jxr_linenumber" name="862" href="#862">862</a> <strong class="jxr_keyword">if</strong> (!baseAccessor.exists(alertsPath, 0)) {
-<a class="jxr_linenumber" name="863" href="#863">863</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"No alerts node in ZK, nothing to drop"</span>);
-<a class="jxr_linenumber" name="864" href="#864">864</a> }
-<a class="jxr_linenumber" name="865" href="#865">865</a>
-<a class="jxr_linenumber" name="866" href="#866">866</a> baseAccessor.update(alertsPath, <strong class="jxr_keyword">new</strong> DataUpdater<ZNRecord>() {
-<a class="jxr_linenumber" name="867" href="#867">867</a> @Override
-<a class="jxr_linenumber" name="868" href="#868">868</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> update(<a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> alertsRec) {
-<a class="jxr_linenumber" name="869" href="#869">869</a> <strong class="jxr_keyword">if</strong> (alertsRec == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="870" href="#870">870</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"No alerts record in ZK, nothing to drop"</span>);
-<a class="jxr_linenumber" name="871" href="#871">871</a> }
+<a class="jxr_linenumber" name="862" href="#862">862</a> baseAccessor.update(alertsPath, <strong class="jxr_keyword">new</strong> DataUpdater<ZNRecord>() {
+<a class="jxr_linenumber" name="863" href="#863">863</a> @Override
+<a class="jxr_linenumber" name="864" href="#864">864</a> <strong class="jxr_keyword">public</strong> <a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> update(<a href="../../../../../org/apache/helix/ZNRecord.html">ZNRecord</a> alertsRec) {
+<a class="jxr_linenumber" name="865" href="#865">865</a> <strong class="jxr_keyword">if</strong> (alertsRec == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="866" href="#866">866</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"No alerts record in ZK, nothing to drop"</span>);
+<a class="jxr_linenumber" name="867" href="#867">867</a> }
+<a class="jxr_linenumber" name="868" href="#868">868</a>
+<a class="jxr_linenumber" name="869" href="#869">869</a> Map<String, Map<String, String>> currAlertMap = alertsRec.getMapFields();
+<a class="jxr_linenumber" name="870" href="#870">870</a> currAlertMap.remove(alertName);
+<a class="jxr_linenumber" name="871" href="#871">871</a> alertsRec.setMapFields(currAlertMap);
<a class="jxr_linenumber" name="872" href="#872">872</a>
-<a class="jxr_linenumber" name="873" href="#873">873</a> Map<String, Map<String, String>> currAlertMap = alertsRec.getMapFields();
-<a class="jxr_linenumber" name="874" href="#874">874</a> currAlertMap.remove(alertName);
-<a class="jxr_linenumber" name="875" href="#875">875</a> alertsRec.setMapFields(currAlertMap);
-<a class="jxr_linenumber" name="876" href="#876">876</a>
-<a class="jxr_linenumber" name="877" href="#877">877</a> <strong class="jxr_keyword">return</strong> alertsRec;
-<a class="jxr_linenumber" name="878" href="#878">878</a> }
-<a class="jxr_linenumber" name="879" href="#879">879</a> }, AccessOption.PERSISTENT);
-<a class="jxr_linenumber" name="880" href="#880">880</a> }
-<a class="jxr_linenumber" name="881" href="#881">881</a>
-<a class="jxr_linenumber" name="882" href="#882">882</a> @Override
-<a class="jxr_linenumber" name="883" href="#883">883</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addClusterToGrandCluster(String clusterName, String grandCluster) {
-<a class="jxr_linenumber" name="884" href="#884">884</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(grandCluster, _zkClient)) {
-<a class="jxr_linenumber" name="885" href="#885">885</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"Grand cluster "</span> + grandCluster + <span class="jxr_string">" is not setup yet"</span>);
+<a class="jxr_linenumber" name="873" href="#873">873</a> <strong class="jxr_keyword">return</strong> alertsRec;
+<a class="jxr_linenumber" name="874" href="#874">874</a> }
+<a class="jxr_linenumber" name="875" href="#875">875</a> }, AccessOption.PERSISTENT);
+<a class="jxr_linenumber" name="876" href="#876">876</a> }
+<a class="jxr_linenumber" name="877" href="#877">877</a>
+<a class="jxr_linenumber" name="878" href="#878">878</a> @Override
+<a class="jxr_linenumber" name="879" href="#879">879</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addClusterToGrandCluster(String clusterName, String grandCluster) {
+<a class="jxr_linenumber" name="880" href="#880">880</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(grandCluster, _zkClient)) {
+<a class="jxr_linenumber" name="881" href="#881">881</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"Grand cluster "</span> + grandCluster + <span class="jxr_string">" is not setup yet"</span>);
+<a class="jxr_linenumber" name="882" href="#882">882</a> }
+<a class="jxr_linenumber" name="883" href="#883">883</a>
+<a class="jxr_linenumber" name="884" href="#884">884</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
+<a class="jxr_linenumber" name="885" href="#885">885</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"Cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
<a class="jxr_linenumber" name="886" href="#886">886</a> }
<a class="jxr_linenumber" name="887" href="#887">887</a>
-<a class="jxr_linenumber" name="888" href="#888">888</a> <strong class="jxr_keyword">if</strong> (!ZKUtil.isClusterSetup(clusterName, _zkClient)) {
-<a class="jxr_linenumber" name="889" href="#889">889</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"Cluster "</span> + clusterName + <span class="jxr_string">" is not setup yet"</span>);
-<a class="jxr_linenumber" name="890" href="#890">890</a> }
-<a class="jxr_linenumber" name="891" href="#891">891</a>
-<a class="jxr_linenumber" name="892" href="#892">892</a> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> idealState = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a>(clusterName);
-<a class="jxr_linenumber" name="893" href="#893">893</a>
-<a class="jxr_linenumber" name="894" href="#894">894</a> idealState.setNumPartitions(1);
-<a class="jxr_linenumber" name="895" href="#895">895</a> idealState.setStateModelDefRef(<span class="jxr_string">"LeaderStandby"</span>);
-<a class="jxr_linenumber" name="896" href="#896">896</a>
-<a class="jxr_linenumber" name="897" href="#897">897</a> List<String> controllers = getInstancesInCluster(grandCluster);
-<a class="jxr_linenumber" name="898" href="#898">898</a> <strong class="jxr_keyword">if</strong> (controllers.size() == 0) {
-<a class="jxr_linenumber" name="899" href="#899">899</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"Grand cluster "</span> + grandCluster + <span class="jxr_string">" has no instances"</span>);
-<a class="jxr_linenumber" name="900" href="#900">900</a> }
-<a class="jxr_linenumber" name="901" href="#901">901</a> idealState.setReplicas(Integer.toString(controllers.size()));
-<a class="jxr_linenumber" name="902" href="#902">902</a> Collections.shuffle(controllers);
-<a class="jxr_linenumber" name="903" href="#903">903</a> idealState.getRecord().setListField(clusterName, controllers);
-<a class="jxr_linenumber" name="904" href="#904">904</a> idealState.setPartitionState(clusterName, controllers.get(0), <span class="jxr_string">"LEADER"</span>);
-<a class="jxr_linenumber" name="905" href="#905">905</a> <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 1; i < controllers.size(); i++) {
-<a class="jxr_linenumber" name="906" href="#906">906</a> idealState.setPartitionState(clusterName, controllers.get(i), <span class="jxr_string">"STANDBY"</span>);
-<a class="jxr_linenumber" name="907" href="#907">907</a> }
+<a class="jxr_linenumber" name="888" href="#888">888</a> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> idealState = <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a>(clusterName);
+<a class="jxr_linenumber" name="889" href="#889">889</a>
+<a class="jxr_linenumber" name="890" href="#890">890</a> idealState.setNumPartitions(1);
+<a class="jxr_linenumber" name="891" href="#891">891</a> idealState.setStateModelDefRef(<span class="jxr_string">"LeaderStandby"</span>);
+<a class="jxr_linenumber" name="892" href="#892">892</a>
+<a class="jxr_linenumber" name="893" href="#893">893</a> List<String> controllers = getInstancesInCluster(grandCluster);
+<a class="jxr_linenumber" name="894" href="#894">894</a> <strong class="jxr_keyword">if</strong> (controllers.size() == 0) {
+<a class="jxr_linenumber" name="895" href="#895">895</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"Grand cluster "</span> + grandCluster + <span class="jxr_string">" has no instances"</span>);
+<a class="jxr_linenumber" name="896" href="#896">896</a> }
+<a class="jxr_linenumber" name="897" href="#897">897</a> idealState.setReplicas(Integer.toString(controllers.size()));
+<a class="jxr_linenumber" name="898" href="#898">898</a> Collections.shuffle(controllers);
+<a class="jxr_linenumber" name="899" href="#899">899</a> idealState.getRecord().setListField(clusterName, controllers);
+<a class="jxr_linenumber" name="900" href="#900">900</a> idealState.setPartitionState(clusterName, controllers.get(0), <span class="jxr_string">"LEADER"</span>);
+<a class="jxr_linenumber" name="901" href="#901">901</a> <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 1; i < controllers.size(); i++) {
+<a class="jxr_linenumber" name="902" href="#902">902</a> idealState.setPartitionState(clusterName, controllers.get(i), <span class="jxr_string">"STANDBY"</span>);
+<a class="jxr_linenumber" name="903" href="#903">903</a> }
+<a class="jxr_linenumber" name="904" href="#904">904</a>
+<a class="jxr_linenumber" name="905" href="#905">905</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
+<a class="jxr_linenumber" name="906" href="#906">906</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(grandCluster, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
+<a class="jxr_linenumber" name="907" href="#907">907</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
<a class="jxr_linenumber" name="908" href="#908">908</a>
-<a class="jxr_linenumber" name="909" href="#909">909</a> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a> accessor =
-<a class="jxr_linenumber" name="910" href="#910">910</a> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/manager/zk/ZKHelixDataAccessor.html">ZKHelixDataAccessor</a>(grandCluster, <strong class="jxr_keyword">new</strong> ZkBaseDataAccessor<ZNRecord>(_zkClient));
-<a class="jxr_linenumber" name="911" href="#911">911</a> <a href="../../../../../org/apache/helix/PropertyKey.html">Builder</a> keyBuilder = accessor.keyBuilder();
-<a class="jxr_linenumber" name="912" href="#912">912</a>
-<a class="jxr_linenumber" name="913" href="#913">913</a> accessor.setProperty(keyBuilder.idealStates(idealState.getResourceName()), idealState);
-<a class="jxr_linenumber" name="914" href="#914">914</a> }
-<a class="jxr_linenumber" name="915" href="#915">915</a>
-<a class="jxr_linenumber" name="916" href="#916">916</a> @Override
-<a class="jxr_linenumber" name="917" href="#917">917</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setConfig(<a href="../../../../../org/apache/helix/model/HelixConfigScope.html">HelixConfigScope</a> scope, Map<String, String> properties) {
-<a class="jxr_linenumber" name="918" href="#918">918</a> _configAccessor.set(scope, properties);
-<a class="jxr_linenumber" name="919" href="#919">919</a> }
-<a class="jxr_linenumber" name="920" href="#920">920</a>
-<a class="jxr_linenumber" name="921" href="#921">921</a> @Override
-<a class="jxr_linenumber" name="922" href="#922">922</a> <strong class="jxr_keyword">public</strong> Map<String, String> getConfig(<a href="../../../../../org/apache/helix/model/HelixConfigScope.html">HelixConfigScope</a> scope, List<String> keys) {
-<a class="jxr_linenumber" name="923" href="#923">923</a> <strong class="jxr_keyword">return</strong> _configAccessor.get(scope, keys);
-<a class="jxr_linenumber" name="924" href="#924">924</a> }
-<a class="jxr_linenumber" name="925" href="#925">925</a>
-<a class="jxr_linenumber" name="926" href="#926">926</a> @Override
-<a class="jxr_linenumber" name="927" href="#927">927</a> <strong class="jxr_keyword">public</strong> List<String> getConfigKeys(<a href="../../../../../org/apache/helix/model/HelixConfigScope.html">HelixConfigScope</a> scope) {
-<a class="jxr_linenumber" name="928" href="#928">928</a> <strong class="jxr_keyword">return</strong> _configAccessor.getKeys(scope);
-<a class="jxr_linenumber" name="929" href="#929">929</a> }
-<a class="jxr_linenumber" name="930" href="#930">930</a>
-<a class="jxr_linenumber" name="931" href="#931">931</a> @Override
-<a class="jxr_linenumber" name="932" href="#932">932</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> removeConfig(<a href="../../../../../org/apache/helix/model/HelixConfigScope.html">HelixConfigScope</a> scope, List<String> keys) {
-<a class="jxr_linenumber" name="933" href="#933">933</a> _configAccessor.remove(scope, keys);
-<a class="jxr_linenumber" name="934" href="#934">934</a> }
-<a class="jxr_linenumber" name="935" href="#935">935</a>
-<a class="jxr_linenumber" name="936" href="#936">936</a> @Override
-<a class="jxr_linenumber" name="937" href="#937">937</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> rebalance(String clusterName, String resourceName, <strong class="jxr_keyword">int</strong> replica) {
-<a class="jxr_linenumber" name="938" href="#938">938</a> rebalance(clusterName, resourceName, replica, resourceName, <span class="jxr_string">""</span>);
-<a class="jxr_linenumber" name="939" href="#939">939</a> }
-<a class="jxr_linenumber" name="940" href="#940">940</a>
-<a class="jxr_linenumber" name="941" href="#941">941</a> @Override
-<a class="jxr_linenumber" name="942" href="#942">942</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> rebalance(String clusterName, String resourceName, <strong class="jxr_keyword">int</strong> replica, String keyPrefix,
-<a class="jxr_linenumber" name="943" href="#943">943</a> String group) {
-<a class="jxr_linenumber" name="944" href="#944">944</a> List<String> instanceNames = <strong class="jxr_keyword">new</strong> LinkedList<String>();
-<a class="jxr_linenumber" name="945" href="#945">945</a> <strong class="jxr_keyword">if</strong> (keyPrefix == <strong class="jxr_keyword">null</strong> || keyPrefix.length() == 0) {
-<a class="jxr_linenumber" name="946" href="#946">946</a> keyPrefix = resourceName;
-<a class="jxr_linenumber" name="947" href="#947">947</a> }
-<a class="jxr_linenumber" name="948" href="#948">948</a> <strong class="jxr_keyword">if</strong> (group != <strong class="jxr_keyword">null</strong> && group.length() > 0) {
-<a class="jxr_linenumber" name="949" href="#949">949</a> instanceNames = getInstancesInClusterWithTag(clusterName, group);
-<a class="jxr_linenumber" name="950" href="#950">950</a> }
-<a class="jxr_linenumber" name="951" href="#951">951</a> <strong class="jxr_keyword">if</strong> (instanceNames.size() == 0) {
-<a class="jxr_linenumber" name="952" href="#952">952</a> logger.info(<span class="jxr_string">"No tags found for resource "</span> + resourceName + <span class="jxr_string">", use all instances"</span>);
-<a class="jxr_linenumber" name="953" href="#953">953</a> instanceNames = getInstancesInCluster(clusterName);
-<a class="jxr_linenumber" name="954" href="#954">954</a> group = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="955" href="#955">955</a> } <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="956" href="#956">956</a> logger.info(<span class="jxr_string">"Found instances with tag for "</span> + resourceName + <span class="jxr_string">" "</span> + instanceNames);
-<a class="jxr_linenumber" name="957" href="#957">957</a> }
-<a class="jxr_linenumber" name="958" href="#958">958</a> rebalance(clusterName, resourceName, replica, keyPrefix, instanceNames, group);
-<a class="jxr_linenumber" name="959" href="#959">959</a> }
-<a class="jxr_linenumber" name="960" href="#960">960</a>
-<a class="jxr_linenumber" name="961" href="#961">961</a> @Override
-<a class="jxr_linenumber" name="962" href="#962">962</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> rebalance(String clusterName, String resourceName, <strong class="jxr_keyword">int</strong> replica, List<String> instances) {
-<a class="jxr_linenumber" name="963" href="#963">963</a> rebalance(clusterName, resourceName, replica, resourceName, instances, <span class="jxr_string">""</span>);
-<a class="jxr_linenumber" name="964" href="#964">964</a> }
-<a class="jxr_linenumber" name="965" href="#965">965</a>
-<a class="jxr_linenumber" name="966" href="#966">966</a> <strong class="jxr_keyword">void</strong> rebalance(String clusterName, String resourceName, <strong class="jxr_keyword">int</strong> replica, String keyPrefix,
-<a class="jxr_linenumber" name="967" href="#967">967</a> List<String> instanceNames, String groupId) {
-<a class="jxr_linenumber" name="968" href="#968">968</a> <em class="jxr_comment">// ensure we get the same idealState with the same set of instances</em>
-<a class="jxr_linenumber" name="969" href="#969">969</a> Collections.sort(instanceNames);
-<a class="jxr_linenumber" name="970" href="#970">970</a>
-<a class="jxr_linenumber" name="971" href="#971">971</a> <a href="../../../../../org/apache/helix/model/IdealState.html">IdealState</a> idealState = getResourceIdealState(clusterName, resourceName);
-<a class="jxr_linenumber" name="972" href="#972">972</a> <strong class="jxr_keyword">if</strong> (idealState == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="973" href="#973">973</a> <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a href="../../../../../org/apache/helix/HelixException.html">HelixException</a>(<span class="jxr_string">"Resource: "</span> + resourceName + <span class="jxr_string">" has NOT been added yet"</span>);
+<a class="jxr_linenumber" name="909" href="#909">909</a> accessor.setProperty(keyBuilder.idealStates(idealState.getResourceName()), idealState);
+<a class="jxr_linenumber" name="910" href="#910">910</a> }
+<a class="jxr_linenumber" name="911" href="#911">911</a>
+<a class="jxr_linenumber" name="912" href="#912">912</a> @Override
+<a class="jxr_linenumber" name="913" href="#913">913</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setConfig(<a href="../../../../../org/apache/helix/model/HelixConfigScope.html">HelixConfigScope</a> scope, Map<String, String> properties) {
+<a class="jxr_linenumber" name="914" href="#914">914</a> _configAccessor.set(scope, properties);
+<a class="jxr_linenumber" name="915" href="#915">915</a> }
+<a class="jxr_linenumber" name="916" href="#916">916</a>
+<a class="jxr_linenumber" name="917" href="#917">917</a> @Override
+<a class="jxr_linenumber" name="918" href="#918">918</a> <strong class="jxr_keyword">public</strong> Map<String, String> getConfig(<a href="../../../../../org/apache/helix/model/HelixConfigScope.html">HelixConfigScope</a> scope, List<String> keys) {
+<a class="jxr_linenumber" name="919" href="#919">919</a> <strong class="jxr_keyword">return</strong> _configAccessor.get(scope, keys);
+<a class="jxr_linenumber" name="920" href="#920">920</a> }
+<a class="jxr_linenumber" name="921" href="#921">921</a>
+<a class="jxr_linenumber" name="922" href="#922">922</a> @Override
+<a class="jxr_linenumber" name="923" href="#923">923</a> <strong class="jxr_keyword">public</strong> List<String> getConfigKeys(<a href="../../../../../org/apache/helix/model/HelixConfigScope.html">HelixConfigScope</a> scope) {
+<a class="jxr_linenumber" name="924" href="#924">924</a> <strong class="jxr_keyword">return</strong> _configAccessor.getKeys(scope);
+<a class="jxr_linenumber" name="925" href="#925">925</a> }
+<a class="jxr_linenumber" name="926" href="#926">926</a>
+<a class="jxr_linenumber" name="927" href="#927">927</a> @Override
+<a class="jxr_linenumber" name="928" href="#928">928</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> removeConfig(<a href="../../../../../org/apache/helix/model/HelixConfigScope.html">HelixConfigScope</a> scope, List<String> keys) {
+<a class="jxr_linenumber" name="929" href="#929">929</a> _configAccessor.remove(scope, keys);
+<a class="jxr_linenumber" name="930" href="#930">930</a> }
+<a class="jxr_linenumber" name="931" href="#931">931</a>
+<a class="jxr_linenumber" name="932" href="#932">932</a> @Override
+<a class="jxr_linenumber" name="933" href="#933">933</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> rebalance(String clusterName, String resourceName, <strong class="jxr_keyword">int</strong> replica) {
+<a class="jxr_linenumber" name="934" href="#934">934</a> rebalance(clusterName, resourceName, replica, resourceName, <span class="jxr_string">""</span>);
+<a class="jxr_linenumber" name="935" href="#935">935</a> }
+<a class="jxr_linenumber" name="936" href="#936">936</a>
+<a class="jxr_linenumber" name="937" href="#937">937</a> @Override
+<a class="jxr_linenumber" name="938" href="#938">938</a> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> rebalance(String clusterName, String resourceName, <strong class="jxr_keyword">int</strong> replica, String keyPrefix,
+<a class="jxr_linenumber" name="939" href="#939">939</a> String group) {
+<a class="jxr_linenumber" name="940" href="#940">940</a> List<String> instanceNames = <strong class="jxr_keyword">new</strong> LinkedList<String>();
+<a class="jxr_linenumber" name="941" href="#941">941</a> <strong class="jxr_keyword">if</strong> (keyPrefix == <strong class="jxr_keyword">null</strong> || keyPrefix.length() == 0) {
+<a class="jxr_linenumber" name="942" href="#942">942</a> keyPrefix = resourceName;
+<a class="jxr_linenumber" name="943" href="#943">943</a> }
+<a class="jxr_linenumber" name="944" href="#944">944</a> <strong class="jxr_keyword">if</strong> (group != <strong class="jxr_keyword">null</strong> && group.length() > 0) {
+<a class="jxr_linenumber" name="945" href="#945">945</a> instanceNames = getInstancesInClusterWithTag(clusterName, group);
+<a class="jxr_linenumber" name="946" href="#946">946</a> }
+<a class="jxr_linenumber" name="947" href="#947">947</a> <strong class="jxr_keyword">if</strong> (instanceNames.size() == 0) {
+<a class="jxr_linenumber" name="948" href="#948">948</a> logger.info(<span class="jxr_string">"No tags found for resource "</span> + resourceName + <span class="jxr_string">", use all instances"</span>);
+<a class="jxr_linenumber" name="949" href="#949">949</a> instanceNames = getInstancesInCluster(clusterName);
+<a class="jxr_linenumber" name="950" href="#950">950</a> group = <span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="951" href="#951">951</a> } <strong class="jxr_keyword">else</strong> {
[... 550 lines stripped ...]