You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jd...@apache.org on 2012/09/14 17:48:56 UTC
svn commit: r1384828 - in /lucene/dev/branches/branch_4x/solr: ./
contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/
contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/
Author: jdyer
Date: Fri Sep 14 15:48:55 2012
New Revision: 1384828
URL: http://svn.apache.org/viewvc?rev=1384828&view=rev
Log:
SOLR-3779/SOLR-3791: fix for DIH LineEntityProcessor & CachedSqlEntityProdessor
Added:
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListWithLineEntityProcessor.java
- copied unchanged from r1384819, lucene/dev/trunk/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestFileListWithLineEntityProcessor.java
Modified:
lucene/dev/branches/branch_4x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessor.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/LineEntityProcessor.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SortedMapBackedCache.java
lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSortedMapBackedCache.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=1384828&r1=1384827&r2=1384828&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Fri Sep 14 15:48:55 2012
@@ -163,6 +163,13 @@ Bug Fixes
* SOLR-3811: Query Form using wrong values for dismax, edismax (steffkes)
+* SOLR-3779: DataImportHandler's LineEntityProcessor when used in conjunction
+ with FileListEntityProcessor would only process the first file.
+ (Ahmet Arslan via James Dyer)
+
+* SOLR-3791: CachedSqlEntityProcessor would throw a NullPointerException when
+ a query returns a row with a NULL key. (Steffen Moelter via James Dyer)
+
Other Changes
----------------------
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessor.java?rev=1384828&r1=1384827&r2=1384828&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessor.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/EntityProcessor.java Fri Sep 14 15:48:55 2012
@@ -89,8 +89,7 @@ public abstract class EntityProcessor {
public abstract Map<String, Object> nextModifiedParentRowKey();
/**
- * Invoked for each parent-row after the last row for this entity is processed. If this is the root-most
- * entity, it will be called only once in the import, at the very end.
+ * Invoked for each entity at the very end of the import to do any needed cleanup tasks.
*
*/
public abstract void destroy();
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/LineEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/LineEntityProcessor.java?rev=1384828&r1=1384827&r2=1384828&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/LineEntityProcessor.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/LineEntityProcessor.java Fri Sep 14 15:48:55 2012
@@ -115,7 +115,11 @@ public class LineEntityProcessor extends
"Problem reading from input", exp);
}
- if (line == null) return null; // end of input
+ // end of input
+ if (line == null) {
+ closeResources();
+ return null;
+ }
// First scan whole line to see if we want it
if (acceptLineRegex != null && ! acceptLineRegex.matcher(line).find()) continue;
@@ -126,13 +130,17 @@ public class LineEntityProcessor extends
return row;
}
}
+
+ public void closeResources() {
+ if (reader != null) {
+ IOUtils.closeQuietly(reader);
+ }
+ reader= null;
+ }
@Override
public void destroy() {
- if (reader != null) {
- IOUtils.closeQuietly(reader);
- }
- reader= null;
+ closeResources();
super.destroy();
}
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SortedMapBackedCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SortedMapBackedCache.java?rev=1384828&r1=1384827&r2=1384828&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SortedMapBackedCache.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/java/org/apache/solr/handler/dataimport/SortedMapBackedCache.java Fri Sep 14 15:48:55 2012
@@ -54,6 +54,10 @@ public class SortedMapBackedCache implem
}
pk = c.iterator().next();
}
+ //Rows with null keys are not added.
+ if(pk==null) {
+ return;
+ }
List<Map<String,Object>> thisKeysRecs = theMap.get(pk);
if (thisKeysRecs == null) {
thisKeysRecs = new ArrayList<Map<String,Object>>();
@@ -87,6 +91,9 @@ public class SortedMapBackedCache implem
public void delete(Object key) {
checkOpen(true);
checkReadOnly();
+ if(key==null) {
+ return;
+ }
theMap.remove(key);
}
@@ -120,6 +127,9 @@ public class SortedMapBackedCache implem
@Override
public Iterator<Map<String,Object>> iterator(Object key) {
checkOpen(true);
+ if(key==null) {
+ return null;
+ }
if(key instanceof Iterable<?>) {
List<Map<String,Object>> vals = new ArrayList<Map<String,Object>>();
Iterator<?> iter = ((Iterable<?>) key).iterator();
Modified: lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSortedMapBackedCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSortedMapBackedCache.java?rev=1384828&r1=1384827&r2=1384828&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSortedMapBackedCache.java (original)
+++ lucene/dev/branches/branch_4x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSortedMapBackedCache.java Fri Sep 14 15:48:55 2012
@@ -20,6 +20,7 @@ package org.apache.solr.handler.dataimpo
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -71,6 +72,37 @@ public class TestSortedMapBackedCache ex
}
}
}
+
+ @Test
+ public void testNullKeys() throws Exception {
+ //A null key should just be ignored, but not throw an exception
+ DIHCache cache = null;
+ try {
+ cache = new SortedMapBackedCache();
+ Map<String, String> cacheProps = new HashMap<String, String>();
+ cacheProps.put(DIHCacheSupport.CACHE_PRIMARY_KEY, "a_id");
+ cache.open(getContext(cacheProps));
+
+ Map<String,Object> data = new HashMap<String,Object>();
+ data.put("a_id", null);
+ data.put("bogus", "data");
+ cache.add(data);
+
+ Iterator<Map<String, Object>> cacheIter = cache.iterator();
+ while (cacheIter.hasNext()) {
+ Assert.fail("cache should be empty.");
+ }
+ Assert.assertNull(cache.iterator(null));
+ cache.delete(null);
+ } catch (Exception e) {
+ throw e;
+ } finally {
+ try {
+ cache.destroy();
+ } catch (Exception ex) {
+ }
+ }
+ }
@Test
public void testCacheReopensWithUpdate() {