You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by gu...@apache.org on 2019/02/19 14:53:41 UTC

[lucene-solr] 04/09: SOLR-13150: throw exception if not all required params were supplied

This is an automated email from the ASF dual-hosted git repository.

gus pushed a commit to branch solr-13131
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 3541516a7640b307926df1949a54310b97cea403
Author: internet <in...@localhost.localdomain>
AuthorDate: Mon Feb 18 13:59:49 2019 +0200

    SOLR-13150: throw exception if not all required params were supplied
---
 .../apache/solr/cloud/api/collections/CategoryRoutedAlias.java   | 9 ++++++---
 .../java/org/apache/solr/handler/admin/CollectionsHandler.java   | 6 ++++++
 .../update/processor/CategoryRoutedAliasUpdateProcessorTest.java | 2 +-
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java
index 0cd0176..88b68ea 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/CategoryRoutedAlias.java
@@ -48,6 +48,9 @@ public class CategoryRoutedAlias implements RoutedAlias {
   // receive data.
   public static final String UNINITIALIZED = "NEW_CATEGORY_ROUTED_ALIAS_WAITING_FOR_DATA__TEMP";
 
+  @SuppressWarnings("WeakerAccess")
+  public static final String ROUTER_MAX_CARDINALITY = "router.maxCardinality";
+
   /**
    * Parameters required for creating a category routed alias
    */
@@ -55,11 +58,11 @@ public class CategoryRoutedAlias implements RoutedAlias {
   public static final Set<String> REQUIRED_ROUTER_PARAMS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
       CommonParams.NAME,
       ROUTER_TYPE_NAME,
-      ROUTER_FIELD)));
+      ROUTER_FIELD,
+      ROUTER_MAX_CARDINALITY
+  )));
 
   @SuppressWarnings("WeakerAccess")
-  public static final String ROUTER_MAX_CARDINALITY = "router.maxCardinality";
-  @SuppressWarnings("WeakerAccess")
   public static final String ROUTER_MUST_MATCH = "router.mustMatch";
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
index 3f39808..293f731 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
@@ -37,6 +37,7 @@ import java.util.stream.Collectors;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.solr.api.Api;
@@ -82,6 +83,7 @@ import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.CloudConfig;
 import org.apache.solr.core.CoreContainer;
@@ -582,6 +584,10 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
 
       // Now filter out just the parameters we care about from the request
       Map<String, Object> result = copy(req.getParams(), null, routedAlias.getRequiredParams());
+      if (!result.keySet().containsAll(routedAlias.getRequiredParams())) {
+        throw new SolrException(BAD_REQUEST, "Not all required params were supplied. Missing params: " +
+            StrUtils.join(Sets.difference(routedAlias.getRequiredParams(), result.keySet()), ','));
+      }
       copy(req.getParams(), result, routedAlias.getOptionalParams());
 
       ModifiableSolrParams createCollParams = new ModifiableSolrParams(); // without prefix
diff --git a/solr/core/src/test/org/apache/solr/update/processor/CategoryRoutedAliasUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/CategoryRoutedAliasUpdateProcessorTest.java
index d269f8f..ee7fbb5 100644
--- a/solr/core/src/test/org/apache/solr/update/processor/CategoryRoutedAliasUpdateProcessorTest.java
+++ b/solr/core/src/test/org/apache/solr/update/processor/CategoryRoutedAliasUpdateProcessorTest.java
@@ -191,7 +191,7 @@ public class CategoryRoutedAliasUpdateProcessorTest extends RoutedAliasUpdatePro
 
     CollectionAdminRequest.createCategoryRoutedAlias(getAlias(), categoryField,
         CollectionAdminRequest.createCollection("_unused_", configName, 1, 1)
-            .setMaxShardsPerNode(2))
+            .setMaxShardsPerNode(2)).setMaxCardinality(Integer.MAX_VALUE)
         .process(solrClient);
 
     // now we index a document