You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/09/10 04:22:04 UTC

svn commit: r1382622 [1/2] - in /lucene/dev/branches/branch_4x: ./ dev-tools/ lucene/ lucene/analysis/ lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/ lucene/benchmark/ lucene/codecs/ lucene/core/ lucene/demo/ lucene/facet/ ...

Author: yonik
Date: Mon Sep 10 02:22:01 2012
New Revision: 1382622

URL: http://svn.apache.org/viewvc?rev=1382622&view=rev
Log:
SOLR-3815: separate ZkNodeProps from Replica, change properties from String values to Object values

Added:
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
      - copied unchanged from r1382621, lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/cloud/Replica.java
Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/BUILD.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/JRE_VERSION_MIGRATION.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/MIGRATE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/README.txt   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/   (props changed)
    lucene/dev/branches/branch_4x/lucene/analysis/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilterFactory.java   (props changed)
    lucene/dev/branches/branch_4x/lucene/backwards/   (props changed)
    lucene/dev/branches/branch_4x/lucene/benchmark/   (props changed)
    lucene/dev/branches/branch_4x/lucene/build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/codecs/   (props changed)
    lucene/dev/branches/branch_4x/lucene/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/demo/   (props changed)
    lucene/dev/branches/branch_4x/lucene/facet/   (props changed)
    lucene/dev/branches/branch_4x/lucene/grouping/   (props changed)
    lucene/dev/branches/branch_4x/lucene/highlighter/   (props changed)
    lucene/dev/branches/branch_4x/lucene/ivy-settings.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/join/   (props changed)
    lucene/dev/branches/branch_4x/lucene/licenses/   (props changed)
    lucene/dev/branches/branch_4x/lucene/memory/   (props changed)
    lucene/dev/branches/branch_4x/lucene/misc/   (props changed)
    lucene/dev/branches/branch_4x/lucene/module-build.xml   (props changed)
    lucene/dev/branches/branch_4x/lucene/queries/   (props changed)
    lucene/dev/branches/branch_4x/lucene/queryparser/   (props changed)
    lucene/dev/branches/branch_4x/lucene/sandbox/   (props changed)
    lucene/dev/branches/branch_4x/lucene/site/   (props changed)
    lucene/dev/branches/branch_4x/lucene/spatial/   (props changed)
    lucene/dev/branches/branch_4x/lucene/suggest/   (props changed)
    lucene/dev/branches/branch_4x/lucene/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/lucene/tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/LICENSE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/README.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/cloud-dev/   (props changed)
    lucene/dev/branches/branch_4x/solr/common-build.xml   (props changed)
    lucene/dev/branches/branch_4x/solr/contrib/   (props changed)
    lucene/dev/branches/branch_4x/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngine.java
    lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDIHEndToEnd.java
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/SolrLogFormatter.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/AssignShard.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/Overseer.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestHashPartitioner.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java
    lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
    lucene/dev/branches/branch_4x/solr/dev-tools/   (props changed)
    lucene/dev/branches/branch_4x/solr/example/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpclient-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpcore-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-LICENSE-ASL.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/licenses/httpmime-NOTICE.txt   (props changed)
    lucene/dev/branches/branch_4x/solr/scripts/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/   (props changed)
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BinaryRequestWriter.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrServer.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/HashPartitioner.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/Slice.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ZkCoreNodeProps.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java
    lucene/dev/branches/branch_4x/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
    lucene/dev/branches/branch_4x/solr/test-framework/   (props changed)
    lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractDistribZkTestBase.java
    lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
    lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractZkTestCase.java
    lucene/dev/branches/branch_4x/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
    lucene/dev/branches/branch_4x/solr/testlogging.properties   (props changed)
    lucene/dev/branches/branch_4x/solr/webapp/   (props changed)

Modified: lucene/dev/branches/branch_4x/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngine.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngine.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngine.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/clustering/src/java/org/apache/solr/handler/clustering/carrot2/CarrotClusteringEngine.java Mon Sep 10 02:22:01 2012
@@ -194,7 +194,7 @@ public class CarrotClusteringEngine exte
       try {
         configDir = "configDir=" + new File(resourceLoader.getConfigDir()).getAbsolutePath() + ", ";
       } catch (Exception ignored) {
-        // If we get the exception, the resource loader implementation 
+        // If we get the exception, the resource loader implementation
         // probably does not support getConfigDir(). Not a big problem.
       }
       

Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDIHEndToEnd.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDIHEndToEnd.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDIHEndToEnd.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDIHEndToEnd.java Mon Sep 10 02:22:01 2012
@@ -39,7 +39,7 @@ public class TestDIHEndToEnd extends Abs
     assertQ(req("COUNTRY_NAME:zealand"), "//*[@numFound='2']");
     assertQ(req("COUNTRY_NAME:niue"), "//*[@numFound='3']");
     
-    //It would be nice if there was a way to get it to run transformers before putting 
+    //It would be nice if there was a way to get it to run transformers before putting
     //data in the cache, then id=2 (person=Ethan, country=NU,NA,NE) could join...)
     //assertQ(req("COUNTRY_NAME:Netherlands"), "//*[@numFound='3']");
     

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/SolrLogFormatter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/SolrLogFormatter.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/SolrLogFormatter.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/SolrLogFormatter.java Mon Sep 10 02:22:01 2012
@@ -19,7 +19,7 @@ package org.apache.solr;
 
 import org.apache.solr.cloud.ZkController;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.cloud.ZkNodeProps;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.request.SolrQueryRequest;
@@ -99,7 +99,7 @@ public class SolrLogFormatter extends Fo
     static int maxCoreNum;
     String shortId;
     String url;
-    Map<String, String> coreProps;
+    Map<String, Object> coreProps;
   }
 
   Map<SolrCore, CoreInfo> coreInfoMap = new WeakHashMap<SolrCore, CoreInfo>();    // TODO: use something that survives across a core reload?
@@ -200,7 +200,7 @@ sb.append("(group_name=").append(tg.getN
           info.coreProps = getCoreProps(zkController, core);
         }
 
