You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2019/04/29 11:11:46 UTC
[lucene-solr] branch branch_8x updated: SOLR-13407: Fix NPE and be
consistent about returning empty instead of null properties.
This is an automated email from the ASF dual-hosted git repository.
ab pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/branch_8x by this push:
new 72230b6 SOLR-13407: Fix NPE and be consistent about returning empty instead of null properties.
72230b6 is described below
commit 72230b69b3bd3ee0449e6c3ec149fa917add3ea9
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Mon Apr 29 12:19:29 2019 +0200
SOLR-13407: Fix NPE and be consistent about returning empty instead of null properties.
---
.../solr/cloud/api/collections/MaintainCategoryRoutedAliasCmd.java | 4 ++--
.../solr/cloud/api/collections/MaintainTimeRoutedAliasCmd.java | 4 ++--
.../src/java/org/apache/solr/handler/admin/CollectionsHandler.java | 2 +-
.../org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java | 2 +-
.../apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java | 2 +-
solr/solrj/src/java/org/apache/solr/common/cloud/Aliases.java | 5 ++---
6 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/MaintainCategoryRoutedAliasCmd.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/MaintainCategoryRoutedAliasCmd.java
index 99c7ad0..2878735 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/MaintainCategoryRoutedAliasCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/MaintainCategoryRoutedAliasCmd.java
@@ -92,9 +92,9 @@ public class MaintainCategoryRoutedAliasCmd extends AliasCmd {
final ZkStateReader.AliasesManager aliasesManager = ocmh.zkStateReader.aliasesManager;
final Aliases aliases = aliasesManager.getAliases();
final Map<String, String> aliasMetadata = aliases.getCollectionAliasProperties(aliasName);
- if (aliasMetadata == null) {
+ if (aliasMetadata.isEmpty()) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "Alias " + aliasName + " does not exist."); // if it did exist, we'd have a non-null map
+ "Alias " + aliasName + " does not exist or is not a routed alias."); // if it did exist, we'd have a non-null map
}
final CategoryRoutedAlias categoryRoutedAlias = (CategoryRoutedAlias) RoutedAlias.fromProps(aliasName, aliasMetadata);
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/MaintainTimeRoutedAliasCmd.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/MaintainTimeRoutedAliasCmd.java
index cb95d76..c1a015e 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/MaintainTimeRoutedAliasCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/MaintainTimeRoutedAliasCmd.java
@@ -103,9 +103,9 @@ public class MaintainTimeRoutedAliasCmd extends AliasCmd {
final ZkStateReader.AliasesManager aliasesManager = ocmh.zkStateReader.aliasesManager;
final Aliases aliases = aliasesManager.getAliases();
final Map<String, String> aliasMetadata = aliases.getCollectionAliasProperties(aliasName);
- if (aliasMetadata == null) {
+ if (aliasMetadata.isEmpty()) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "Alias " + aliasName + " does not exist."); // if it did exist, we'd have a non-null map
+ "Alias " + aliasName + " does not exist or is not a routed alias."); // if it did exist, we'd have a non-null map
}
final TimeRoutedAlias timeRoutedAlias = new TimeRoutedAlias(aliasName, aliasMetadata);
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 fc7b59a..07ec42a 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
@@ -698,7 +698,7 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
Map<String,Map<String,String>> meta = new LinkedHashMap<>();
for (String alias : aliases.getCollectionAliasListMap().keySet()) {
Map<String, String> collectionAliasProperties = aliases.getCollectionAliasProperties(alias);
- if (collectionAliasProperties != null) {
+ if (!collectionAliasProperties.isEmpty()) {
meta.put(alias, collectionAliasProperties);
}
}
diff --git a/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java
index ab83e22..13dd731 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/RoutedAliasUpdateProcessor.java
@@ -105,7 +105,7 @@ public class RoutedAliasUpdateProcessor extends UpdateRequestProcessor {
private static Map<String, String> getAliasProps(SolrQueryRequest req, String aliasName) {
ZkController zkController = req.getCore().getCoreContainer().getZkController();
final Map<String, String> aliasProperties = zkController.getZkStateReader().getAliases().getCollectionAliasProperties(aliasName);
- if (aliasProperties == null) {
+ if (aliasProperties.isEmpty()) {
throw RoutedAlias.newAliasMustExistException(aliasName); // if it did exist, we'd have a non-null map
}
return aliasProperties;
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
index 8dd4f1e..87f4a2f 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/BaseHttpClusterStateProvider.java
@@ -246,7 +246,7 @@ public abstract class BaseHttpClusterStateProvider implements ClusterStateProvid
@Override
public Map<String, String> getAliasProperties(String alias) {
getAliases(false);
- return Collections.unmodifiableMap(aliasProperties.get(alias));
+ return Collections.unmodifiableMap(aliasProperties.getOrDefault(alias, Collections.emptyMap()));
}
@Override
diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/Aliases.java b/solr/solrj/src/java/org/apache/solr/common/cloud/Aliases.java
index f84ad16..6f97c25 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/Aliases.java
+++ b/solr/solrj/src/java/org/apache/solr/common/cloud/Aliases.java
@@ -160,11 +160,10 @@ public class Aliases {
}
/**
- * Returns an unmodifiable Map of properties for a given alias. If an alias by the given name
- * exists, this method will never return null.
+ * Returns an unmodifiable Map of properties for a given alias. This method will never return null.
*
* @param alias the name of an alias also found as a key in {@link #getCollectionAliasListMap()}
- * @return The properties for the alias (possibly empty) or null if the alias does not exist.
+ * @return The properties for the alias (possibly empty).
*/
public Map<String,String> getCollectionAliasProperties(String alias) {
// Note: map is already unmodifiable; it can be shared safely