Steffen Moelter created SOLR-3791:
-------------------------------------

             Summary: SortedMapBackedCache.java throws NullPointerException
                 Key: SOLR-3791
                 URL: https://issues.apache.org/jira/browse/SOLR-3791
             Project: Solr
          Issue Type: Bug
          Components: contrib - DataImportHandler
    Affects Versions: 3.6.1
         Environment: Debian
            Reporter: Steffen Moelter


As datasource is a mysql via jdbc configured in the DIH. There are some sql 
statements in entities, that delivers NULL values in some fields.
When this entities do have processor="CachedSqlEntityProcessor", a 
NullPointerException will be thrown. I Tried it on different machines, with 
different copies of the index.

e.g.:
<entity processor="CachedSqlEntityProcessor"
        name="locator_ids"
        query="
          SELECT l1.id AS l1id, l2.id AS l2id, l3.id AS l3id, l4.id AS l4id, 
l5.id AS l5id, l6.id AS l6id, l7.id AS l7id FROM locators l1
            LEFT JOIN locators l2 ON l1.parent_id = l2.id

.... and so on delivers a result like:

+-------+------+------+------+------+------+------+
| l1id  | l2id | l3id | l4id | l5id | l6id | l7id |
+-------+------+------+------+------+------+------+
| 21843 |  855 |  223 |   66 |   12 |    1 | NULL |
+-------+------+------+------+------+------+------+

The SortedMapBackedCache throws the NullPointer.
Staktrace:
java.lang.NullPointerException
        at java.util.TreeMap.getEntry(TreeMap.java:341)
        at java.util.TreeMap.get(TreeMap.java:272)
        at 
org.apache.solr.handler.dataimport.SortedMapBackedCache.add(SortedMapBackedCache.java:57)
        at 
org.apache.solr.handler.dataimport.DIHCacheSupport.populateCache(DIHCacheSupport.java:124)
        at 
org.apache.solr.handler.dataimport.DIHCacheSupport.getSimpleCacheData(DIHCacheSupport.java:199)
        at 
org.apache.solr.handler.dataimport.DIHCacheSupport.getCacheData(DIHCacheSupport.java:147)
        at 
org.apache.solr.handler.dataimport.EntityProcessorBase.getNext(EntityProcessorBase.java:132)
        at 
org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:75)
        at 
org.apache.solr.handler.dataimport.EntityProcessorWrapper.pullRow(EntityProcessorWrapper.java:330)
        at 
org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:296)
        at 
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:683)

I had to give an onError="continue" to the entity, in order to get the proper 
stacktrace. Leaving out the onError property (default=Abort) suppresses the 
stacktrace in EntityProcessorWrapper.java line 332   

The DIH version 3.5.0 is not affected, works fine for me

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to