use thread-safe http connection manager for authenticated remote solr

connections
pull/1/head
Michael Peter Christen 12 years ago
parent e8f7b85b98
commit 921091c3a6

@ -46,18 +46,16 @@ import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicAuthCache; import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.PoolingClientConnectionManager;
import org.apache.http.protocol.HttpContext; import org.apache.http.protocol.HttpContext;
import org.apache.solr.client.solrj.ResponseParser; import org.apache.solr.client.solrj.ResponseParser;
import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.impl.XMLResponseParser; import org.apache.solr.client.solrj.impl.XMLResponseParser;
import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrCore;
public class RemoteSolrConnector extends SolrServerConnector implements SolrConnector { public class RemoteSolrConnector extends SolrServerConnector implements SolrConnector {
@ -94,7 +92,10 @@ public class RemoteSolrConnector extends SolrServerConnector implements SolrConn
} }
HttpSolrServer s; HttpSolrServer s;
if (this.solraccount.length() > 0) { if (this.solraccount.length() > 0) {
this.client = new DefaultHttpClient() { PoolingClientConnectionManager cm = new PoolingClientConnectionManager(); // try also: ThreadSafeClientConnManager
cm.setMaxTotal(100);
this.client = new DefaultHttpClient(cm) {
@Override @Override
protected HttpContext createHttpContext() { protected HttpContext createHttpContext() {
HttpContext context = super.createHttpContext(); HttpContext context = super.createHttpContext();

@ -33,6 +33,7 @@ import net.yacy.cora.sorting.ReversibleScoreMap;
import net.yacy.kelondro.logging.Log; import net.yacy.kelondro.logging.Log;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.SolrServerException;
@ -102,8 +103,10 @@ public abstract class SolrServerConnector extends AbstractSolrConnector implemen
@Override @Override
public synchronized void commit(final boolean softCommit) { public synchronized void commit(final boolean softCommit) {
//if (this.server instanceof HttpSolrServer) ((HttpSolrServer) this.server).getHttpClient().getConnectionManager().closeExpiredConnections();
try { try {
this.server.commit(true, true, softCommit); this.server.commit(true, true, softCommit);
if (this.server instanceof HttpSolrServer) ((HttpSolrServer) this.server).shutdown();
} catch (Throwable e) { } catch (Throwable e) {
Log.logException(e); Log.logException(e);
} }

Loading…
Cancel
Save