You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-dev@lucene.apache.org by "Shalin Shekhar Mangar (JIRA)" <ji...@apache.org> on 2009/09/07 13:27:57 UTC

[jira] Updated: (SOLR-1269) stack trace not clear when there is a SQL error

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

Shalin Shekhar Mangar updated SOLR-1269:
----------------------------------------

    Attachment: SOLR-1269.patch

# Used DataImportHandlerException.wrapAndThrow to avoid incorrect messages
# Add null check in JdbcDataSource#close
# Fixed close() logic so that JdbcDataSource#close is not called after connection timeouts.

I tried two scenarios:
# Incorrect driver name
# Incorrect sql query

With incorrect driver name, before this patch:
{quote}
SEVERE: Full Import failed
org.apache.solr.handler.dataimport.DataImportHandlerException: Failed to initialize DataSource: null Processing Document # 1
	at org.apache.solr.handler.dataimport.DataImporter.getDataSourceInstance(DataImporter.java:307)
	at org.apache.solr.handler.dataimport.ContextImpl.getDataSource(ContextImpl.java:93)
	at org.apache.solr.handler.dataimport.SqlEntityProcessor.init(SqlEntityProcessor.java:52)
	at org.apache.solr.handler.dataimport.EntityProcessorWrapper.init(EntityProcessorWrapper.java:71)
	at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:302)
	at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:225)
	at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:167)
	at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:333)
	at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:393)
	at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:372)
Caused by: org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver: org.hsqldb.ajdbcDriver Processing Document # 1
	at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:72)
	at org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:114)
	at org.apache.solr.handler.dataimport.JdbcDataSource.init(JdbcDataSource.java:62)
	at org.apache.solr.handler.dataimport.DataImporter.getDataSourceInstance(DataImporter.java:305)
	... 9 more
{quote}

After the patch:
{quote}
SEVERE: Full Import failed
org.apache.solr.handler.dataimport.DataImportHandlerException: Could not load driver: org.hsqldb.ajdbcDriver Processing Document # 1
	at org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:72)
	at org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:114)
	at org.apache.solr.handler.dataimport.JdbcDataSource.init(JdbcDataSource.java:62)
	at org.apache.solr.handler.dataimport.DataImporter.getDataSourceInstance(DataImporter.java:306)
	at org.apache.solr.handler.dataimport.ContextImpl.getDataSource(ContextImpl.java:93)
	at org.apache.solr.handler.dataimport.SqlEntityProcessor.init(SqlEntityProcessor.java:52)
	at org.apache.solr.handler.dataimport.EntityProcessorWrapper.init(EntityProcessorWrapper.java:71)
	at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:302)
	at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:225)
	at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:167)
	at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:333)
	at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:393)
	at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:372)
Caused by: java.lang.ClassNotFoundException: Unable to load org.hsqldb.ajdbcDriver or org.apache.solr.handler.dataimport.org.hsqldb.ajdbcDriver
	at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:717)
	at org.apache.solr.handler.dataimport.JdbcDataSource.createConnectionFactory(JdbcDataSource.java:112)
	... 11 more
{quote}

In the case of incorrect SQL query, the following is logged (before and after is same):
{quote}
SEVERE: Exception while processing: item document : SolrInputDocument[{}]
org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: select * from item1 Processing Document # 1
	at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:251)
	at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:208)
	at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:39)
	at org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:58)
	at org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:71)
	at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:237)
	at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:339)
	at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:225)
	at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:167)
	at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:333)
	at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:393)
	at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:372)
Caused by: java.sql.SQLException: Table not found in statement [select * from item1]
	at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
	at org.hsqldb.jdbc.jdbcStatement.execute(Unknown Source)
	at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:244)
	... 11 more
{quote}

> stack trace not clear when there is a SQL error
> -----------------------------------------------
>
>                 Key: SOLR-1269
>                 URL: https://issues.apache.org/jira/browse/SOLR-1269
>             Project: Solr
>          Issue Type: Improvement
>          Components: contrib - DataImportHandler
>    Affects Versions: 1.4
>            Reporter: Erik Hatcher
>         Attachments: SOLR-1269.patch
>
>
> When setting up a new JDBC datasource and the SQL isn't right yet, we are getting a stack trace that says ClassNotFoundException, but that is misleading.  
> A cleaner stack trace is warranted, indicating the actual error.
> [actual SQL statement omitted]
> org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: SELECT     .....  Processing Document # 1
> 	at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:250)
> 	at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:207)
> 	at org.apache.solr.handler.dataimport.JdbcDataSource.getData(JdbcDataSource.java:40)
> 	at org.apache.solr.handler.dataimport.SqlEntityProcessor.initQuery(SqlEntityProcessor.java:58)
> 	at org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:71)
> 	at org.apache.solr.handler.dataimport.EntityProcessorWrapper.nextRow(EntityProcessorWrapper.java:237)
> 	at org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:343)
> 	at org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:224)
> 	at org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:167)
> 	at org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:333)
> 	at org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:393)
> 	at org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:372)
> Caused by: java.lang.ClassNotFoundException: Unable to load null or org.apache.solr.handler.dataimport.null
> 	at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:723)
> 	at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:188)
> 	at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:127)
> 	at org.apache.solr.handler.dataimport.JdbcDataSource.getConnection(JdbcDataSource.java:362)
> 	at org.apache.solr.handler.dataimport.JdbcDataSource.access$300(JdbcDataSource.java:40)
> 	at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:237)
> 	... 11 more
> Caused by: java.lang.NullPointerException
> 	at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:768)
> 	at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:280)
> 	at org.apache.solr.handler.dataimport.DocBuilder.loadClass(DocBuilder.java:713)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.