You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2015/07/31 17:35:10 UTC

svn commit: r1693616 - in /lucene/dev/trunk/solr: ./ core/src/test/org/apache/solr/cloud/ test-framework/src/java/org/apache/solr/cloud/

Author: cpoerschke
Date: Fri Jul 31 15:35:10 2015
New Revision: 1693616

URL: http://svn.apache.org/r1693616
Log:
SOLR-7823: TestMiniSolrCloudCluster.testCollectionCreateSearchDelete async collection-creation (sometimes)

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1693616&r1=1693615&r2=1693616&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Fri Jul 31 15:35:10 2015
@@ -381,6 +381,9 @@ Other Changes
 
 * SOLR-5022: On Java 7 raise permgen for running tests.  (Uwe Schindler)
   
+* SOLR-7823: TestMiniSolrCloudCluster.testCollectionCreateSearchDelete async collection-creation (sometimes)
+  (Christine Poerschke)
+
 ==================  5.2.1 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java?rev=1693616&r1=1693615&r2=1693616&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java Fri Jul 31 15:35:10 2015
@@ -95,6 +95,8 @@ public class TestMiniSolrCloudCluster ex
     jettyConfig.waitForLoadingCoresToFinish(null);
     MiniSolrCloudCluster miniCluster = new MiniSolrCloudCluster(NUM_SERVERS, createTempDir().toFile(), solrXml, jettyConfig.build());
 
+    final CloudSolrClient cloudSolrClient = miniCluster.getSolrClient();
+
     try {
       assertNotNull(miniCluster.getZkServer());
       List<JettySolrRunner> jettys = miniCluster.getJettySolrRunners();
@@ -127,7 +129,11 @@ public class TestMiniSolrCloudCluster ex
       collectionProperties.put("solr.tests.mergePolicy", "org.apache.lucene.index.TieredMergePolicy");
       collectionProperties.put("solr.tests.mergeScheduler", "org.apache.lucene.index.ConcurrentMergeScheduler");
       collectionProperties.put("solr.directoryFactory", "solr.RAMDirectoryFactory");
-      miniCluster.createCollection(collectionName, NUM_SHARDS, REPLICATION_FACTOR, configName, collectionProperties);
+      final String asyncId = (random().nextBoolean() ? null : "asyncId("+collectionName+".create)="+random().nextInt());
+      miniCluster.createCollection(collectionName, NUM_SHARDS, REPLICATION_FACTOR, configName, asyncId, collectionProperties);
+      if (asyncId != null) {
+        assertEquals("did not see async createCollection completion", "completed", AbstractFullDistribZkTestBase.getRequestStateAfterCompletion(asyncId, 330, cloudSolrClient));
+      }
 
       try (SolrZkClient zkClient = new SolrZkClient
           (miniCluster.getZkServer().getZkAddress(), AbstractZkTestCase.TIMEOUT, 45000, null);
@@ -135,7 +141,6 @@ public class TestMiniSolrCloudCluster ex
         AbstractDistribZkTestBase.waitForRecoveriesToFinish(collectionName, zkStateReader, true, true, 330);
 
         // modify/query collection
-        CloudSolrClient cloudSolrClient = miniCluster.getSolrClient();
         cloudSolrClient.setDefaultCollection(collectionName);
         SolrInputDocument doc = new SolrInputDocument();
         doc.setField("id", "1");

Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1693616&r1=1693615&r2=1693616&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Fri Jul 31 15:35:10 2015
@@ -1875,7 +1875,7 @@ public abstract class AbstractFullDistri
   }
 
 
-  protected String getRequestStateAfterCompletion(String requestId, int waitForSeconds, SolrClient client)
+  static String getRequestStateAfterCompletion(String requestId, int waitForSeconds, SolrClient client)
       throws IOException, SolrServerException {
     String state = null;
     long maxWait = System.nanoTime() + TimeUnit.NANOSECONDS.convert(waitForSeconds, TimeUnit.SECONDS);
@@ -1893,11 +1893,11 @@ public abstract class AbstractFullDistri
     return state;
   }
 
-  protected String getRequestState(int requestId, SolrClient client) throws IOException, SolrServerException {
+  static String getRequestState(int requestId, SolrClient client) throws IOException, SolrServerException {
     return getRequestState(String.valueOf(requestId), client);
   }
 
-  protected String getRequestState(String requestId, SolrClient client) throws IOException, SolrServerException {
+  static String getRequestState(String requestId, SolrClient client) throws IOException, SolrServerException {
     CollectionAdminRequest.RequestStatus requestStatusRequest = new CollectionAdminRequest.RequestStatus();
     requestStatusRequest.setRequestId(requestId);
     CollectionAdminResponse response = requestStatusRequest.process(client);

Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java?rev=1693616&r1=1693615&r2=1693616&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java Fri Jul 31 15:35:10 2015
@@ -28,6 +28,7 @@ import org.apache.solr.common.cloud.Solr
 import org.apache.solr.common.cloud.ZkConfigManager;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.params.CollectionParams.CollectionAction;
+import org.apache.solr.common.params.CommonAdminParams;
 import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.ExecutorUtil;
@@ -306,12 +307,20 @@ public class MiniSolrCloudCluster {
   
   public NamedList<Object> createCollection(String name, int numShards, int replicationFactor, 
       String configName, Map<String, String> collectionProperties) throws SolrServerException, IOException {
+    return createCollection(name, numShards, replicationFactor, configName, null, collectionProperties);
+  }
+
+  public NamedList<Object> createCollection(String name, int numShards, int replicationFactor,
+      String configName, String asyncId, Map<String, String> collectionProperties) throws SolrServerException, IOException {
     final ModifiableSolrParams params = new ModifiableSolrParams();
     params.set(CoreAdminParams.ACTION, CollectionAction.CREATE.name());
     params.set(CoreAdminParams.NAME, name);
     params.set("numShards", numShards);
     params.set("replicationFactor", replicationFactor);
     params.set("collection.configName", configName);
+    if (null != asyncId) {
+      params.set(CommonAdminParams.ASYNC, asyncId);
+    }
     if(collectionProperties != null) {
       for(Map.Entry<String, String> property : collectionProperties.entrySet()){
         params.set(CoreAdminParams.PROPERTY_PREFIX + property.getKey(), property.getValue());