-        Map<String, String> coreProps = getCoreProps(zkController, core);
+        Map<String, Object> coreProps = getCoreProps(zkController, core);
         if(!coreProps.equals(info.coreProps)) {
           info.coreProps = coreProps;
           final String corePropsString = "coll:" + core.getCoreDescriptor().getCloudDescriptor().getCollectionName() + " core:" + core.getName() + " props:" + coreProps;
@@ -261,9 +261,9 @@ sb.append("(group_name=").append(tg.getN
     return sb.toString();
   }
 
-  private Map<String,String> getCoreProps(ZkController zkController, SolrCore core) {
+  private Map<String,Object> getCoreProps(ZkController zkController, SolrCore core) {
     final String collection = core.getCoreDescriptor().getCloudDescriptor().getCollectionName();
-    ZkNodeProps props = zkController.getClusterState().getShardProps(collection,  ZkStateReader.getCoreNodeName(zkController.getNodeName(), core.getName()));
+    Replica props = zkController.getClusterState().getShardProps(collection,  ZkStateReader.getCoreNodeName(zkController.getNodeName(), core.getName()));
     if(props!=null) {
       return props.getProperties(); 
     }

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/AssignShard.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/AssignShard.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/AssignShard.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/AssignShard.java Mon Sep 10 02:22:01 2012
@@ -56,7 +56,7 @@ public class AssignShard {
     // else figure out which shard needs more replicas
     final Map<String, Integer> map = new HashMap<String, Integer>();
     for (String shardId : shardIdNames) {
-      int cnt = sliceMap.get(shardId).getShards().size();
+      int cnt = sliceMap.get(shardId).getReplicasMap().size();
       map.put(shardId, cnt);
     }
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java Mon Sep 10 02:22:01 2012
@@ -8,6 +8,7 @@ import java.util.Set;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
@@ -89,10 +90,10 @@ class ShardLeaderElectionContextBase ext
     zkClient.makePath(leaderPath, ZkStateReader.toJSON(leaderProps),
         CreateMode.EPHEMERAL, true);
     
-    ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, "leader",
+    ZkNodeProps m = ZkNodeProps.fromKeyVals(Overseer.QUEUE_OPERATION, "leader",
         ZkStateReader.SHARD_ID_PROP, shardId, ZkStateReader.COLLECTION_PROP,
         collection, ZkStateReader.BASE_URL_PROP, leaderProps.getProperties()
-            .get(ZkStateReader.BASE_URL_PROP), ZkStateReader.CORE_NAME_PROP,
+        .get(ZkStateReader.BASE_URL_PROP), ZkStateReader.CORE_NAME_PROP,
         leaderProps.getProperties().get(ZkStateReader.CORE_NAME_PROP),
         ZkStateReader.STATE_PROP, ZkStateReader.ACTIVE);
     Overseer.getInQueue(zkClient).offer(ZkStateReader.toJSON(m));
@@ -133,7 +134,7 @@ final class ShardLeaderElectionContext e
       InterruptedException, IOException {
     log.info("Running the leader process. afterExpiration=" + afterExpiration);
     
-    String coreName = leaderProps.get(ZkStateReader.CORE_NAME_PROP);
+    String coreName = leaderProps.getStr(ZkStateReader.CORE_NAME_PROP);
     
     // clear the leader in clusterstate
     ZkNodeProps m = new ZkNodeProps(Overseer.QUEUE_OPERATION, "leader",
@@ -244,11 +245,11 @@ final class ShardLeaderElectionContext e
     while (true && !isClosed) {
       // wait for everyone to be up
       if (slices != null) {
-        Map<String,ZkNodeProps> shards = slices.getShards();
-        Set<Entry<String,ZkNodeProps>> entrySet = shards.entrySet();
+        Map<String,Replica> shards = slices.getReplicasMap();
+        Set<Entry<String,Replica>> entrySet = shards.entrySet();
         int found = 0;
         tryAgain = false;
-        for (Entry<String,ZkNodeProps> entry : entrySet) {
+        for (Entry<String,Replica> entry : entrySet) {
           ZkCoreNodeProps props = new ZkCoreNodeProps(entry.getValue());
           if (props.getState().equals(ZkStateReader.ACTIVE)
               && zkController.getClusterState().liveNodesContain(
@@ -259,16 +260,16 @@ final class ShardLeaderElectionContext e
         
         // on startup and after connection timeout, wait for all known shards
         if ((afterExpiration || !weAreReplacement)
-            && found >= slices.getShards().size()) {
+            && found >= slices.getReplicasMap().size()) {
           log.info("Enough replicas found to continue.");
           break;
-        } else if (!afterExpiration && found >= slices.getShards().size() - 1) {
+        } else if (!afterExpiration && found >= slices.getReplicasMap().size() - 1) {
           // a previous leader went down - wait for one less than the total
           // known shards
           log.info("Enough replicas found to continue.");
           break;
         } else {
-          log.info("Waiting until we see more replicas up: total=" + slices.getShards().size() + " found=" + found + " timeoutin=" + (timeoutAt - System.currentTimeMillis()));
+          log.info("Waiting until we see more replicas up: total=" + slices.getReplicasMap().size() + " found=" + found + " timeoutin=" + (timeoutAt - System.currentTimeMillis()));
         }
   
         if (System.currentTimeMillis() > timeoutAt) {
@@ -310,16 +311,16 @@ final class ShardLeaderElectionContext e
     ClusterState clusterState = zkController.getZkStateReader().getClusterState();
     Map<String,Slice> slices = clusterState.getSlices(this.collection);
     Slice slice = slices.get(shardId);
-    Map<String,ZkNodeProps> shards = slice.getShards();
+    Map<String,Replica> shards = slice.getReplicasMap();
     boolean foundSomeoneElseActive = false;
-    for (Map.Entry<String,ZkNodeProps> shard : shards.entrySet()) {
-      String state = shard.getValue().get(ZkStateReader.STATE_PROP);
+    for (Map.Entry<String,Replica> shard : shards.entrySet()) {
+      String state = shard.getValue().getStr(ZkStateReader.STATE_PROP);
 
       if (new ZkCoreNodeProps(shard.getValue()).getCoreUrl().equals(
               new ZkCoreNodeProps(leaderProps).getCoreUrl())) {
         if (state.equals(ZkStateReader.ACTIVE)
-          && clusterState.liveNodesContain(shard.getValue().get(
-              ZkStateReader.NODE_NAME_PROP))) {
+          && clusterState.liveNodesContain(shard.getValue().getStr(
+            ZkStateReader.NODE_NAME_PROP))) {
           // we are alive
           log.info("I am Active and live, it's okay to be the leader.");
           return true;
@@ -327,8 +328,8 @@ final class ShardLeaderElectionContext e
       }
       
       if ((state.equals(ZkStateReader.ACTIVE))
-          && clusterState.liveNodesContain(shard.getValue().get(
-              ZkStateReader.NODE_NAME_PROP))
+          && clusterState.liveNodesContain(shard.getValue().getStr(
+          ZkStateReader.NODE_NAME_PROP))
           && !new ZkCoreNodeProps(shard.getValue()).getCoreUrl().equals(
               new ZkCoreNodeProps(leaderProps).getCoreUrl())) {
         foundSomeoneElseActive = true;
@@ -354,15 +355,15 @@ final class ShardLeaderElectionContext e
     ClusterState clusterState = zkController.getZkStateReader().getClusterState();
     Map<String,Slice> slices = clusterState.getSlices(this.collection);
     Slice slice = slices.get(shardId);
-    Map<String,ZkNodeProps> shards = slice.getShards();
+    Map<String,Replica> shards = slice.getReplicasMap();
 
-    for (Map.Entry<String,ZkNodeProps> shard : shards.entrySet()) {
-      String state = shard.getValue().get(ZkStateReader.STATE_PROP);
+    for (Map.Entry<String,Replica> shard : shards.entrySet()) {
+      String state = shard.getValue().getStr(ZkStateReader.STATE_PROP);
 
       
       if ((state.equals(ZkStateReader.ACTIVE))
-          && clusterState.liveNodesContain(shard.getValue().get(
-              ZkStateReader.NODE_NAME_PROP))) {
+          && clusterState.liveNodesContain(shard.getValue().getStr(
+          ZkStateReader.NODE_NAME_PROP))) {
         return true;
       }
     }

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/Overseer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/Overseer.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/Overseer.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/Overseer.java Mon Sep 10 02:22:01 2012
@@ -26,6 +26,7 @@ import java.util.Map.Entry;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.ClosableThread;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
@@ -87,7 +88,7 @@ public class Overseer {
                 while (head != null && amILeader()) {
                   final ZkNodeProps message = ZkNodeProps.load(head);
                   final String operation = message
-                      .get(QUEUE_OPERATION);
+                      .getStr(QUEUE_OPERATION);
                   clusterState = processMessage(clusterState, message, operation);
                   zkClient.setData(ZkStateReader.CLUSTER_STATE,
                       ZkStateReader.toJSON(clusterState), true);
@@ -123,7 +124,7 @@ public class Overseer {
               
               while (head != null) {
                 final ZkNodeProps message = ZkNodeProps.load(head);
-                final String operation = message.get(QUEUE_OPERATION);
+                final String operation = message.getStr(QUEUE_OPERATION);
                 
                 clusterState = processMessage(clusterState, message, operation);
                 workQueue.offer(head);
@@ -168,15 +169,15 @@ public class Overseer {
       } else if (ZkStateReader.LEADER_PROP.equals(operation)) {
 
         StringBuilder sb = new StringBuilder();
-        String baseUrl = message.get(ZkStateReader.BASE_URL_PROP);
-        String coreName = message.get(ZkStateReader.CORE_NAME_PROP);
+        String baseUrl = message.getStr(ZkStateReader.BASE_URL_PROP);
+        String coreName = message.getStr(ZkStateReader.CORE_NAME_PROP);
         sb.append(baseUrl);
         if (baseUrl != null && !baseUrl.endsWith("/")) sb.append("/");
         sb.append(coreName == null ? "" : coreName);
         if (!(sb.substring(sb.length() - 1).equals("/"))) sb.append("/");
         clusterState = setShardLeader(clusterState,
-            message.get(ZkStateReader.COLLECTION_PROP),
-            message.get(ZkStateReader.SHARD_ID_PROP),
+            message.getStr(ZkStateReader.COLLECTION_PROP),
+            message.getStr(ZkStateReader.SHARD_ID_PROP),
             sb.length() > 0 ? sb.toString() : null);
 
       } else {
@@ -189,7 +190,7 @@ public class Overseer {
       private boolean amILeader() {
         try {
           ZkNodeProps props = ZkNodeProps.load(zkClient.getData("/overseer_elect/leader", null, null, true));
-          if(myId.equals(props.get("id"))) {
+          if(myId.equals(props.getStr("id"))) {
             return true;
           }
         } catch (KeeperException e) {
@@ -204,9 +205,9 @@ public class Overseer {
        * Try to assign core to the cluster. 
        */
       private ClusterState updateState(ClusterState state, final ZkNodeProps message) {
-        final String collection = message.get(ZkStateReader.COLLECTION_PROP);
-        final String zkCoreNodeName = message.get(ZkStateReader.NODE_NAME_PROP) + "_" + message.get(ZkStateReader.CORE_NAME_PROP);
-        final Integer numShards = message.get(ZkStateReader.NUM_SHARDS_PROP)!=null?Integer.parseInt(message.get(ZkStateReader.NUM_SHARDS_PROP)):null;
+        final String collection = message.getStr(ZkStateReader.COLLECTION_PROP);
+        final String zkCoreNodeName = message.getStr(ZkStateReader.NODE_NAME_PROP) + "_" + message.getStr(ZkStateReader.CORE_NAME_PROP);
+        final Integer numShards = message.getStr(ZkStateReader.NUM_SHARDS_PROP)!=null?Integer.parseInt(message.getStr(ZkStateReader.NUM_SHARDS_PROP)):null;
         
         //collection does not yet exist, create placeholders if num shards is specified
         if (!state.getCollections().contains(collection)
@@ -215,9 +216,9 @@ public class Overseer {
         }
         
         // use the provided non null shardId
-        String shardId = message.get(ZkStateReader.SHARD_ID_PROP);
+        String shardId = message.getStr(ZkStateReader.SHARD_ID_PROP);
         if (shardId == null) {
-          String nodeName = message.get(ZkStateReader.NODE_NAME_PROP);
+          String nodeName = message.getStr(ZkStateReader.NODE_NAME_PROP);
           //get shardId from ClusterState
           shardId = getAssignedId(state, nodeName, message);
         }
@@ -226,22 +227,22 @@ public class Overseer {
           shardId = AssignShard.assignShard(collection, state, numShards);
         }
           
-          Map<String,String> props = new HashMap<String,String>();
-          Map<String,String> coreProps = new HashMap<String,String>(message.getProperties().size());
+          Map<String,Object> props = new HashMap<String,Object>();
+          Map<String,Object> coreProps = new HashMap<String,Object>(message.getProperties().size());
           coreProps.putAll(message.getProperties());
           // we don't put num_shards in the clusterstate
           coreProps.remove(ZkStateReader.NUM_SHARDS_PROP);
           coreProps.remove(QUEUE_OPERATION);
-          for (Entry<String,String> entry : coreProps.entrySet()) {
+          for (Entry<String,Object> entry : coreProps.entrySet()) {
             props.put(entry.getKey(), entry.getValue());
           }
-          ZkNodeProps zkProps = new ZkNodeProps(props);
+          Replica zkProps = new Replica(zkCoreNodeName, props);
           Slice slice = state.getSlice(collection, shardId);
-          Map<String,ZkNodeProps> shardProps;
+          Map<String,Replica> shardProps;
           if (slice == null) {
-            shardProps = new HashMap<String,ZkNodeProps>();
+            shardProps = new HashMap<String,Replica>();
           } else {
-            shardProps = state.getSlice(collection, shardId).getShardsCopy();
+            shardProps = state.getSlice(collection, shardId).getReplicasCopy();
           }
           shardProps.put(zkCoreNodeName, zkProps);
 
@@ -268,11 +269,11 @@ public class Overseer {
        */
       private String getAssignedId(final ClusterState state, final String nodeName,
           final ZkNodeProps coreState) {
-        final String key = coreState.get(ZkStateReader.NODE_NAME_PROP) + "_" +  coreState.get(ZkStateReader.CORE_NAME_PROP);
-        Map<String, Slice> slices = state.getSlices(coreState.get(ZkStateReader.COLLECTION_PROP));
+        final String key = coreState.getStr(ZkStateReader.NODE_NAME_PROP) + "_" +  coreState.getStr(ZkStateReader.CORE_NAME_PROP);
+        Map<String, Slice> slices = state.getSlices(coreState.getStr(ZkStateReader.COLLECTION_PROP));
         if (slices != null) {
           for (Slice slice : slices.values()) {
-            if (slice.getShards().get(key) != null) {
+            if (slice.getReplicasMap().get(key) != null) {
               return slice.getName();
             }
           }
@@ -293,16 +294,16 @@ public class Overseer {
         if (!slices.containsKey(slice.getName())) {
           slices.put(slice.getName(), slice);
         } else {
-          final Map<String,ZkNodeProps> shards = new LinkedHashMap<String,ZkNodeProps>();
+          final Map<String,Replica> shards = new LinkedHashMap<String,Replica>();
           final Slice existingSlice = slices.get(slice.getName());
-          shards.putAll(existingSlice.getShards());
+          shards.putAll(existingSlice.getReplicasMap());
           //XXX preserve existing leader
-          for(Entry<String, ZkNodeProps> edit: slice.getShards().entrySet()) {
-            if(existingSlice.getShards().get(edit.getKey())!=null && existingSlice.getShards().get(edit.getKey()).containsKey(ZkStateReader.LEADER_PROP)) {
-              HashMap<String, String> newProps = new HashMap<String,String>();
+          for(Entry<String, Replica> edit: slice.getReplicasMap().entrySet()) {
+            if(existingSlice.getReplicasMap().get(edit.getKey())!=null && existingSlice.getReplicasMap().get(edit.getKey()).containsKey(ZkStateReader.LEADER_PROP)) {
+              HashMap<String, Object> newProps = new HashMap<String,Object>();
               newProps.putAll(edit.getValue().getProperties());
-              newProps.put(ZkStateReader.LEADER_PROP, existingSlice.getShards().get(edit.getKey()).get(ZkStateReader.LEADER_PROP));
-              shards.put(edit.getKey(), new ZkNodeProps(newProps));
+              newProps.put(ZkStateReader.LEADER_PROP, existingSlice.getReplicasMap().get(edit.getKey()).getStr(ZkStateReader.LEADER_PROP));
+              shards.put(edit.getKey(), new Replica(edit.getKey(), newProps));
             } else {
               shards.put(edit.getKey(), edit.getValue());
             }
@@ -329,9 +330,9 @@ public class Overseer {
           log.error("Could not mark leader for non existing slice:" + sliceName);
           return state;
         } else {
-          final Map<String,ZkNodeProps> newShards = new LinkedHashMap<String,ZkNodeProps>();
-          for(Entry<String, ZkNodeProps> shard: slices.get(sliceName).getShards().entrySet()) {
-            Map<String, String> newShardProps = new LinkedHashMap<String,String>();
+          final Map<String,Replica> newShards = new LinkedHashMap<String,Replica>();
+          for(Entry<String, Replica> shard: slices.get(sliceName).getReplicasMap().entrySet()) {
+            Map<String, Object> newShardProps = new LinkedHashMap<String,Object>();
             newShardProps.putAll(shard.getValue().getProperties());
             
             newShardProps.remove(ZkStateReader.LEADER_PROP);  //clean any previously existed flag
@@ -340,7 +341,7 @@ public class Overseer {
             if(leaderUrl!=null && leaderUrl.equals(zkCoreNodeProps.getCoreUrl())) {
               newShardProps.put(ZkStateReader.LEADER_PROP,"true");
             }
-            newShards.put(shard.getKey(), new ZkNodeProps(newShardProps));
+            newShards.put(shard.getKey(), new Replica(shard.getKey(), newShardProps));
           }
           Slice slice = new Slice(sliceName, newShards);
           slices.put(sliceName, slice);
@@ -353,8 +354,8 @@ public class Overseer {
        */
       private ClusterState removeCore(final ClusterState clusterState, ZkNodeProps message) {
         
-        final String coreNodeName = message.get(ZkStateReader.NODE_NAME_PROP) + "_" + message.get(ZkStateReader.CORE_NAME_PROP);
-        final String collection = message.get(ZkStateReader.COLLECTION_PROP);
+        final String coreNodeName = message.getStr(ZkStateReader.NODE_NAME_PROP) + "_" + message.getStr(ZkStateReader.CORE_NAME_PROP);
+        final String collection = message.getStr(ZkStateReader.COLLECTION_PROP);
 
         final LinkedHashMap<String, Map<String, Slice>> newStates = new LinkedHashMap<String,Map<String,Slice>>();
         for(String collectionName: clusterState.getCollections()) {
@@ -362,9 +363,9 @@ public class Overseer {
             Map<String, Slice> slices = clusterState.getSlices(collection);
             LinkedHashMap<String, Slice> newSlices = new LinkedHashMap<String, Slice>();
             for(Slice slice: slices.values()) {
-              if(slice.getShards().containsKey(coreNodeName)) {
-                LinkedHashMap<String, ZkNodeProps> newShards = new LinkedHashMap<String, ZkNodeProps>();
-                newShards.putAll(slice.getShards());
+              if(slice.getReplicasMap().containsKey(coreNodeName)) {
+                LinkedHashMap<String, Replica> newShards = new LinkedHashMap<String, Replica>();
+                newShards.putAll(slice.getReplicasMap());
                 newShards.remove(coreNodeName);
                 
                 Slice newSlice = new Slice(slice.getName(), newShards);
@@ -376,7 +377,7 @@ public class Overseer {
             }
             int cnt = 0;
             for (Slice slice : newSlices.values()) {
-              cnt+=slice.getShards().size();
+              cnt+=slice.getReplicasMap().size();
             }
             // TODO: if no nodes are left after this unload
             // remove from zk - do we have a race where Overseer

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionProcessor.java Mon Sep 10 02:22:01 2012
@@ -26,6 +26,7 @@ import java.util.Set;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkNodeProps;
 import org.apache.solr.common.cloud.ZkStateReader;
@@ -84,13 +85,13 @@ public class OverseerCollectionProcessor
         
         //if (head != null) {    // should not happen since we block above
           final ZkNodeProps message = ZkNodeProps.load(head);
-          final String operation = message.get(QUEUE_OPERATION);
+          final String operation = message.getStr(QUEUE_OPERATION);
           
           boolean success = processMessage(message, operation);
           if (!success) {
             // TODO: what to do on failure / partial failure
             // if we fail, do we clean up then ?
-            SolrException.log(log, "Collection creation of " + message.get("name") + " failed");
+            SolrException.log(log, "Collection creation of " + message.getStr("name") + " failed");
           }
         //}
         workQueue.remove();
@@ -118,7 +119,7 @@ public class OverseerCollectionProcessor
     try {
       ZkNodeProps props = ZkNodeProps.load(zkStateReader.getZkClient().getData(
           "/overseer_elect/leader", null, null, true));
-      if (myId.equals(props.get("id"))) {
+      if (myId.equals(props.getStr("id"))) {
         return true;
       }
     } catch (KeeperException e) {
@@ -152,7 +153,7 @@ public class OverseerCollectionProcessor
     // look at the replication factor and see if it matches reality
     // if it does not, find best nodes to create more cores
     
-    String numReplicasString = message.get("numReplicas");
+    String numReplicasString = message.getStr("numReplicas");
     int numReplicas;
     try {
       numReplicas = numReplicasString == null ? 0 : Integer.parseInt(numReplicasString);
@@ -160,7 +161,7 @@ public class OverseerCollectionProcessor
       SolrException.log(log, "Could not parse numReplicas", ex);
       return false;
     }
-    String numShardsString = message.get("numShards");
+    String numShardsString = message.getStr("numShards");
     int numShards;
     try {
       numShards = numShardsString == null ? 0 : Integer.parseInt(numShardsString);
@@ -169,8 +170,8 @@ public class OverseerCollectionProcessor
       return false;
     }
     
-    String name = message.get("name");
-    String configName = message.get("collection.configName");
+    String name = message.getStr("name");
+    String configName = message.getStr("collection.configName");
     
     // we need to look at every node and see how many cores it serves
     // add our new cores to existing nodes serving the least number of cores
@@ -237,7 +238,7 @@ public class OverseerCollectionProcessor
   
   private boolean collectionCmd(ClusterState clusterState, ZkNodeProps message, ModifiableSolrParams params) {
     log.info("Executing Collection Cmd : " + params);
-    String name = message.get("name");
+    String name = message.getStr("name");
     
     Map<String,Slice> slices = clusterState.getCollectionStates().get(name);
     
@@ -247,14 +248,14 @@ public class OverseerCollectionProcessor
     
     for (Map.Entry<String,Slice> entry : slices.entrySet()) {
       Slice slice = entry.getValue();
-      Map<String,ZkNodeProps> shards = slice.getShards();
-      Set<Map.Entry<String,ZkNodeProps>> shardEntries = shards.entrySet();
-      for (Map.Entry<String,ZkNodeProps> shardEntry : shardEntries) {
+      Map<String,Replica> shards = slice.getReplicasMap();
+      Set<Map.Entry<String,Replica>> shardEntries = shards.entrySet();
+      for (Map.Entry<String,Replica> shardEntry : shardEntries) {
         final ZkNodeProps node = shardEntry.getValue();
-        if (clusterState.liveNodesContain(node.get(ZkStateReader.NODE_NAME_PROP))) {
-          params.set(CoreAdminParams.CORE, node.get(ZkStateReader.CORE_NAME_PROP));
+        if (clusterState.liveNodesContain(node.getStr(ZkStateReader.NODE_NAME_PROP))) {
+          params.set(CoreAdminParams.CORE, node.getStr(ZkStateReader.CORE_NAME_PROP));
 
-          String replica = node.get(ZkStateReader.BASE_URL_PROP);
+          String replica = node.getStr(ZkStateReader.BASE_URL_PROP);
           ShardRequest sreq = new ShardRequest();
           // yes, they must use same admin handler path everywhere...
           params.set("qt", adminPath);

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java Mon Sep 10 02:22:01 2012
@@ -119,7 +119,7 @@ public class RecoveryStrategy extends Th
   private void replicate(String nodeName, SolrCore core, ZkNodeProps leaderprops, String baseUrl)
       throws SolrServerException, IOException {
    
-    String leaderBaseUrl = leaderprops.get(ZkStateReader.BASE_URL_PROP);
+    String leaderBaseUrl = leaderprops.getStr(ZkStateReader.BASE_URL_PROP);
     ZkCoreNodeProps leaderCNodeProps = new ZkCoreNodeProps(leaderprops);
     String leaderUrl = leaderCNodeProps.getCoreUrl();
     
@@ -318,8 +318,8 @@ public class RecoveryStrategy extends Th
         ZkNodeProps leaderprops = zkStateReader.getLeaderProps(
             cloudDesc.getCollectionName(), cloudDesc.getShardId());
 
-        String leaderBaseUrl = leaderprops.get(ZkStateReader.BASE_URL_PROP);
-        String leaderCoreName = leaderprops.get(ZkStateReader.CORE_NAME_PROP);
+        String leaderBaseUrl = leaderprops.getStr(ZkStateReader.BASE_URL_PROP);
+        String leaderCoreName = leaderprops.getStr(ZkStateReader.CORE_NAME_PROP);
 
         String leaderUrl = ZkCoreNodeProps.getCoreUrl(leaderBaseUrl, leaderCoreName);
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/SyncStrategy.java Mon Sep 10 02:22:01 2012
@@ -29,6 +29,7 @@ import org.apache.solr.client.solrj.impl
 import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestRecovery;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -136,9 +137,9 @@ public class SyncStrategy {
     ClusterState clusterState = zkController.getZkStateReader().getClusterState();
     Map<String,Slice> slices = clusterState.getSlices(collection);
     Slice slice = slices.get(shardId);
-    Map<String,ZkNodeProps> shards = slice.getShards();
-    for (Map.Entry<String,ZkNodeProps> shard : shards.entrySet()) {
-      String state = shard.getValue().get(ZkStateReader.STATE_PROP);
+    Map<String,Replica> shards = slice.getReplicasMap();
+    for (Map.Entry<String,Replica> shard : shards.entrySet()) {
+      String state = shard.getValue().getStr(ZkStateReader.STATE_PROP);
 //      System.out.println("state:"
 //          + state
 //          + shard.getValue().get(ZkStateReader.NODE_NAME_PROP)
@@ -146,8 +147,8 @@ public class SyncStrategy {
 //          + clusterState.liveNodesContain(shard.getValue().get(
 //              ZkStateReader.NODE_NAME_PROP)));
       if ((state.equals(ZkStateReader.ACTIVE))
-          && clusterState.liveNodesContain(shard.getValue().get(
-              ZkStateReader.NODE_NAME_PROP))
+          && clusterState.liveNodesContain(shard.getValue().getStr(
+          ZkStateReader.NODE_NAME_PROP))
           && !new ZkCoreNodeProps(shard.getValue()).getCoreUrl().equals(
               new ZkCoreNodeProps(leaderProps).getCoreUrl())) {
         return true;
@@ -161,8 +162,8 @@ public class SyncStrategy {
       ZkNodeProps props, String collection, String shardId) {
     List<ZkCoreNodeProps> nodes = zkController.getZkStateReader()
         .getReplicaProps(collection, shardId,
-            props.get(ZkStateReader.NODE_NAME_PROP),
-            props.get(ZkStateReader.CORE_NAME_PROP), ZkStateReader.ACTIVE); // TODO:
+            props.getStr(ZkStateReader.NODE_NAME_PROP),
+            props.getStr(ZkStateReader.CORE_NAME_PROP), ZkStateReader.ACTIVE); // TODO:
     // TODO should there be a state filter?
     
     if (nodes == null) {
@@ -191,8 +192,8 @@ public class SyncStrategy {
     List<ZkCoreNodeProps> nodes = zkController
         .getZkStateReader()
         .getReplicaProps(collection, shardId,
-            leaderProps.get(ZkStateReader.NODE_NAME_PROP),
-            leaderProps.get(ZkStateReader.CORE_NAME_PROP), ZkStateReader.ACTIVE);
+            leaderProps.getStr(ZkStateReader.NODE_NAME_PROP),
+            leaderProps.getStr(ZkStateReader.CORE_NAME_PROP), ZkStateReader.ACTIVE);
     if (nodes == null) {
       log.info(ZkCoreNodeProps.getCoreUrl(leaderProps) + " has no replicas");
       return;

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/cloud/ZkController.java Mon Sep 10 02:22:01 2012
@@ -41,7 +41,6 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.OnReconnect;
 import org.apache.solr.common.cloud.SolrZkClient;
-import org.apache.solr.common.cloud.ZkClientConnectionStrategy;
 import org.apache.solr.common.cloud.ZkCmdExecutor;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -492,7 +491,7 @@ public final class ZkController {
     
     if(data != null) {
       ZkNodeProps props = ZkNodeProps.load(data);
-      configName = props.get(CONFIGNAME_PROP);
+      configName = props.getStr(CONFIGNAME_PROP);
     }
     
     if (configName != null && !zkClient.exists(CONFIGS_ZKNODE + "/" + configName, true)) {
@@ -539,7 +538,7 @@ public final class ZkController {
     
     String shardId = cloudDesc.getShardId();
 
-    Map<String,String> props = new HashMap<String,String>();
+    Map<String,Object> props = new HashMap<String,Object>();
  // we only put a subset of props into the leader node
     props.put(ZkStateReader.BASE_URL_PROP, baseUrl);
     props.put(ZkStateReader.CORE_NAME_PROP, coreName);
@@ -695,7 +694,7 @@ public final class ZkController {
     
     String shardId = cd.getCloudDescriptor().getShardId();
     
-    Map<String,String> props = new HashMap<String,String>();
+    Map<String,Object> props = new HashMap<String,Object>();
     // we only put a subset of props into the leader node
     props.put(ZkStateReader.BASE_URL_PROP, getBaseUrl());
     props.put(ZkStateReader.CORE_NAME_PROP, cd.getName());
@@ -872,7 +871,7 @@ public final class ZkController {
        SolrParams params = cd.getParams();
 
         try {
-          Map<String,String> collectionProps = new HashMap<String,String>();
+          Map<String,Object> collectionProps = new HashMap<String,Object>();
           // TODO: if collection.configName isn't set, and there isn't already a conf in zk, just use that?
           String defaultConfigName = System.getProperty(COLLECTION_PARAM_PREFIX+CONFIGNAME_PROP, collection);
 
@@ -937,7 +936,7 @@ public final class ZkController {
 
 
   private void getConfName(String collection, String collectionPath,
-      Map<String,String> collectionProps) throws KeeperException,
+      Map<String,Object> collectionProps) throws KeeperException,
       InterruptedException {
     // check for configName
     log.info("Looking for collection configName");
@@ -1168,7 +1167,7 @@ public final class ZkController {
     ZkNodeProps props = null;
     if(data != null) {
       props = ZkNodeProps.load(data);
-      Map<String,String> newProps = new HashMap<String,String>();
+      Map<String,Object> newProps = new HashMap<String,Object>();
       newProps.putAll(props.getProperties());
       newProps.put(CONFIGNAME_PROP, confSetName);
       props = new ZkNodeProps(newProps);

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/UpdateRequestHandler.java Mon Sep 10 02:22:01 2012
@@ -74,7 +74,7 @@ public class UpdateRequestHandler extend
       if(type == null) {
         type = stream.getContentType();
       }
-      if( type == null ) { // Normal requests will not get here. 
+      if( type == null ) { // Normal requests will not get here.
         throw new SolrException(ErrorCode.BAD_REQUEST, "Missing ContentType");
       }
       int idx = type.indexOf(';');

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Mon Sep 10 02:22:01 2012
@@ -851,7 +851,7 @@ public class CoreAdminHandler extends Re
       if (core != null) {
         SyncStrategy syncStrategy = new SyncStrategy();
 
-        Map<String,String> props = new HashMap<String,String>();
+        Map<String,Object> props = new HashMap<String,Object>();
         props.put(ZkStateReader.BASE_URL_PROP, zkController.getBaseUrl());
         props.put(ZkStateReader.CORE_NAME_PROP, cname);
         props.put(ZkStateReader.NODE_NAME_PROP, zkController.getNodeName());
@@ -934,9 +934,9 @@ public class CoreAdminHandler extends Re
           Slice slice = clusterState.getSlice(collection,
               cloudDescriptor.getShardId());
           if (slice != null) {
-            ZkNodeProps nodeProps = slice.getShards().get(coreNodeName);
+            ZkNodeProps nodeProps = slice.getReplicasMap().get(coreNodeName);
             if (nodeProps != null) {
-              state = nodeProps.get(ZkStateReader.STATE_PROP);
+              state = nodeProps.getStr(ZkStateReader.STATE_PROP);
               live = clusterState.liveNodesContain(nodeName);
               if (nodeProps != null && state.equals(waitForState)) {
                 if (checkLive == null) {

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java Mon Sep 10 02:22:01 2012
@@ -70,7 +70,7 @@ import java.util.Set;
  * the registered invariant param for wt.
  * 
  * If you want to override the contentType header returned for a given file, you can
- * set it directly using: {@link #USE_CONTENT_TYPE}.  For example, to get a plain text 
+ * set it directly using: {@link #USE_CONTENT_TYPE}.  For example, to get a plain text
  * version of schema.xml, try:
  * <pre>
  *   http://localhost:8983/solr/admin/file?file=schema.xml&contentType=text/plain

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java Mon Sep 10 02:22:01 2012
@@ -42,6 +42,7 @@ import org.apache.solr.cloud.ZkControlle
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -350,7 +351,7 @@ public class HttpShardHandler extends Sh
               // throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "no such shard: " + sliceName);
             }
 
-            Map<String, ZkNodeProps> sliceShards = slice.getShards();
+            Map<String, Replica> sliceShards = slice.getReplicasMap();
 
             // For now, recreate the | delimited list of equivalent servers
             Set<String> liveNodes = clusterState.getLiveNodes();

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/FieldType.java Mon Sep 10 02:22:01 2012
@@ -539,7 +539,7 @@ public abstract class FieldType extends 
   public abstract SortField getSortField(SchemaField field, boolean top);
 
   /**
-   * Utility usable by subclasses when they want to get basic String sorting 
+   * Utility usable by subclasses when they want to get basic String sorting
    * using common checks.
    * @see SchemaField#checkSortability
    */

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/RandomSortField.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/RandomSortField.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/RandomSortField.java Mon Sep 10 02:22:01 2012
@@ -76,7 +76,7 @@ public class RandomSortField extends Fie
   }
 
   /** 
-   * Given a field name and an IndexReader, get a random hash seed.  
+   * Given a field name and an IndexReader, get a random hash seed.
    * Using dynamic fields, you can force the random order to change 
    */
   private static int getSeed(String fieldName, AtomicReaderContext context) {

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/schema/SchemaField.java Mon Sep 10 02:22:01 2012
@@ -158,7 +158,7 @@ public final class SchemaField extends F
 
   /** 
    * Sanity checks that the properties of this field type are plausible 
-   * for a field that may be used to get a FieldCacheSource, throwing 
+   * for a field that may be used to get a FieldCacheSource, throwing
    * an appropriate exception (including the field name) if it is not.  
    * FieldType subclasses can choose to call this method in their 
    * getValueSource implementation 

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java Mon Sep 10 02:22:01 2012
@@ -40,6 +40,7 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkNodeProps;
 import org.apache.solr.common.cloud.ZkStateReader;
@@ -335,10 +336,10 @@ public class SolrDispatchFilter implemen
       }
       
       // check everyone then
-      Map<String,ZkNodeProps> shards = entry.getValue().getShards();
-      Set<Entry<String,ZkNodeProps>> shardEntries = shards.entrySet();
-      for (Entry<String,ZkNodeProps> shardEntry : shardEntries) {
-        ZkNodeProps zkProps = shardEntry.getValue();
+      Map<String,Replica> shards = entry.getValue().getReplicasMap();
+      Set<Entry<String,Replica>> shardEntries = shards.entrySet();
+      for (Entry<String,Replica> shardEntry : shardEntries) {
+        Replica zkProps = shardEntry.getValue();
         core = checkProps(cores, path, zkProps);
         if (core != null) {
           break done;
@@ -352,8 +353,8 @@ public class SolrDispatchFilter implemen
       ZkNodeProps zkProps) {
     String corename;
     SolrCore core = null;
-    if (cores.getZkController().getNodeName().equals(zkProps.get(ZkStateReader.NODE_NAME_PROP))) {
-      corename = zkProps.get(ZkStateReader.CORE_NAME_PROP);
+    if (cores.getZkController().getNodeName().equals(zkProps.getStr(ZkStateReader.NODE_NAME_PROP))) {
+      corename = zkProps.getStr(ZkStateReader.CORE_NAME_PROP);
       core = cores.getCore(corename);
     }
     return core;

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java Mon Sep 10 02:22:01 2012
@@ -37,6 +37,7 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
 import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -1062,9 +1063,9 @@ public class DistributedUpdateProcessor 
     for (Map.Entry<String,Slice> sliceEntry : slices.entrySet()) {
       Slice replicas = slices.get(sliceEntry.getKey());
 
-      Map<String,ZkNodeProps> shardMap = replicas.getShards();
+      Map<String,Replica> shardMap = replicas.getReplicasMap();
       
-      for (Entry<String,ZkNodeProps> entry : shardMap.entrySet()) {
+      for (Entry<String,Replica> entry : shardMap.entrySet()) {
         ZkCoreNodeProps nodeProps = new ZkCoreNodeProps(entry.getValue());
         if (clusterState.liveNodesContain(nodeProps.getNodeName()) && !entry.getKey().equals(shardZkNodeName)) {
           urls.add(new StdNode(nodeProps));

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/processor/FieldMutatingUpdateProcessorFactory.java Mon Sep 10 02:22:01 2012
@@ -68,7 +68,7 @@ import org.apache.solr.util.plugin.SolrC
  * containing any of the above criteria, identifying fields to be excluded 
  * from seelction even if they match the selection criteria.  As with the main 
  * selection critiera a field must match all of criteria in a single exclusion 
- * in order to be excluded, but multiple exclusions may be specified to get an 
+ * in order to be excluded, but multiple exclusions may be specified to get an
  * <code>OR</code> behavior
  * </p>
  *

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/analysis/TestReversedWildcardFilterFactory.java Mon Sep 10 02:22:01 2012
@@ -162,7 +162,7 @@ public class TestReversedWildcardFilterF
     Query q = qp.parse(query);
     if (!(q instanceof AutomatonQuery))
       return false;
-    // this is a hack to get the protected Automaton field in AutomatonQuery, 
+    // this is a hack to get the protected Automaton field in AutomatonQuery,
     // may break in later lucene versions - we have no getter... for good reasons.
     final Field automatonField = AutomatonQuery.class.getDeclaredField("automaton");
     automatonField.setAccessible(true);

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZk2Test.java Mon Sep 10 02:22:01 2012
@@ -34,9 +34,6 @@ import org.apache.solr.common.params.Com
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.servlet.SolrDispatchFilter;
 
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
-
 /**
  * This test simply does a bunch of basic things in solrcloud mode and asserts things
  * work as expected.
@@ -106,7 +103,7 @@ public class BasicDistributedZk2Test ext
       ZkNodeProps leaderProps = zkStateReader.getLeaderProps(
           DEFAULT_COLLECTION, SHARD2);
       
-      String nodeName = leaderProps.get(ZkStateReader.NODE_NAME_PROP);
+      String nodeName = leaderProps.getStr(ZkStateReader.NODE_NAME_PROP);
       chaosMonkey.stopShardExcept(SHARD2, nodeName);
       
       SolrServer client = getClient(nodeName);

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java Mon Sep 10 02:22:01 2012
@@ -58,6 +58,7 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.ZkCoreNodeProps;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -70,9 +71,6 @@ import org.apache.solr.common.util.Named
 import org.apache.solr.update.SolrCmdDistributor.Request;
 import org.apache.solr.util.DefaultSolrThreadFactory;
 
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakAction.Action;
-
 /**
  * This test simply does a bunch of basic things in solrcloud mode and asserts things
  * work as expected.
@@ -462,11 +460,11 @@ public class BasicDistributedZkTest exte
       Iterator<Entry<String,Slice>> it = slices.entrySet().iterator();
       while (it.hasNext()) {
         Entry<String,Slice> sliceEntry = it.next();
-        Map<String,ZkNodeProps> sliceShards = sliceEntry.getValue().getShards();
-        Iterator<Entry<String,ZkNodeProps>> shardIt = sliceShards.entrySet()
+        Map<String,Replica> sliceShards = sliceEntry.getValue().getReplicasMap();
+        Iterator<Entry<String,Replica>> shardIt = sliceShards.entrySet()
             .iterator();
         while (shardIt.hasNext()) {
-          Entry<String,ZkNodeProps> shardEntry = shardIt.next();
+          Entry<String,Replica> shardEntry = shardIt.next();
           ZkCoreNodeProps coreProps = new ZkCoreNodeProps(shardEntry.getValue());
           CoreAdminResponse mcr = CoreAdminRequest.getStatus(
               coreProps.getCoreName(),
@@ -491,11 +489,11 @@ public class BasicDistributedZkTest exte
     
     for (Map.Entry<String,Slice> entry : slices.entrySet()) {
       Slice slice = entry.getValue();
-      Map<String,ZkNodeProps> shards = slice.getShards();
-      Set<Map.Entry<String,ZkNodeProps>> shardEntries = shards.entrySet();
-      for (Map.Entry<String,ZkNodeProps> shardEntry : shardEntries) {
+      Map<String,Replica> shards = slice.getReplicasMap();
+      Set<Map.Entry<String,Replica>> shardEntries = shards.entrySet();
+      for (Map.Entry<String,Replica> shardEntry : shardEntries) {
         final ZkNodeProps node = shardEntry.getValue();
-        if (clusterState.liveNodesContain(node.get(ZkStateReader.NODE_NAME_PROP))) {
+        if (clusterState.liveNodesContain(node.getStr(ZkStateReader.NODE_NAME_PROP))) {
           return new ZkCoreNodeProps(node).getCoreUrl();
         }
       }
@@ -551,13 +549,13 @@ public class BasicDistributedZkTest exte
           Iterator<Entry<String,Slice>> it = slices.entrySet().iterator();
           while (it.hasNext()) {
             Entry<String,Slice> sliceEntry = it.next();
-            Map<String,ZkNodeProps> sliceShards = sliceEntry.getValue()
-                .getShards();
-            Iterator<Entry<String,ZkNodeProps>> shardIt = sliceShards
+            Map<String,Replica> sliceShards = sliceEntry.getValue()
+                .getReplicasMap();
+            Iterator<Entry<String,Replica>> shardIt = sliceShards
                 .entrySet().iterator();
             while (shardIt.hasNext()) {
-              Entry<String,ZkNodeProps> shardEntry = shardIt.next();
-              if (!shardEntry.getValue().get(ZkStateReader.STATE_PROP)
+              Entry<String,Replica> shardEntry = shardIt.next();
+              if (!shardEntry.getValue().getStr(ZkStateReader.STATE_PROP)
                   .equals(ZkStateReader.ACTIVE)) {
                 found = false;
                 break;
@@ -745,7 +743,7 @@ public class BasicDistributedZkTest exte
     
     assertAllActive(oneInstanceCollection2, solrj.getZkStateReader());
     
-   // TODO: enable when we don't falsely get slice1... 
+   // TODO: enable when we don't falsely get slice1...
    // solrj.getZkStateReader().getLeaderUrl(oneInstanceCollection2, "slice1", 30000);
    // solrj.getZkStateReader().getLeaderUrl(oneInstanceCollection2, "slice2", 30000);
     client2.add(getDoc(id, "1")); 
@@ -780,7 +778,7 @@ public class BasicDistributedZkTest exte
     zkStateReader.updateClusterState(true);
     Map<String,Slice> slices = zkStateReader.getClusterState().getSlices(oneInstanceCollection2);
     assertNotNull(slices);
-    String roles = slices.get("slice1").getShards().values().iterator().next().get(ZkStateReader.ROLES_PROP);
+    String roles = slices.get("slice1").getReplicasMap().values().iterator().next().getStr(ZkStateReader.ROLES_PROP);
     assertEquals("none", roles);
   }
 

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateTest.java Mon Sep 10 02:22:01 2012
@@ -25,7 +25,7 @@ import java.util.Set;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.Slice;
-import org.apache.solr.common.cloud.ZkNodeProps;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.junit.Test;
 
@@ -38,13 +38,13 @@ public class ClusterStateTest extends So
     liveNodes.add("node2");
     
     Map<String,Slice> slices = new HashMap<String,Slice>();
-    Map<String,ZkNodeProps> sliceToProps = new HashMap<String,ZkNodeProps>();
-    Map<String,String> props = new HashMap<String,String>();
+    Map<String,Replica> sliceToProps = new HashMap<String,Replica>();
+    Map<String,Object> props = new HashMap<String,Object>();
 
     props.put("prop1", "value");
     props.put("prop2", "value2");
-    ZkNodeProps zkNodeProps = new ZkNodeProps(props);
-    sliceToProps.put("node1", zkNodeProps);
+    Replica replica = new Replica("node1", props);
+    sliceToProps.put("node1", replica);
     Slice slice = new Slice("shard1", sliceToProps);
     slices.put("shard1", slice);
     Slice slice2 = new Slice("shard2", sliceToProps);
@@ -60,8 +60,8 @@ public class ClusterStateTest extends So
     assertEquals("Provided liveNodes not used properly", 2, loadedClusterState
         .getLiveNodes().size());
     assertEquals("No collections found", 2, loadedClusterState.getCollections().size());
-    assertEquals("Poperties not copied properly", zkNodeProps.get("prop1"), loadedClusterState.getSlice("collection1", "shard1").getShards().get("node1").get("prop1"));
-    assertEquals("Poperties not copied properly", zkNodeProps.get("prop2"), loadedClusterState.getSlice("collection1", "shard1").getShards().get("node1").get("prop2"));
+    assertEquals("Poperties not copied properly", replica.getStr("prop1"), loadedClusterState.getSlice("collection1", "shard1").getReplicasMap().get("node1").getStr("prop1"));
+    assertEquals("Poperties not copied properly", replica.getStr("prop2"), loadedClusterState.getSlice("collection1", "shard1").getReplicasMap().get("node1").getStr("prop2"));
 
     loadedClusterState = ClusterState.load(null, new byte[0], liveNodes);
     

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ClusterStateUpdateTest.java Mon Sep 10 02:22:01 2012
@@ -25,6 +25,7 @@ import java.util.Set;
 import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.Replica;
 import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -139,7 +140,7 @@ public class ClusterStateUpdateTest exte
     System.setProperty("solrcloud.update.delay", "1");
     
    
-    Map<String,String> props2 = new HashMap<String,String>();
+    Map<String,Object> props2 = new HashMap<String,Object>();
     props2.put("configName", "conf1");
     ZkNodeProps zkProps2 = new ZkNodeProps(props2);
     
@@ -173,7 +174,7 @@ public class ClusterStateUpdateTest exte
       slices = clusterState2.getSlices("testcore");
       
       if (slices != null && slices.containsKey("shard1")
-          && slices.get("shard1").getShards().size() > 0) {
+          && slices.get("shard1").getReplicasMap().size() > 0) {
         break;
       }
       Thread.sleep(500);
@@ -185,17 +186,17 @@ public class ClusterStateUpdateTest exte
     Slice slice = slices.get("shard1");
     assertEquals("shard1", slice.getName());
 
-    Map<String,ZkNodeProps> shards = slice.getShards();
+    Map<String,Replica> shards = slice.getReplicasMap();
 
     assertEquals(1, shards.size());
 
-    ZkNodeProps zkProps = shards.get(host + ":1661_solr_testcore");
+    Replica zkProps = shards.get(host + ":1661_solr_testcore");
 
     assertNotNull(zkProps);
 
-    assertEquals(host + ":1661_solr", zkProps.get(ZkStateReader.NODE_NAME_PROP));
+    assertEquals(host + ":1661_solr", zkProps.getStr(ZkStateReader.NODE_NAME_PROP));
 
-    assertEquals("http://" + host + ":1661/solr", zkProps.get(ZkStateReader.BASE_URL_PROP));
+    assertEquals("http://" + host + ":1661/solr", zkProps.getStr(ZkStateReader.BASE_URL_PROP));
 
     Set<String> liveNodes = clusterState2.getLiveNodes();
     assertNotNull(liveNodes);

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java Mon Sep 10 02:22:01 2012
@@ -249,7 +249,7 @@ public class LeaderElectionIntegrationTe
   private String getLeader() throws InterruptedException {
     
     ZkNodeProps props = reader.getLeaderProps("collection1", "shard1", 30000);
-    String leader = props.get(ZkStateReader.NODE_NAME_PROP);
+    String leader = props.getStr(ZkStateReader.NODE_NAME_PROP);
     
     return leader;
   }

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java Mon Sep 10 02:22:01 2012
@@ -152,7 +152,7 @@ public class OverseerTest extends SolrTe
           collection);
       if (slices != null) {
         for (Slice slice : slices.values()) {
-          if (slice.getShards().containsKey(nodeName + "_" + coreName)) {
+          if (slice.getReplicasMap().containsKey(nodeName + "_" + coreName)) {
             return slice.getName();
           }
         }
@@ -204,9 +204,9 @@ public class OverseerTest extends SolrTe
         assertNotNull("shard got no id?", zkController.publishState("core" + (i+1), ZkStateReader.ACTIVE, 3));
       }
 
-      assertEquals(2, reader.getClusterState().getSlice("collection1", "shard1").getShards().size());
-      assertEquals(2, reader.getClusterState().getSlice("collection1", "shard2").getShards().size());
-      assertEquals(2, reader.getClusterState().getSlice("collection1", "shard3").getShards().size());
+      assertEquals(2, reader.getClusterState().getSlice("collection1", "shard1").getReplicasMap().size());
+      assertEquals(2, reader.getClusterState().getSlice("collection1", "shard2").getReplicasMap().size());
+      assertEquals(2, reader.getClusterState().getSlice("collection1", "shard3").getReplicasMap().size());
       
       //make sure leaders are in cloud state
       assertNotNull(reader.getLeaderUrl("collection1", "shard1", 15000));
@@ -303,7 +303,7 @@ public class OverseerTest extends SolrTe
         ClusterState state = reader.getClusterState();
         Map<String,Slice> slices = state.getSlices("collection1");
         for (String name : slices.keySet()) {
-          cloudStateSliceCount += slices.get(name).getShards().size();
+          cloudStateSliceCount += slices.get(name).getReplicasMap().size();
         }
         if (coreCount == cloudStateSliceCount) break;
         Thread.sleep(200);
@@ -435,8 +435,8 @@ public class OverseerTest extends SolrTe
       waitForCollections(reader, "collection1");
 
       assertEquals(reader.getClusterState().toString(), ZkStateReader.RECOVERING,
-          reader.getClusterState().getSlice("collection1", "shard1").getShards()
-              .get("node1_core1").get(ZkStateReader.STATE_PROP));
+          reader.getClusterState().getSlice("collection1", "shard1").getReplicasMap()
+              .get("node1_core1").getStr(ZkStateReader.STATE_PROP));
 
       //publish node state (active)
       m = new ZkNodeProps(Overseer.QUEUE_OPERATION, "state",
@@ -467,7 +467,7 @@ public class OverseerTest extends SolrTe
     while(maxIterations-->0) {
       Slice slice = reader.getClusterState().getSlice("collection1", "shard1");
       if(slice!=null) {
-        coreState = slice.getShards().get("node1_core1").get(ZkStateReader.STATE_PROP);
+        coreState = slice.getReplicasMap().get("node1_core1").getStr(ZkStateReader.STATE_PROP);
         if(coreState.equals(expectedState)) {
           return;
         }
@@ -483,14 +483,14 @@ public class OverseerTest extends SolrTe
       reader.updateClusterState(true); // poll state
       ZkNodeProps props =  reader.getClusterState().getLeader(collection, shard);
       if(props!=null) {
-        if(expectedCore.equals(props.get(ZkStateReader.CORE_NAME_PROP))) {
+        if(expectedCore.equals(props.getStr(ZkStateReader.CORE_NAME_PROP))) {
           return;
         }
       }
       Thread.sleep(100);
     }
     
-    assertEquals("Unexpected shard leader coll:" + collection + " shard:" + shard, expectedCore, (reader.getClusterState().getLeader(collection, shard)!=null)?reader.getClusterState().getLeader(collection, shard).get(ZkStateReader.CORE_NAME_PROP):null);
+    assertEquals("Unexpected shard leader coll:" + collection + " shard:" + shard, expectedCore, (reader.getClusterState().getLeader(collection, shard)!=null)?reader.getClusterState().getLeader(collection, shard).getStr(ZkStateReader.CORE_NAME_PROP):null);
   }
 
   @Test
@@ -547,7 +547,7 @@ public class OverseerTest extends SolrTe
       assertEquals("Live nodes count does not match", 1, reader.getClusterState()
           .getLiveNodes().size());
       assertEquals("Shard count does not match", 1, reader.getClusterState()
-          .getSlice("collection1", "shard1").getShards().size());      
+          .getSlice("collection1", "shard1").getReplicasMap().size());
       version = getClusterStateVersion(controllerClient);
       mockController.publishState("core1", null,1);
       while(version == getClusterStateVersion(controllerClient));
@@ -714,7 +714,7 @@ public class OverseerTest extends SolrTe
       int numFound = 0;
       for (Map<String,Slice> collection : state.getCollectionStates().values()) {
         for (Slice slice : collection.values()) {
-          if (slice.getShards().get("node1_core1") != null) {
+          if (slice.getReplicasMap().get("node1_core1") != null) {
             numFound++;
           }
         }
@@ -834,11 +834,11 @@ public class OverseerTest extends SolrTe
       
       for(int i=0;i<100;i++) {
         Slice s = reader.getClusterState().getSlice("collection1", "s1");
-        if(s!=null && s.getShards().size()==3) break;
+        if(s!=null && s.getReplicasMap().size()==3) break;
         Thread.sleep(100);
       }
       assertNotNull(reader.getClusterState().getSlice("collection1", "s1"));
-      assertEquals(3, reader.getClusterState().getSlice("collection1", "s1").getShards().size());
+      assertEquals(3, reader.getClusterState().getSlice("collection1", "s1").getReplicasMap().size());
     } finally {
       close(overseerClient);
       close(zkClient);

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestHashPartitioner.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestHashPartitioner.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestHashPartitioner.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/TestHashPartitioner.java Mon Sep 10 02:22:01 2012
@@ -30,7 +30,7 @@ public class TestHashPartitioner extends
     List<Range> ranges;
 
     // make sure the partitioner uses the "natural" boundaries and doesn't suffer from an off-by-one
-    ranges = hp.partitionRange(2, Integer.MIN_VALUE, Integer.MAX_VALUE);
+    ranges = hp.partitionRange(2, hp.fullRange());
     assertEquals(Integer.MIN_VALUE, ranges.get(0).min);
     assertEquals(0x80000000, ranges.get(0).min);
     assertEquals(0xffffffff, ranges.get(0).max);
@@ -44,7 +44,7 @@ public class TestHashPartitioner extends
     assertEquals(0x7fffffff, ranges.get(1).max);
 
     for (int i = 1; i <= 30000; i += 13) {
-      ranges = hp.partitionRange(i, Integer.MIN_VALUE, Integer.MAX_VALUE);
+      ranges = hp.partitionRange(i, hp.fullRange());
       assertEquals(i, ranges.size());
       assertTrue("First range does not start before " + Integer.MIN_VALUE
           + " it is:" + ranges.get(0).min,
@@ -52,6 +52,14 @@ public class TestHashPartitioner extends
       assertTrue("Last range does not end after " + Integer.MAX_VALUE
           + " it is:" + ranges.get(ranges.size() - 1).max,
           ranges.get(ranges.size() - 1).max >= Integer.MAX_VALUE);
+
+      for (Range range : ranges) {
+        String s = range.toString();
+        Range newRange = hp.fromString(s);
+        assertEquals(range, newRange);
+      }
+
+
     }
   }
   

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java Mon Sep 10 02:22:01 2012
@@ -20,7 +20,6 @@ package org.apache.solr.cloud;
 import java.io.File;
 import java.util.List;
 
-import org.apache.lucene.util.LuceneTestCase.Slow;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkNodeProps;
@@ -136,7 +135,7 @@ public class ZkCLITest extends SolrTestC
     
     ZkNodeProps collectionProps = ZkNodeProps.load(zkClient.getData(ZkStateReader.COLLECTIONS_ZKNODE + "/collection1", null, null, true));
     assertTrue(collectionProps.containsKey("configName"));
-    assertEquals(confsetname, collectionProps.get("configName"));
+    assertEquals(confsetname, collectionProps.getStr("configName"));
     
     // test down config
     File confDir = new File(TEMP_DIR,

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java Mon Sep 10 02:22:01 2012
@@ -67,7 +67,7 @@ public class ZkControllerTest extends So
 
       zkClient.makePath(ZkController.CONFIGS_ZKNODE + "/" + actualConfigName, true);
       
-      Map<String,String> props = new HashMap<String,String>();
+      Map<String,Object> props = new HashMap<String,Object>();
       props.put("configName", actualConfigName);
       ZkNodeProps zkProps = new ZkNodeProps(props);
       zkClient.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/"

Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java?rev=1382622&r1=1382621&r2=1382622&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java Mon Sep 10 02:22:01 2012
@@ -30,7 +30,7 @@ public class ZkNodePropsTest extends Sol
   @Test
   public void testBasic() throws IOException {
     
-    Map<String,String> props = new HashMap<String,String>();
+    Map<String,Object> props = new HashMap<String,Object>();
     props.put("prop1", "value1");
     props.put("prop2", "value2");
     props.put("prop3", "value3");
@@ -42,11 +42,11 @@ public class ZkNodePropsTest extends Sol
     byte[] bytes = ZkStateReader.toJSON(zkProps);
     
     ZkNodeProps props2 = ZkNodeProps.load(bytes);
-    assertEquals("value1", props2.get("prop1"));
-    assertEquals("value2", props2.get("prop2"));
-    assertEquals("value3", props2.get("prop3"));
-    assertEquals("value4", props2.get("prop4"));
-    assertEquals("value5", props2.get("prop5"));
-    assertEquals("value6", props2.get("prop6"));
+    assertEquals("value1", props2.getStr("prop1"));
+    assertEquals("value2", props2.getStr("prop2"));
+    assertEquals("value3", props2.getStr("prop3"));
+    assertEquals("value4", props2.getStr("prop4"));
+    assertEquals("value5", props2.getStr("prop5"));
+    assertEquals("value6", props2.getStr("prop6"));
   }
 }