mirror of https://github.com/apache/lucene.git
SOLR-676 -- DataImportHandler should use UpdateRequestProcessor API instead of directly using UpdateHandler
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@684307 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d6fba67d5c
commit
a29a3aee26
|
@ -519,6 +519,8 @@ Bug Fixes
|
|||
|
||||
44. SOLR-598: DebugComponent now always occurs last in the SearchHandler list unless the components are explicitly declared. (gsingers)
|
||||
|
||||
45. SOLR-676: DataImportHandler should use UpdateRequestProcessor API instead of directly using UpdateHandler. (shalin)
|
||||
|
||||
Other Changes
|
||||
1. SOLR-135: Moved common classes to org.apache.solr.common and altered the
|
||||
build scripts to make two jars: apache-solr-1.3.jar and
|
||||
|
|
|
@ -16,12 +16,12 @@
|
|||
*/
|
||||
package org.apache.solr.handler.dataimport;
|
||||
|
||||
import org.apache.lucene.document.Document;
|
||||
import org.apache.solr.common.SolrException;
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
import org.apache.solr.common.params.CommonParams;
|
||||
import org.apache.solr.common.params.ModifiableSolrParams;
|
||||
import org.apache.solr.common.params.SolrParams;
|
||||
import org.apache.solr.common.params.UpdateParams;
|
||||
import org.apache.solr.common.util.ContentStreamBase;
|
||||
import org.apache.solr.common.util.NamedList;
|
||||
import org.apache.solr.core.SolrConfig;
|
||||
|
@ -33,8 +33,8 @@ import org.apache.solr.request.RawResponseWriter;
|
|||
import org.apache.solr.request.SolrQueryRequest;
|
||||
import org.apache.solr.request.SolrQueryResponse;
|
||||
import org.apache.solr.schema.IndexSchema;
|
||||
import org.apache.solr.update.DocumentBuilder;
|
||||
import org.apache.solr.update.UpdateHandler;
|
||||
import org.apache.solr.update.processor.UpdateRequestProcessor;
|
||||
import org.apache.solr.update.processor.UpdateRequestProcessorChain;
|
||||
import org.apache.solr.util.plugin.SolrCoreAware;
|
||||
|
||||
import java.util.*;
|
||||
|
@ -77,7 +77,7 @@ public class DataImportHandler extends RequestHandlerBase implements
|
|||
|
||||
private DataImporter.RequestParams requestParams;
|
||||
|
||||
private List<Document> debugDocuments;
|
||||
private List<SolrInputDocument> debugDocuments;
|
||||
|
||||
private DebugLogger debugLogger;
|
||||
|
||||
|
@ -176,9 +176,12 @@ public class DataImportHandler extends RequestHandlerBase implements
|
|||
} else if (command != null) {
|
||||
if (DataImporter.FULL_IMPORT_CMD.equals(command)
|
||||
|| DataImporter.DELTA_IMPORT_CMD.equals(command)) {
|
||||
UpdateHandler updater = req.getCore().getUpdateHandler();
|
||||
|
||||
UpdateRequestProcessorChain processorChain =
|
||||
req.getCore().getUpdateProcessingChain(params.get(UpdateParams.UPDATE_PROCESSOR));
|
||||
UpdateRequestProcessor processor = processorChain.createProcessor(req, rsp);
|
||||
SolrResourceLoader loader = req.getCore().getResourceLoader();
|
||||
SolrWriter sw = getSolrWriter(updater, loader, req
|
||||
SolrWriter sw = getSolrWriter(processor, loader, req
|
||||
.getSchema());
|
||||
|
||||
if (requestParams.debug) {
|
||||
|
@ -263,19 +266,18 @@ public class DataImportHandler extends RequestHandlerBase implements
|
|||
}
|
||||
}
|
||||
|
||||
private SolrWriter getSolrWriter(final UpdateHandler updater,
|
||||
private SolrWriter getSolrWriter(final UpdateRequestProcessor processor,
|
||||
final SolrResourceLoader loader, final IndexSchema schema) {
|
||||
|
||||
return new SolrWriter(updater, loader.getConfigDir()) {
|
||||
return new SolrWriter(processor, loader.getConfigDir()) {
|
||||
|
||||
@Override
|
||||
public boolean upload(SolrDoc d) {
|
||||
try {
|
||||
Document document = DocumentBuilder.toDocument(
|
||||
((SolrDocumentWrapper) d).doc, schema);
|
||||
SolrInputDocument document = ((SolrDocumentWrapper) d).doc;
|
||||
if (requestParams.debug) {
|
||||
if (debugDocuments == null)
|
||||
debugDocuments = new ArrayList<Document>();
|
||||
debugDocuments = new ArrayList<SolrInputDocument>();
|
||||
debugDocuments.add(document);
|
||||
if (debugDocuments.size() >= requestParams.rows) {
|
||||
// Abort this operation now
|
||||
|
|
|
@ -20,7 +20,8 @@ import org.apache.lucene.document.Document;
|
|||
import org.apache.solr.update.AddUpdateCommand;
|
||||
import org.apache.solr.update.CommitUpdateCommand;
|
||||
import org.apache.solr.update.DeleteUpdateCommand;
|
||||
import org.apache.solr.update.UpdateHandler;
|
||||
import org.apache.solr.update.processor.UpdateRequestProcessor;
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
|
||||
import java.io.*;
|
||||
import java.text.ParseException;
|
||||
|
@ -48,29 +49,29 @@ public abstract class SolrWriter {
|
|||
|
||||
static final String LAST_INDEX_KEY = "last_index_time";
|
||||
|
||||
private final UpdateHandler updater;
|
||||
private final UpdateRequestProcessor processor;
|
||||
|
||||
private final String configDir;
|
||||
|
||||
public SolrWriter(UpdateHandler updater, String confDir) {
|
||||
this.updater = updater;
|
||||
public SolrWriter(UpdateRequestProcessor processor, String confDir) {
|
||||
this.processor = processor;
|
||||
configDir = confDir;
|
||||
|
||||
}
|
||||
|
||||
public boolean upload(Document d) {
|
||||
public boolean upload(SolrInputDocument d) {
|
||||
try {
|
||||
AddUpdateCommand command = new AddUpdateCommand();
|
||||
command.doc = d;
|
||||
command.solrDoc = d;
|
||||
command.allowDups = false;
|
||||
command.overwritePending = true;
|
||||
command.overwriteCommitted = true;
|
||||
updater.addDoc(command);
|
||||
processor.processAdd(command);
|
||||
} catch (IOException e) {
|
||||
LOG.log(Level.SEVERE, "Exception while adding: " + d, e);
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
LOG.log(Level.WARNING, "Error creating document : " + d);
|
||||
LOG.log(Level.WARNING, "Error creating document : " + d, e);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -84,7 +85,7 @@ public abstract class SolrWriter {
|
|||
delCmd.id = id.toString();
|
||||
delCmd.fromPending = true;
|
||||
delCmd.fromCommitted = true;
|
||||
updater.delete(delCmd);
|
||||
processor.processDelete(delCmd);
|
||||
} catch (IOException e) {
|
||||
LOG.log(Level.SEVERE, "Exception while deleteing: " + id, e);
|
||||
}
|
||||
|
@ -167,7 +168,7 @@ public abstract class SolrWriter {
|
|||
delCmd.query = query;
|
||||
delCmd.fromCommitted = true;
|
||||
delCmd.fromPending = true;
|
||||
updater.deleteByQuery(delCmd);
|
||||
processor.processDelete(delCmd);
|
||||
} catch (IOException e) {
|
||||
LOG.log(Level.SEVERE, "Exception while deleting by query: " + query, e);
|
||||
}
|
||||
|
@ -176,7 +177,7 @@ public abstract class SolrWriter {
|
|||
public void commit(boolean optimize) {
|
||||
try {
|
||||
CommitUpdateCommand commit = new CommitUpdateCommand(optimize);
|
||||
updater.commit(commit);
|
||||
processor.processCommit(commit);
|
||||
} catch (Exception e) {
|
||||
LOG.log(Level.SEVERE, "Exception while solr commit.", e);
|
||||
}
|
||||
|
@ -188,7 +189,7 @@ public abstract class SolrWriter {
|
|||
deleteCommand.query = "*:*";
|
||||
deleteCommand.fromCommitted = true;
|
||||
deleteCommand.fromPending = true;
|
||||
updater.deleteByQuery(deleteCommand);
|
||||
processor.processDelete(deleteCommand);
|
||||
} catch (IOException e) {
|
||||
throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
|
||||
"Exception in full dump while deleting all documents.", e);
|
||||
|
|
Loading…
Reference in New Issue