Pavel Vasilyev created SOLR-10475:
-------------------------------------
Summary: DIH JdbcDataSource SqlEntityProcessor - Support
Child-free parents after all children has been consumed
Key: SOLR-10475
URL: https://issues.apache.org/jira/browse/SOLR-10475
Project: Solr
Issue Type: Bug
Security Level: Public (Default Security Level. Issues are Public)
Components: contrib - DataImportHandler
Affects Versions: 5.5.1
Environment: Solr on Linux machine
Oracle Data base (11g)
Reporter: Pavel Vasilyev
Assume DIH's feature of zipping {{parents}} and {{children}} is used. Here is
sample {{dih-config.xml}}:
{code:xml}
<dataConfig>
<document>
<entity name="parent" processor="SqlEntityProcessor"
query="SELECT * FROM PARENT ORDER BY id">
<entity name="child_1" processor="SqlEntityProcessor"
where="parent_id=parent.id" query="SELECT *
FROM CHILD_1 ORDER BY parent_id" join="zipper" >
</entity>
</entity>
</document>
</dataConfig>
{code}
One might come up with the issue when:
- Oracle Database is used;
- at some point of joining there are no more children documents; thus the
child's {{ResultSet}} is closed;
- parent documents are not finished; thus {{ResultSet}} is still in process;
- attempting to find child for the next parent is failing due to closed
{{ResultSet}}
Here is stacktrace:
{code}
org.apache.solr.handler.dataimport.DataImportHandlerException:
java.sql.SQLRecoverableException: Closed Resultset: next
at
org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:61)
at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.hasnext(JdbcDataSource.java:434)
at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator$1.hasNext(JdbcDataSource.java:350)
at com.google.common.collect.Iterators$PeekingImpl.hasNext(Iterators.java:1216)
at org.apache.solr.handler.dataimport.Zipper.supplyNextChild(Zipper.java:65)
at
org.apache.solr.handler.dataimport.EntityProcessorBase.getNext(EntityProcessorBase.java:127)
at
org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:75)
at
org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:244)
at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:475)
at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:514)
at
org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:414)
at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:329)
at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:232)
at
org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:416)
at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:480)
at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:461)
Caused by: java.sql.SQLRecoverableException: Closed Resultset: next
at oracle.jdbc.driver.OracleResultSetImpl.next(OracleResultSetImpl.java:238)
at
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.hasnext(JdbcDataSource.java:426)
... 14 more
{code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]