[ 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 more-complete patch to allow SortedMapBackedCache handle null keys (ignoring them). A unit test is included. I will commit shortly as this needs to be fixed in 4.0 > 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, 4.0-BETA > Environment: Debian > Reporter: Steffen Moelter > Assignee: James Dyer > Priority: Blocker > Fix For: 4.0 > > Attachments: SOLR-3791.patch, 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