- fix for NPEs during remote solr configuration

- fixed remote solr setting switch
- added more logging
pull/1/head
Michael Peter Christen 13 years ago
parent b5192e03d7
commit c913b2ba77

@ -122,7 +122,8 @@ public class IndexFederated_p {
sb.index.fulltext().disconnectRemoteSolr(); sb.index.fulltext().disconnectRemoteSolr();
} }
if (!solrRemoteWasOn && solrRemoteIsOnAfterwards) { if (solrRemoteIsOnAfterwards) {
if (solrRemoteWasOn) sb.index.fulltext().disconnectRemoteSolr();
// switch on // switch on
final boolean usesolr = sb.getConfigBool(SwitchboardConstants.FEDERATED_SERVICE_SOLR_INDEXING_ENABLED, false) & solrurls.length() > 0; final boolean usesolr = sb.getConfigBool(SwitchboardConstants.FEDERATED_SERVICE_SOLR_INDEXING_ENABLED, false) & solrurls.length() > 0;
try { try {

@ -142,7 +142,7 @@ public class RemoteSolrConnector extends SolrServerConnector implements SolrConn
} }
public void terminate() { public void terminate() {
this.client.getConnectionManager().shutdown(); if (this.client != null) this.client.getConnectionManager().shutdown();
} }
@Override @Override

@ -78,9 +78,7 @@ public abstract class SolrServerConnector extends AbstractSolrConnector implemen
@Override @Override
public synchronized void close() { public synchronized void close() {
try { try {
synchronized (this.server) { if (this.server != null) synchronized (this.server) {this.server.commit();}
this.server.commit();
}
this.server = null; this.server = null;
} catch (SolrServerException e) { } catch (SolrServerException e) {
Log.logException(e); Log.logException(e);

@ -1032,18 +1032,17 @@ public final class Protocol
} }
event.rankingProcess.addExpectedRemoteReferences(count); event.rankingProcess.addExpectedRemoteReferences(count);
SolrDocumentList docList = null; SolrDocumentList docList = null;
final String solrQuerystring = event.getQuery().solrQueryString(false); final String solrQuerystring = event.getQuery().solrQueryString();
Log.logInfo("Protocol", "SOLR QUERY: " + solrQuerystring);
boolean localsearch = target == null || target.equals(event.peers.mySeed()); boolean localsearch = target == null || target.equals(event.peers.mySeed());
if (localsearch) { if (localsearch) {
// search the local index // search the local index
try { try {
docList = event.rankingProcess.getQuery().getSegment().fulltext().getSolr().query(solrQuerystring, offset, count); docList = event.rankingProcess.getQuery().getSegment().fulltext().getSolr().query(solrQuerystring, offset, count);
} catch (SolrException e) { } catch (SolrException e) {
Network.log.logInfo("SEARCH failed (solr), localpeer (" + e.getMessage() + ")"); Network.log.logInfo("SEARCH failed (solr, 1), localpeer (" + e.getMessage() + ")", e);
return -1; return -1;
} catch (IOException e) { } catch (IOException e) {
Network.log.logInfo("SEARCH failed (solr), localpeer (" + e.getMessage() + ")"); Network.log.logInfo("SEARCH failed (solr, 2), localpeer (" + e.getMessage() + ")", e);
return -1; return -1;
} }
} else { } else {
@ -1053,13 +1052,14 @@ public final class Protocol
docList = solrConnector.query(solrQuerystring, offset, count); docList = solrConnector.query(solrQuerystring, offset, count);
// no need to close this here because that sends a commit to remote solr which is not wanted here // no need to close this here because that sends a commit to remote solr which is not wanted here
} catch (IOException e) { } catch (IOException e) {
Network.log.logInfo("SEARCH failed (solr), Peer: " + target.hash + ":" + target.getName() + " (" + e.getMessage() + ")"); Network.log.logInfo("SEARCH failed (solr), Peer: " + target.hash + ":" + target.getName() + " (" + e.getMessage() + ")", e);
return -1; return -1;
} }
} }
// evaluate result // evaluate result
if (docList.size() > 0) {// create containers if (docList.size() > 0) {// create containers
Network.log.logInfo("SEARCH (solr), returned " + docList.size() + " documents from peer " + target.hash + ":" + target.getName());
final List<ReferenceContainer<WordReference>> container = new ArrayList<ReferenceContainer<WordReference>>(wordhashes.size()); final List<ReferenceContainer<WordReference>> container = new ArrayList<ReferenceContainer<WordReference>>(wordhashes.size());
for (byte[] hash: wordhashes) { for (byte[] hash: wordhashes) {
try { try {

Loading…
Cancel
Save