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:21:25 UTC

svn commit: r1655032 - in /lucene/dev/trunk/solr: core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java solrj/src/java/org/apache/solr/common/cloud/ClusterState.java

Author: noble
Date: Tue Jan 27 13:21:24 2015
New Revision: 1655032

URL: http://svn.apache.org/r1655032
Log:
SOLR-7039 First collection created with stateFormat=2 writes to clusterstate.json also

Modified:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java
    lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java?rev=1655032&r1=1655031&r2=1655032&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java Tue Jan 27 13:21:24 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/trunk/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java?rev=1655032&r1=1655031&r2=1655032&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/overseer/ZkStateWriterTest.java Tue Jan 27 13:21:24 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;
@@ -28,6 +29,7 @@ import org.apache.solr.cloud.ZkTestServe
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.DocCollection;
 import org.apache.solr.common.cloud.DocRouter;
+import org.apache.solr.common.cloud.Slice;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkStateReader;
 
@@ -116,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/trunk/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java?rev=1655032&r1=1655031&r2=1655032&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java Tue Jan 27 13:21:24 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