You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2011/11/29 00:47:50 UTC
svn commit: r1207702 - in /lucene/dev/branches/solrcloud/solr:
core/src/java/org/apache/solr/cloud/
core/src/java/org/apache/solr/update/processor/
core/src/test/org/apache/solr/cloud/
solrj/src/java/org/apache/solr/common/cloud/
Author: markrmiller
Date: Mon Nov 28 23:47:48 2011
New Revision: 1207702
URL: http://svn.apache.org/viewvc?rev=1207702&view=rev
Log:
make ZkNodeProps immutable
Modified:
lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/Overseer.java
lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java
lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateTest.java
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java
lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/CloudState.java
lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/Slice.java
lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java
lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/Overseer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/Overseer.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/Overseer.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/Overseer.java Mon Nov 28 23:47:48 2011
@@ -294,11 +294,11 @@ public class Overseer implements NodeSta
shardId = coreState.getProperties().get("shard_id");
}
- ZkNodeProps props = new ZkNodeProps();
+ Map<String,String> props = new HashMap<String,String>();
for (Entry<String,String> entry : coreState.getProperties().entrySet()) {
props.put(entry.getKey(), entry.getValue());
}
-
+ ZkNodeProps zkProps = new ZkNodeProps(props);
Slice slice = cloudState.getSlice(collection, shardId);
Map<String,ZkNodeProps> shardProps;
if (slice == null) {
@@ -306,7 +306,7 @@ public class Overseer implements NodeSta
} else {
shardProps = cloudState.getSlice(collection, shardId).getShardsCopy();
}
- shardProps.put(coreName, props);
+ shardProps.put(coreName, zkProps);
System.out.println("Current slices:" + cloudState.getSlice(collection, shardId));
slice = new Slice(shardId, shardProps);
CloudState state = new CloudState(cloudState.getLiveNodes(),
@@ -357,9 +357,9 @@ public class Overseer implements NodeSta
if (data != null) {
ZkNodeProps props = new ZkNodeProps();
try {
- props.load(data);
+ props = ZkNodeProps.load(data);
} catch (IOException e) {
- e.printStackTrace();
+ log.error("Could not load ZkNodeProps", e);
}
collections.put(collection, props);
log.info("Registered collection " + collection + " with following properties: "
Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/cloud/ZkController.java Mon Nov 28 23:47:48 2011
@@ -321,12 +321,12 @@ public final class ZkController {
return;
}
} catch (KeeperException e) {
- log.error("Could not read node assignments.", e);
+ log.warn("Could not read node assignments.", e);
return;
} catch (InterruptedException e) {
// Restore the interrupted status
Thread.currentThread().interrupt();
- log.error("Could not read node assignments.", e);
+ log.warn("Could not read node assignments.", e);
return;
}
@@ -430,10 +430,9 @@ public final class ZkController {
log.info("Load collection config from:" + path);
}
byte[] data = zkClient.getData(path, null, null);
- ZkNodeProps props = new ZkNodeProps();
if(data != null) {
- props.load(data);
+ ZkNodeProps props = ZkNodeProps.load(data);
configName = props.get(CONFIGNAME_PROP);
}
@@ -473,7 +472,7 @@ public final class ZkController {
// checkRecovery will have updated the shardId if it already exists...
String shardId = cloudDesc.getShardId();
- ZkNodeProps props = new ZkNodeProps();
+ Map<String,String> props = new HashMap<String,String>();
props.put(ZkStateReader.URL_PROP, shardUrl);
props.put(ZkStateReader.NODE_NAME_PROP, getNodeName());
props.put(ZkStateReader.ROLES_PROP, cloudDesc.getRoles());
@@ -482,7 +481,6 @@ public final class ZkController {
props.put("shard_id", shardId);
}
-
if (shardId == null && getShardId(desc, state, shardZkNodeName)) {
publishState(cloudDesc, shardZkNodeName, props); //need to publish state to get overseer assigned id
shardId = doGetShardIdProcess(coreName, cloudDesc);
@@ -500,7 +498,8 @@ public final class ZkController {
leaderElector.setupForSlice(shardId, collection);
// leader election
- doLeaderElectionProcess(shardId, collection, shardZkNodeName, props);
+ ZkNodeProps zkProps = new ZkNodeProps(props);
+ doLeaderElectionProcess(shardId, collection, shardZkNodeName, zkProps);
// should be fine if we do this rather than read from cloud state since it's rare?
String leaderUrl = zkStateReader.getLeader(collection, cloudDesc.getShardId());
@@ -564,7 +563,8 @@ public final class ZkController {
ZkNodeProps addToZk(String collection, final CoreDescriptor desc, final CloudDescriptor cloudDesc, String shardUrl,
final String shardZkNodeName, String state)
throws Exception {
- ZkNodeProps props = new ZkNodeProps();
+
+ Map<String,String> props = new HashMap<String,String>();
props.put(ZkStateReader.URL_PROP, shardUrl);
props.put(ZkStateReader.NODE_NAME_PROP, getNodeName());
@@ -574,10 +574,10 @@ public final class ZkController {
props.put(ZkStateReader.STATE_PROP, state);
System.out.println("update state to:" + state);
-
+ ZkNodeProps zkProps = new ZkNodeProps(props);
Map<String, ZkNodeProps> shardProps = new HashMap<String, ZkNodeProps>();
- shardProps.put(shardZkNodeName, props);
+ shardProps.put(shardZkNodeName, zkProps);
Slice slice = new Slice(cloudDesc.getShardId(), shardProps);
boolean persisted = false;
@@ -618,7 +618,7 @@ public final class ZkController {
Map<String, ZkNodeProps> shards = new HashMap<String, ZkNodeProps>();
shards.putAll(slice.getShards());
- shards.put(shardZkNodeName, props);
+ shards.put(shardZkNodeName, zkProps);
Slice newSlice = new Slice(slice.getName(), shards);
@@ -640,7 +640,7 @@ public final class ZkController {
}
}
- return props;
+ return zkProps;
}
@@ -807,7 +807,7 @@ public final class ZkController {
SolrParams params = cd.getParams();
try {
- ZkNodeProps collectionProps = new ZkNodeProps();
+ Map<String,String> collectionProps = new HashMap<String,String>();
// 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, "configuration1");
@@ -847,9 +847,8 @@ public final class ZkController {
int retry = 1;
for (; retry < 6; retry++) {
if (zkClient.exists(collectionPath)) {
- collectionProps = new ZkNodeProps();
- collectionProps.load(zkClient.getData(collectionPath, null, null));
- if (collectionProps.containsKey(CONFIGNAME_PROP)) {
+ ZkNodeProps cProps = ZkNodeProps.load(zkClient.getData(collectionPath, null, null));
+ if (cProps.containsKey(CONFIGNAME_PROP)) {
break;
}
}
@@ -873,8 +872,8 @@ public final class ZkController {
}
collectionProps.put("num_shards", Integer.toString(numShards));
-
- zkClient.makePath(collectionPath, collectionProps.store(), CreateMode.PERSISTENT, null, true);
+ ZkNodeProps zkProps = new ZkNodeProps(collectionProps);
+ zkClient.makePath(collectionPath, zkProps.store(), CreateMode.PERSISTENT, null, true);
try {
// shards_lock node
if (!zkClient.exists(ZkStateReader.COLLECTIONS_ZKNODE + "/" + collection + "/shards_lock")) {
@@ -915,7 +914,7 @@ public final class ZkController {
private void publishState(CloudDescriptor cloudDesc, String shardZkNodeName,
- ZkNodeProps props) {
+ Map<String,String> props) {
CoreState coreState = new CoreState(shardZkNodeName,
cloudDesc.getCollectionName(), props);
coreStates.put(shardZkNodeName, coreState);
Modified: lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/java/org/apache/solr/update/processor/DistributedUpdateProcessor.java Mon Nov 28 23:47:48 2011
@@ -28,7 +28,6 @@ import java.util.Set;
import org.apache.commons.lang.NullArgumentException;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRef;
-import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.cloud.HashPartitioner;
import org.apache.solr.cloud.HashPartitioner.Range;
import org.apache.solr.common.SolrException;
@@ -48,7 +47,15 @@ import org.apache.solr.request.SolrQuery
import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.schema.SchemaField;
-import org.apache.solr.update.*;
+import org.apache.solr.update.AddUpdateCommand;
+import org.apache.solr.update.CommitUpdateCommand;
+import org.apache.solr.update.DeleteUpdateCommand;
+import org.apache.solr.update.SolrCmdDistributor;
+import org.apache.solr.update.UpdateCommand;
+import org.apache.solr.update.UpdateHandler;
+import org.apache.solr.update.UpdateLog;
+import org.apache.solr.update.VersionBucket;
+import org.apache.solr.update.VersionInfo;
import org.apache.zookeeper.KeeperException;
// NOT mt-safe... create a new processor for each add thread
@@ -135,10 +142,9 @@ public class DistributedUpdateProcessor
if (leaderChildren.size() > 0) {
String leader = leaderChildren.get(0);
- ZkNodeProps zkNodeProps = new ZkNodeProps();
byte[] bytes = zkClient
.getData(leaderNode + "/" + leader, null, null);
- zkNodeProps.load(bytes);
+ ZkNodeProps zkNodeProps = ZkNodeProps.load(bytes);
String leaderUrl = zkNodeProps.get("url");
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/AbstractZkTestCase.java Mon Nov 28 23:47:48 2011
@@ -18,8 +18,9 @@ package org.apache.solr.cloud;
*/
import java.io.File;
-import java.io.IOException;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.cloud.SolrZkClient;
@@ -74,12 +75,13 @@ public abstract class AbstractZkTestCase
zkClient = new SolrZkClient(zkAddress, AbstractZkTestCase.TIMEOUT);
- ZkNodeProps props = new ZkNodeProps();
+ Map<String,String> props = new HashMap<String,String>();
props.put("configName", "conf1");
- zkClient.makePath("/collections/collection1", props.store(), CreateMode.PERSISTENT);
+ ZkNodeProps zkProps = new ZkNodeProps(props);
+ zkClient.makePath("/collections/collection1", zkProps.store(), CreateMode.PERSISTENT);
zkClient.makePath("/collections/collection1/shards", CreateMode.PERSISTENT);
- zkClient.makePath("/collections/control_collection", props.store(), CreateMode.PERSISTENT);
+ zkClient.makePath("/collections/control_collection", zkProps.store(), CreateMode.PERSISTENT);
zkClient.makePath("/collections/control_collection/shards", CreateMode.PERSISTENT);
putConfig(zkClient, config);
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateTest.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateTest.java Mon Nov 28 23:47:48 2011
@@ -37,9 +37,11 @@ public class CloudStateTest extends Solr
Map<String,Slice> slices = new HashMap<String,Slice>();
Map<String,ZkNodeProps> sliceToProps = new HashMap<String,ZkNodeProps>();
- ZkNodeProps zkNodeProps = new ZkNodeProps();
- zkNodeProps.put("prop1", "value");
- sliceToProps.put("node1", zkNodeProps );
+ Map<String,String> props = new HashMap<String,String>();
+
+ props.put("prop1", "value");
+ ZkNodeProps zkNodeProps = new ZkNodeProps(props);
+ sliceToProps.put("node1", zkNodeProps);
Slice slice = new Slice("shard1", sliceToProps);
slices.put("shard1", slice);
collectionStates.put("collection1", slices);
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java Mon Nov 28 23:47:48 2011
@@ -18,6 +18,7 @@ package org.apache.solr.cloud;
*/
import java.io.File;
+import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -136,11 +137,13 @@ public class CloudStateUpdateTest extend
public void testCoreRegistration() throws Exception {
System.setProperty("CLOUD_UPDATE_DELAY", "1");
- ZkNodeProps props2 = new ZkNodeProps();
+
+ Map<String,String> props2 = new HashMap<String,String>();
props2.put("configName", "conf1");
+ ZkNodeProps zkProps2 = new ZkNodeProps(props2);
SolrZkClient zkClient = new SolrZkClient(zkServer.getZkAddress(), AbstractZkTestCase.TIMEOUT);
- zkClient.makePath("/collections/testcore", props2.store(), CreateMode.PERSISTENT);
+ zkClient.makePath("/collections/testcore", zkProps2.store(), CreateMode.PERSISTENT);
zkClient.makePath("/collections/testcore/shards", CreateMode.PERSISTENT);
zkClient.close();
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/LeaderElectionIntegrationTest.java Mon Nov 28 23:47:48 2011
@@ -120,9 +120,7 @@ public class LeaderElectionIntegrationTe
@Test
public void testSimpleSliceLeaderElection() throws Exception {
-
- ZkNodeProps props2 = new ZkNodeProps();
- props2.put("configName", "conf1");
+
//printLayout(zkServer.getZkAddress());
for (int i = 0; i < 4; i++) {
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java Mon Nov 28 23:47:48 2011
@@ -1,7 +1,9 @@
package org.apache.solr.cloud;
import java.io.File;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.cloud.SolrZkClient;
@@ -57,12 +59,16 @@ public class OverseerTest extends SolrTe
collection2Desc.setCollectionName("collection2");
//create collection specs
- ZkNodeProps props = new ZkNodeProps();
+ Map<String,String> props = new HashMap<String,String>();
+
props.put("num_shards", "3");
- zkClient.setData("/collections/collection1", props.store());
+ ZkNodeProps zkProps = new ZkNodeProps(props);
+ zkClient.setData("/collections/collection1", zkProps.store());
props.put("num_shards", "1");
- zkClient.setData("/collections/collection2", props.store());
-
+ zkProps = new ZkNodeProps(props);
+ zkClient.setData("/collections/collection2", zkProps.store());
+ ZkNodeProps z = new ZkNodeProps(props);
+
CoreDescriptor desc = new CoreDescriptor(null, "core1", "");
desc.setCloudDescriptor(collection1Desc);
String shard1 = zkController.register("core1", desc);
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkControllerTest.java Mon Nov 28 23:47:48 2011
@@ -18,7 +18,9 @@ package org.apache.solr.cloud;
*/
import java.io.File;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.cloud.SolrZkClient;
@@ -60,9 +62,10 @@ public class ZkControllerTest extends So
zkClient.makePath(ZkController.CONFIGS_ZKNODE + "/" + actualConfigName);
- ZkNodeProps props = new ZkNodeProps();
+ Map<String,String> props = new HashMap<String,String>();
props.put("configName", actualConfigName);
- zkClient.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/" + COLLECTION_NAME , props.store(), CreateMode.PERSISTENT);
+ ZkNodeProps zkProps = new ZkNodeProps(props);
+ zkClient.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/" + COLLECTION_NAME , zkProps.store(), CreateMode.PERSISTENT);
if (DEBUG) {
zkClient.printLayoutToStdOut();
Modified: lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java (original)
+++ lucene/dev/branches/solrcloud/solr/core/src/test/org/apache/solr/cloud/ZkNodePropsTest.java Mon Nov 28 23:47:48 2011
@@ -18,27 +18,29 @@ package org.apache.solr.cloud;
*/
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.junit.Test;
-
public class ZkNodePropsTest extends SolrTestCaseJ4 {
@Test
public void testBasic() throws IOException {
-
- ZkNodeProps props = new ZkNodeProps();
+
+ Map<String,String> props = new HashMap<String,String>();
props.put("prop1", "value1");
props.put("prop2", "value2");
props.put("prop3", "value3");
props.put("prop4", "value4");
props.put("prop5", "value5");
props.put("prop6", "value6");
- byte[] bytes = props.store();
- ZkNodeProps props2 = new ZkNodeProps();
- props2.load(bytes);
+ ZkNodeProps zkProps = new ZkNodeProps(props);
+ byte[] bytes = zkProps.store();
+
+ ZkNodeProps props2 = ZkNodeProps.load(bytes);
assertEquals("value1", props2.get("prop1"));
assertEquals("value2", props2.get("prop2"));
assertEquals("value3", props2.get("prop3"));
Modified: lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/CloudState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/CloudState.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/CloudState.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/CloudState.java Mon Nov 28 23:47:48 2011
@@ -165,7 +165,7 @@ public class CloudState {
String shardName = shard.getAttributes()
.getNamedItem("name").getNodeValue();
NodeList propsList = shard.getChildNodes();
- ZkNodeProps props = new ZkNodeProps();
+ Map<String,String> props = new HashMap<String,String>();
for (int i = 0; i < propsList.getLength(); i++) {
Node prop = propsList.item(i);
@@ -174,7 +174,7 @@ public class CloudState {
String propValue = prop.getTextContent();
props.put(propName, propValue);
}
- shards.put(shardName, props);
+ shards.put(shardName, new ZkNodeProps(props));
}
Map<String,Slice> s = null;
if (!colStates.containsKey(collectionName)) {
Modified: lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/Slice.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/Slice.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/Slice.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/Slice.java Mon Nov 28 23:47:48 2011
@@ -39,8 +39,7 @@ public class Slice {
public Map<String,ZkNodeProps> getShardsCopy() {
Map<String,ZkNodeProps> shards = new HashMap<String,ZkNodeProps>();
for (Map.Entry<String,ZkNodeProps> entry : this.shards.entrySet()) {
- ZkNodeProps zkProps = new ZkNodeProps();
- zkProps.putAll(entry.getValue());
+ ZkNodeProps zkProps = new ZkNodeProps(entry.getValue());
shards.put(entry.getKey(), zkProps);
}
return shards;
Modified: lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java Mon Nov 28 23:47:48 2011
@@ -494,7 +494,7 @@ public class SolrZkClient {
StringWriter stringWriter = new StringWriter();
StreamResult xmlOutput = new StreamResult(stringWriter);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
-// transformerFactory.setAttribute("indent-number", indent);
+ transformerFactory.setAttribute("indent-number", indent);
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(xmlInput, xmlOutput);
Modified: lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkNodeProps.java Mon Nov 28 23:47:48 2011
@@ -18,42 +18,72 @@ package org.apache.solr.common.cloud;
*/
import java.io.IOException;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
-public class ZkNodeProps extends HashMap<String,String> {
-
- private static final long serialVersionUID = 1L;
-
- public void load(byte[] bytes) throws IOException {
+// Immutable
+public class ZkNodeProps {
+ private final Map<String,String> propMap;
+
+ public ZkNodeProps(Map<String,String> propMap) {
+ this.propMap = new HashMap<String,String>();
+ this.propMap.putAll(propMap);
+ }
+
+ public ZkNodeProps(ZkNodeProps zkNodeProps) {
+ this.propMap = new HashMap<String,String>();
+ this.propMap.putAll(zkNodeProps.propMap);
+ }
+
+ public ZkNodeProps() {
+ propMap = new HashMap<String,String>();
+ }
+
+ public Set<String> keySet() {
+ return Collections.unmodifiableSet(propMap.keySet());
+ }
+
+ public static ZkNodeProps load(byte[] bytes) throws IOException {
+ ZkNodeProps props = new ZkNodeProps();
String stringRep = new String(bytes, "UTF-8");
String[] lines = stringRep.split("\n");
for (String line : lines) {
int sepIndex = line.indexOf('=');
String key = line.substring(0, sepIndex);
String value = line.substring(sepIndex + 1, line.length());
- put(key, value);
+ props.propMap.put(key, value);
}
+ return props;
}
public byte[] store() throws IOException {
StringBuilder sb = new StringBuilder();
- Set<Entry<String,String>> entries = entrySet();
+ Set<Entry<String,String>> entries = propMap.entrySet();
for(Entry<String,String> entry : entries) {
sb.append(entry.getKey() + "=" + entry.getValue() + "\n");
}
return sb.toString().getBytes("UTF-8");
}
+ public String get(String key) {
+ return propMap.get(key);
+ }
+
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
- Set<Entry<String,String>> entries = entrySet();
+ Set<Entry<String,String>> entries = propMap.entrySet();
for(Entry<String,String> entry : entries) {
sb.append(entry.getKey() + "=" + entry.getValue() + "\n");
}
return sb.toString();
}
+ public boolean containsKey(String key) {
+ return propMap.containsKey(key);
+ }
+
}
Modified: lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java?rev=1207702&r1=1207701&r2=1207702&view=diff
==============================================================================
--- lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java (original)
+++ lucene/dev/branches/solrcloud/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java Mon Nov 28 23:47:48 2011
@@ -349,8 +349,7 @@ public class ZkStateReader {
if (leaderChildren.size() > 0) {
String leader = leaderChildren.get(0);
byte[] data = zkClient.getData(leaderPath + "/" + leader, null, null);
- ZkNodeProps props = new ZkNodeProps();
- props.load(data);
+ ZkNodeProps props = ZkNodeProps.load(data);
url = props.get(ZkStateReader.URL_PROP);
break;
} else {