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" +