[ 
https://issues.apache.org/jira/browse/SOLR-3791?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

James Dyer updated SOLR-3791:
-----------------------------

    Attachment: SOLR-3791.patch

Here is a patch that prevents a NPE in the case you try to enter a row into the 
cache with a NULL *primary key*.  The solution is to silently ignore the row 
and discard the data.  Steffen, Does this fix your issue?

A better patch would add logging to this class and log a warning when a row 
when a NULL key is added.  Also, a unit test is needed.

                
> 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
>         Attachments: SOLR-3791.patch
>
>
> 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