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/12/18 16:39:05 UTC
[lucene-solr] 27/36: Fix a bug in component registration.
This is an automated email from the ASF dual-hosted git repository.
ab pushed a commit to branch jira/solr-13579
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit e44e82255ebbe2e15215c344ad7ea973747fffa5
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Mon Aug 12 09:52:47 2019 +0200
Fix a bug in component registration.
---
.../src/java/org/apache/solr/managed/DefaultResourceManager.java | 7 ++++---
.../java/org/apache/solr/managed/DefaultResourceManagerPool.java | 5 +++++
.../core/src/java/org/apache/solr/managed/ResourceManagerPool.java | 7 +++++++
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/managed/DefaultResourceManager.java b/solr/core/src/java/org/apache/solr/managed/DefaultResourceManager.java
index e6eb55c..069628d 100644
--- a/solr/core/src/java/org/apache/solr/managed/DefaultResourceManager.java
+++ b/solr/core/src/java/org/apache/solr/managed/DefaultResourceManager.java
@@ -178,15 +178,16 @@ public class DefaultResourceManager extends ResourceManager {
if (pool == null) {
throw new IllegalArgumentException("Pool '" + name + "' doesn't exist.");
}
- String type = pool.getType();
+ String poolType = pool.getType();
resourcePools.forEach((poolName, otherPool) -> {
if (otherPool == pool) {
return;
}
- if (otherPool.getType().equals(type)) {
+ if (otherPool.isRegistered(managedComponent.getManagedComponentId().toString()) &&
+ otherPool.getType().equals(poolType)) {
throw new IllegalArgumentException("Resource " + managedComponent.getManagedComponentId() +
" is already managed in another pool (" +
- otherPool.getName() + ") of the same type " + type);
+ otherPool.getName() + ") of the same type " + poolType);
}
});
pool.registerComponent(managedComponent);
diff --git a/solr/core/src/java/org/apache/solr/managed/DefaultResourceManagerPool.java b/solr/core/src/java/org/apache/solr/managed/DefaultResourceManagerPool.java
index 07de310..1f1e6d2 100644
--- a/solr/core/src/java/org/apache/solr/managed/DefaultResourceManagerPool.java
+++ b/solr/core/src/java/org/apache/solr/managed/DefaultResourceManagerPool.java
@@ -105,6 +105,11 @@ public class DefaultResourceManagerPool implements ResourceManagerPool {
}
@Override
+ public boolean isRegistered(String componentId) {
+ return components.containsKey(componentId);
+ }
+
+ @Override
public Map<String, ManagedComponent> getComponents() {
return Collections.unmodifiableMap(components);
}
diff --git a/solr/core/src/java/org/apache/solr/managed/ResourceManagerPool.java b/solr/core/src/java/org/apache/solr/managed/ResourceManagerPool.java
index dc2ddac..0761442 100644
--- a/solr/core/src/java/org/apache/solr/managed/ResourceManagerPool.java
+++ b/solr/core/src/java/org/apache/solr/managed/ResourceManagerPool.java
@@ -22,6 +22,13 @@ public interface ResourceManagerPool extends Runnable, Closeable {
/** Remove named component from this pool. */
boolean unregisterComponent(String componentId);
+ /**
+ * Check whether a named component is registered in this pool.
+ * @param componentId component id
+ * @return true if the component with this name is registered, false otherwise.
+ */
+ boolean isRegistered(String componentId);
+
/** Get components managed by this pool. */
Map<String, ManagedComponent> getComponents();