Author: shalin
Date: Tue Jan 27 07:49:22 2009
New Revision: 738020
URL: http://svn.apache.org/viewvc?rev=738020&view=rev
Log:
SOLR-974 -- DataImportHandler skips commit if no data has been updated
Modified:
lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
Modified: lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt?rev=738020&r1=738019&r2=738020&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt Tue Jan 27 07:49:22
2009
@@ -61,6 +61,9 @@
1. SOLR-846: Reduce memory consumption during delta import by removing keys
when used
(Ricky Leung, Noble Paul via shalin)
+2. SOLR-974: DataImportHandler skips commit if no data has been updated.
+ (Wojtek Piaseczny, shalin)
+
Bug Fixes
----------------------
1. SOLR-800: Deep copy collections to avoid ConcurrentModificationException
in XPathEntityprocessor while streaming
Modified:
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java?rev=738020&r1=738019&r2=738020&view=diff
==============================================================================
---
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
(original)
+++
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
Tue Jan 27 07:49:22 2009
@@ -175,8 +175,15 @@
}
}
} else {
- // Finished operation normally, commit now
- commit();
+ // Do not commit unnecessarily if this is a delta-import and no
documents were created or deleted
+ if (!requestParameters.clean) {
+ if (importStatistics.docCount.get() > 0 ||
importStatistics.deletedDocCount.get() > 0) {
+ commit();
+ }
+ } else {
+ // Finished operation normally, commit now
+ commit();
+ }
if (document.onImportEnd != null) {
invokeEventListener(document.onImportEnd);
}
Modified:
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java?rev=738020&r1=738019&r2=738020&view=diff
==============================================================================
---
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
(original)
+++
lucene/solr/trunk/contrib/dataimporthandler/src/test/java/org/apache/solr/handler/dataimport/TestDocBuilder.java
Tue Jan 27 07:49:22 2009
@@ -21,10 +21,7 @@
import org.junit.Assert;
import org.junit.Test;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* <p>
@@ -71,6 +68,31 @@
}
@Test
+ public void testDeltaImportNoRows_MustNotCommit() {
+ try {
+ DataImporter di = new DataImporter();
+ di.loadDataConfig(dc_deltaConfig);
+ DataConfig cfg = di.getConfig();
+ DataConfig.Entity ent = cfg.document.entities.get(0);
+ MockDataSource.setIterator("select * from x", new
ArrayList().iterator());
+ MockDataSource.setIterator("select id from x", new
ArrayList().iterator());
+ ent.dataSrc = new MockDataSource();
+ ent.isDocRoot = true;
+ DataImporter.RequestParams rp = new
DataImporter.RequestParams(createMap("command", "delta-import"));
+ SolrWriterImpl swi = new SolrWriterImpl();
+ di.runCmd(rp, swi);
+ Assert.assertEquals(Boolean.FALSE, swi.deleteAllCalled);
+ Assert.assertEquals(Boolean.FALSE, swi.commitCalled);
+ Assert.assertEquals(0, swi.docs.size());
+ Assert.assertEquals(1,
di.getDocBuilder().importStatistics.queryCount.get());
+ Assert.assertEquals(0,
di.getDocBuilder().importStatistics.docCount.get());
+ Assert.assertEquals(0,
di.getDocBuilder().importStatistics.rowsCount.get());
+ } finally {
+ MockDataSource.clearCache();
+ }
+ }
+
+ @Test
public void singleEntityOneRow() {
try {
DataImporter di = new DataImporter();
@@ -153,9 +175,9 @@
static class SolrWriterImpl extends SolrWriter {
List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
- Boolean deleteAllCalled;
+ Boolean deleteAllCalled = Boolean.FALSE;
- Boolean commitCalled;
+ Boolean commitCalled = Boolean.FALSE;
public SolrWriterImpl() {
super(null, ".");
@@ -186,4 +208,12 @@
+ " <field column=\"desc\" name=\"desc_s\" />" + "
</entity>\n"
+ " </document>\n" + "</dataConfig>";
+ public static final String dc_deltaConfig = "<dataConfig>\n"
+ + " <document name=\"X\" >\n"
+ + " <entity name=\"x\" query=\"select * from x\"
deltaQuery=\"select id from x\">\n"
+ + " <field column=\"id\"/>\n"
+ + " <field column=\"desc\"/>\n"
+ + " <field column=\"desc\" name=\"desc_s\" />" + "
</entity>\n"
+ + " </document>\n" + "</dataConfig>";
+
}