You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2015/01/27 14:44:28 UTC
svn commit: r1655039 - in /lucene/dev/branches/lucene_solr_5_0: ./ solr/
solr/core/ solr/core/src/java/org/apache/solr/cloud/overseer/
solr/core/src/test/org/apache/solr/cloud/overseer/ solr/solrj/
solr/solrj/src/java/org/apache/solr/common/cloud/
Author: noble
Date: Tue Jan 27 13:44:27 2015
New Revision: 1655039
URL: http://svn.apache.org/r1655039
Log:
SOLR-7039 First collection created with stateFormat=2 writes to clusterstate.json also
Modified:
lucene/dev/branches/lucene_solr_5_0/ (props changed)
lucene/dev/branches/lucene_solr_5_0/solr/ (props changed)
lucene/dev/branches/lucene_solr_5_0/solr/core/ (props changed)
lucene/dev/branches/lucene_solr_5_0/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
lucene/dev/branches/lucene_solr_5_0/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java
lucene/dev/branches/lucene_solr_5_0/solr/solrj/ (props changed)
lucene/dev/branches/lucene_solr_5_0/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
Modified: lucene/dev/branches/lucene_solr_5_0/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java?rev=1655039&r1=1655038&r2=1655039&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java Tue Jan 27 13:44:27 2015
@@ -17,7 +17,6 @@ package org.apache.solr.cloud.overseer;
* limitations under the License.
*/
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@@ -151,7 +150,7 @@ public class ZkStateWriter {
// let's clean up the collections path for this collection
reader.getZkClient().clean("/collections/" + name);
} else if (c.getStateFormat() > 1) {
- byte[] data = ZkStateReader.toJSON(new ClusterState(-1, Collections.<String>emptySet(), singletonMap(c.getName(), c)));
+ byte[] data = ZkStateReader.toJSON(singletonMap(c.getName(),c));
if (reader.getZkClient().exists(path, true)) {
assert c.getZNodeVersion() >= 0;
log.info("going to update_collection {} version: {}", path, c.getZNodeVersion());
Modified: lucene/dev/branches/lucene_solr_5_0/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java?rev=1655039&r1=1655038&r2=1655039&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java Tue Jan 27 13:44:27 2015
@@ -18,6 +18,7 @@ package org.apache.solr.cloud.overseer;
*/
import java.util.HashMap;
+import java.util.Map;
import org.apache.lucene.util.IOUtils;
import org.apache.solr.SolrTestCaseJ4;
@@ -117,4 +118,47 @@ public class ZkStateWriterTest extends S
}
}
+ public void testSingleExternalCollection() throws Exception{
+ String zkDir = createTempDir("testSingleExternalCollection").toFile().getAbsolutePath();
+
+ ZkTestServer server = new ZkTestServer(zkDir);
+
+ SolrZkClient zkClient = null;
+
+ try {
+ server.run();
+ AbstractZkTestCase.tryCleanSolrZkNode(server.getZkHost());
+ AbstractZkTestCase.makeSolrZkNode(server.getZkHost());
+
+ zkClient = new SolrZkClient(server.getZkAddress(), OverseerTest.DEFAULT_CONNECTION_TIMEOUT);
+ zkClient.makePath(ZkStateReader.LIVE_NODES_ZKNODE, true);
+
+ ZkStateReader reader = new ZkStateReader(zkClient);
+ reader.createClusterStateWatchersAndUpdate();
+
+ ZkStateWriter writer = new ZkStateWriter(reader, new Overseer.Stats());
+
+ zkClient.makePath(ZkStateReader.COLLECTIONS_ZKNODE + "/c1", true);
+
+ // create new collection with stateFormat = 2
+ ZkWriteCommand c1 = new ZkWriteCommand("c1",
+ new DocCollection("c1", new HashMap<String, Slice>(), new HashMap<String, Object>(), DocRouter.DEFAULT, 0, ZkStateReader.COLLECTIONS_ZKNODE + "/c1/state.json"));
+
+ ClusterState clusterState = writer.enqueueUpdate(reader.getClusterState(), c1, null);
+ writer.writePendingUpdates();
+
+ Map map = (Map) ZkStateReader.fromJSON(zkClient.getData("/clusterstate.json", null, null, true));
+ assertNull(map.get("c1"));
+ map = (Map) ZkStateReader.fromJSON(zkClient.getData(ZkStateReader.COLLECTIONS_ZKNODE + "/c1/state.json", null, null, true));
+ assertNotNull(map.get("c1"));
+
+ } finally {
+ IOUtils.close(zkClient);
+ server.shutdown();
+
+ }
+
+
+ }
+
}
Modified: lucene/dev/branches/lucene_solr_5_0/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_5_0/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java?rev=1655039&r1=1655038&r2=1655039&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_5_0/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java (original)
+++ lucene/dev/branches/lucene_solr_5_0/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java Tue Jan 27 13:44:27 2015
@@ -316,16 +316,6 @@ public class ClusterState implements JSO
@Override
public void write(JSONWriter jsonWriter) {
- if (collectionStates.size() == 1) {
- CollectionRef ref = collectionStates.values().iterator().next();
- DocCollection docCollection = ref.get();
- if (docCollection.getStateFormat() > 1) {
- jsonWriter.write(Collections.singletonMap(docCollection.getName(), docCollection));
- // serializing a single DocCollection that is persisted outside of clusterstate.json
- return;
- }
- }
-
LinkedHashMap<String , DocCollection> map = new LinkedHashMap<>();
for (Entry<String, CollectionRef> e : collectionStates.entrySet()) {
// using this class check to avoid fetching from ZK in case of lazily loaded collection