diff --git a/source/net/yacy/cora/federate/solr/connector/ConcurrentUpdateSolrConnector.java b/source/net/yacy/cora/federate/solr/connector/ConcurrentUpdateSolrConnector.java index 9eb75070f..5d8c80dad 100644 --- a/source/net/yacy/cora/federate/solr/connector/ConcurrentUpdateSolrConnector.java +++ b/source/net/yacy/cora/federate/solr/connector/ConcurrentUpdateSolrConnector.java @@ -126,6 +126,16 @@ public class ConcurrentUpdateSolrConnector implements SolrConnector { ensureAliveProcessHandler(); } + @Override + public int hashCode() { + return this.connector.hashCode(); + } + + @Override + public boolean equals(Object o) { + return o instanceof ConcurrentUpdateSolrConnector && this.connector.equals(((ConcurrentUpdateSolrConnector) o).connector); + } + @Override public int bufferSize() { return this.processQueue.size(); diff --git a/source/net/yacy/cora/federate/solr/connector/EmbeddedSolrConnector.java b/source/net/yacy/cora/federate/solr/connector/EmbeddedSolrConnector.java index 366990b09..8c035d5b6 100644 --- a/source/net/yacy/cora/federate/solr/connector/EmbeddedSolrConnector.java +++ b/source/net/yacy/cora/federate/solr/connector/EmbeddedSolrConnector.java @@ -98,6 +98,16 @@ public class EmbeddedSolrConnector extends SolrServerConnector implements SolrCo this.requestHandler.inform(this.core); super.init(this.instance.getServer(coreName)); } + + @Override + public int hashCode() { + return this.instance.hashCode(); + } + + @Override + public boolean equals(Object o) { + return o instanceof EmbeddedSolrConnector && this.instance.equals(((EmbeddedSolrConnector) o).instance); + } @Override public int bufferSize() { diff --git a/source/net/yacy/cora/federate/solr/connector/MirrorSolrConnector.java b/source/net/yacy/cora/federate/solr/connector/MirrorSolrConnector.java index 8e4b46fd6..fa38beae7 100644 --- a/source/net/yacy/cora/federate/solr/connector/MirrorSolrConnector.java +++ b/source/net/yacy/cora/federate/solr/connector/MirrorSolrConnector.java @@ -52,6 +52,19 @@ public class MirrorSolrConnector extends AbstractSolrConnector implements SolrCo this.solr0 = solr0; this.solr1 = solr1; } + + @Override + public int hashCode() { + return (this.solr0 == null ? 0 : this.solr0.hashCode()) + (this.solr1 == null ? 0 : this.solr1.hashCode()); + } + + @Override + public boolean equals(Object o) { + return o instanceof MirrorSolrConnector && + ((this.solr0 == null && ((MirrorSolrConnector) o).solr0 == null) || (((this.solr0 != null && ((MirrorSolrConnector) o).solr0 != null)) && this.solr0.equals(((MirrorSolrConnector) o).solr0))) && + ((this.solr1 == null && ((MirrorSolrConnector) o).solr1 == null) || (((this.solr1 != null && ((MirrorSolrConnector) o).solr1 != null)) && this.solr1.equals(((MirrorSolrConnector) o).solr1))); + } + @Override public int bufferSize() { diff --git a/source/net/yacy/cora/federate/solr/connector/RemoteSolrConnector.java b/source/net/yacy/cora/federate/solr/connector/RemoteSolrConnector.java index e620cee9b..dcf8bc0e3 100644 --- a/source/net/yacy/cora/federate/solr/connector/RemoteSolrConnector.java +++ b/source/net/yacy/cora/federate/solr/connector/RemoteSolrConnector.java @@ -66,6 +66,16 @@ public class RemoteSolrConnector extends SolrServerConnector implements SolrConn super.init(s); } + @Override + public int hashCode() { + return this.instance.hashCode(); + } + + @Override + public boolean equals(Object o) { + return o instanceof RemoteSolrConnector && ((RemoteSolrConnector) o).instance.equals(this.instance); + } + public SolrInstance getInstance() { return this.instance; } diff --git a/source/net/yacy/cora/federate/solr/instance/EmbeddedInstance.java b/source/net/yacy/cora/federate/solr/instance/EmbeddedInstance.java index c9eb0b1e6..7c79fd9b4 100644 --- a/source/net/yacy/cora/federate/solr/instance/EmbeddedInstance.java +++ b/source/net/yacy/cora/federate/solr/instance/EmbeddedInstance.java @@ -100,6 +100,16 @@ public class EmbeddedInstance implements SolrInstance { this.server.put(this.defaultCoreName, this.defaultCoreServer); } + @Override + public int hashCode() { + return this.containerPath.hashCode(); + } + + @Override + public boolean equals(Object o) { + return o instanceof EmbeddedInstance && this.containerPath.equals(((EmbeddedInstance) o).containerPath); + } + private void initializeCoreConf(final File solr_config, final File containerPath, String coreName) { // ensure that default core path exists diff --git a/source/net/yacy/cora/federate/solr/instance/InstanceMirror.java b/source/net/yacy/cora/federate/solr/instance/InstanceMirror.java index e2c974d26..23f98f9ff 100644 --- a/source/net/yacy/cora/federate/solr/instance/InstanceMirror.java +++ b/source/net/yacy/cora/federate/solr/instance/InstanceMirror.java @@ -22,7 +22,9 @@ package net.yacy.cora.federate.solr.instance; import java.io.IOException; import java.util.Collection; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import net.yacy.cora.federate.solr.connector.ConcurrentUpdateSolrConnector; @@ -92,7 +94,9 @@ public class InstanceMirror { } public synchronized void close() { - for (SolrConnector connector: this.mirrorConnectorCache.values()) connector.close(); + Set connectors = new HashSet(); + connectors.addAll(this.mirrorConnectorCache.values()); + for (SolrConnector connector: connectors) connector.close(); this.mirrorConnectorCache.clear(); } diff --git a/source/net/yacy/cora/federate/solr/instance/RemoteInstance.java b/source/net/yacy/cora/federate/solr/instance/RemoteInstance.java index 9ca938a6e..10e73568c 100644 --- a/source/net/yacy/cora/federate/solr/instance/RemoteInstance.java +++ b/source/net/yacy/cora/federate/solr/instance/RemoteInstance.java @@ -183,6 +183,16 @@ public class RemoteInstance implements SolrInstance { if (this.defaultServer == null) throw new IOException("cannot connect to url " + url + " and connect core " + defaultCoreName); } + @Override + public int hashCode() { + return this.solrurl.hashCode(); + } + + @Override + public boolean equals(Object o) { + return o instanceof RemoteInstance && ((RemoteInstance) o).solrurl.equals(this.solrurl); + } + public String getAdminInterface() { final InetAddress localhostExternAddress = Domains.myPublicLocalIP(); final String localhostExtern = localhostExternAddress == null ? "127.0.0.1" : localhostExternAddress.getHostAddress();