You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by eh...@apache.org on 2014/07/20 19:35:13 UTC
svn commit: r1612126 - in /lucene/dev/branches/branch_4x/solr: ./ contrib/
contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/
contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/
contrib/dataimporthandler/sr...
Author: ehatcher
Date: Sun Jul 20 17:35:12 2014
New Revision: 1612126
URL: http://svn.apache.org/r1612126
Log:
SOLR-6258: Added onRollback event handler hook to Data Import Handler
Modified:
lucene/dev/branches/branch_4x/solr/ (props changed)
lucene/dev/branches/branch_4x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_4x/solr/contrib/ (props changed)
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/DIHConfiguration.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder2.java
Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1612126&r1=1612125&r2=1612126&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Sun Jul 20 17:35:12 2014
@@ -76,6 +76,9 @@ New Features
value for the fetchMailsSince filter.
(Peter Sturge, Timothy Potter)
+* SOLR-6258: Added onRollback event handler hook to Data Import Handler (DIH).
+ (ehatcher)
+
Bug Fixes
----------------------
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java?rev=1612126&r1=1612125&r2=1612126&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/DocBuilder.java Sun Jul 20 17:35:12 2014
@@ -308,6 +308,9 @@ public class DocBuilder {
writer.rollback();
statusMessages.put("", "Indexing failed. Rolled back all changes.");
addStatusMessage("Rolledback");
+ if ((config != null) && (config.getOnRollback() != null)) {
+ invokeEventListener(config.getOnRollback());
+ }
}
private void doFullDump() {
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/DIHConfiguration.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/DIHConfiguration.java?rev=1612126&r1=1612125&r2=1612126&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/DIHConfiguration.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/config/DIHConfiguration.java Sun Jul 20 17:35:12 2014
@@ -56,6 +56,7 @@ public class DIHConfiguration {
private final List<Entity> entities;
private final String onImportStart;
private final String onImportEnd;
+ private final String onRollback;
private final List<Map<String, String>> functions;
private final Script script;
private final Map<String, Map<String,String>> dataSources;
@@ -71,6 +72,7 @@ public class DIHConfiguration {
this.deleteQuery = ConfigParseUtil.getStringAttribute(element, "deleteQuery", null);
this.onImportStart = ConfigParseUtil.getStringAttribute(element, "onImportStart", null);
this.onImportEnd = ConfigParseUtil.getStringAttribute(element, "onImportEnd", null);
+ this.onRollback = ConfigParseUtil.getStringAttribute(element, "onRollback", null);
List<Entity> modEntities = new ArrayList<>();
List<Element> l = ConfigParseUtil.getChildNodes(element, "entity");
boolean docRootFound = false;
@@ -163,6 +165,9 @@ public class DIHConfiguration {
public String getOnImportEnd() {
return onImportEnd;
}
+ public String getOnRollback() {
+ return onRollback;
+ }
public List<Map<String,String>> getFunctions() {
return functions;
}
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder2.java?rev=1612126&r1=1612125&r2=1612126&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder2.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestDocBuilder2.java Sun Jul 20 17:35:12 2014
@@ -76,6 +76,17 @@ public class TestDocBuilder2 extends Abs
}
@Test
+ public void testRollbackHandler() throws Exception {
+ List rows = new ArrayList();
+ rows.add(createMap("id", "1", "FORCE_ROLLBACK", "true"));
+ MockDataSource.setIterator("select * from x", rows.iterator());
+
+ runFullImport(dataConfigWithRollbackHandler);
+
+ assertTrue("Rollback event listener was not called", RollbackEventListener.executed);
+ }
+
+ @Test
@SuppressWarnings("unchecked")
public void testDynamicFields() throws Exception {
List rows = new ArrayList();
@@ -276,6 +287,13 @@ public class TestDocBuilder2 extends Abs
}
}
+ public static class ForcedExceptionTransformer extends Transformer {
+ @Override
+ public Object transformRow(Map<String, Object> row, Context context) {
+ throw new DataImportHandlerException(DataImportHandlerException.SEVERE, "ForcedException");
+ }
+ }
+
public static class MockDataSource2 extends MockDataSource {
}
@@ -298,6 +316,15 @@ public class TestDocBuilder2 extends Abs
}
}
+ public static class RollbackEventListener implements EventListener {
+ public static boolean executed = false;
+
+ @Override
+ public void onEvent(Context ctx) {
+ executed = true;
+ }
+ }
+
private final String requestParamAsVariable = "<dataConfig>\n" +
" <dataSource type=\"MockDataSource\" />\n" +
" <document>\n" +
@@ -350,6 +377,15 @@ public class TestDocBuilder2 extends Abs
" </document>\n" +
"</dataConfig>";
+ private final String dataConfigWithRollbackHandler = "<dataConfig> <dataSource type=\"MockDataSource\"/>\n" +
+ " <document onRollback=\"TestDocBuilder2$RollbackEventListener\">\n" +
+ " <entity name=\"books\" query=\"select * from x\" transformer=\"TestDocBuilder2$ForcedExceptionTransformer\">\n" +
+ " <field column=\"id\" />\n" +
+ " <field column=\"FORCE_ROLLBACK\" />\n" +
+ " </entity>\n" +
+ " </document>\n" +
+ "</dataConfig>";
+
private final String dataConfigWithTemplatizedFieldNames = "<dataConfig><dataSource type=\"MockDataSource\"/>\n" +
" <document>\n" +
" <entity name=\"books\" query=\"select * from x\">\n" +