You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Mark <st...@gmail.com> on 2011/12/02 01:57:37 UTC

Multithreaded DIH bug

I'm trying to use multiple threads with DIH but I keep receiving the 
following error.. "Operation not allowed after ResultSet closed"

Is there anyway I can fix this?

Dec 1, 2011 4:38:47 PM org.apache.solr.common.SolrException log
SEVERE: Full Import failed:java.lang.RuntimeException: Error in 
multi-threaded import
     at 
org.apache.solr.handler.dataimport.DocBuilder.doFullDump(DocBuilder.java:268)
     at 
org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:187)
     at 
org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:359)
     at 
org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:427)
     at 
org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:408)
Caused by: 
org.apache.solr.handler.dataimport.DataImportHandlerException: 
java.sql.SQLException: Operation not allowed after ResultSet closed
     at 
org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndThrow(DataImportHandlerException.java:64)
     at 
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.hasnext(JdbcDataSource.java:339)
     at 
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.access$600(JdbcDataSource.java:228)
     at 
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator$1.hasNext(JdbcDataSource.java:262)
     at 
org.apache.solr.handler.dataimport.CachedSqlEntityProcessor.getAllNonCachedRows(CachedSqlEntityProcessor.java:72)
     at 
org.apache.solr.handler.dataimport.EntityProcessorBase.getIdCacheData(EntityProcessorBase.java:201)
     at 
org.apache.solr.handler.dataimport.CachedSqlEntityProcessor.nextRow(CachedSqlEntityProcessor.java:60)
     at 
org.apache.solr.handler.dataimport.ThreadedEntityProcessorWrapper.nextRow(ThreadedEntityProcessorWrapper.java:84)
     at 
org.apache.solr.handler.dataimport.DocBuilder$EntityRunner.runAThread(DocBuilder.java:449)
     at 
org.apache.solr.handler.dataimport.DocBuilder$EntityRunner.run(DocBuilder.java:402)
     at 
org.apache.solr.handler.dataimport.DocBuilder$EntityRunner.runAThread(DocBuilder.java:469)
     at 
org.apache.solr.handler.dataimport.DocBuilder$EntityRunner.access$000(DocBuilder.java:356)
     at 
org.apache.solr.handler.dataimport.DocBuilder$EntityRunner$1.run(DocBuilder.java:409)
     at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
     at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
     at java.lang.Thread.run(Thread.java:636)
Caused by: java.sql.SQLException: Operation not allowed after ResultSet 
closed
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
     at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:794)
     at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7139)
     at 
org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.hasnext(JdbcDataSource.java:331)
     ... 14 more


Re: Multithreaded DIH bug

Posted by Mark <st...@gmail.com>.
Thanks for the info

On 12/2/11 1:29 AM, Mikhail Khludnev wrote:
> Hello,
>
> AFAIK Particularly this exception is not a big deal. It's just one of the
> evidence of the fact that CachedSqlEntityProcessor doesn't work in multiple
> threads at 3.x and 4.0. It's discussed at
> http://search-lucene.com/m/0DNn32L2UBv
>
> the most problem here is the following messages in the log
>
> org.apache.solr.handler.dataimport.*ThreadedEntityProcessorWrapper. nextRow*
> *arow : null*
>
> Some time ago I did the patch for 3.4 (pretty raw) you can try it
> http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201110.mbox/browser
> I plan (but only plan, sorry) to address it at 4.0 where SOLR-2382
> refactoring has been applied recently.
>
> Regards
>
> On Fri, Dec 2, 2011 at 4:57 AM, Mark<st...@gmail.com>  wrote:
>
>> I'm trying to use multiple threads with DIH but I keep receiving the
>> following error.. "Operation not allowed after ResultSet closed"
>>
>> Is there anyway I can fix this?
>>
>> Dec 1, 2011 4:38:47 PM org.apache.solr.common.**SolrException log
>> SEVERE: Full Import failed:java.lang.**RuntimeException: Error in
>> multi-threaded import
>>     at org.apache.solr.handler.**dataimport.DocBuilder.**
>> doFullDump(DocBuilder.java:**268)
>>     at org.apache.solr.handler.**dataimport.DocBuilder.execute(**
>> DocBuilder.java:187)
>>     at org.apache.solr.handler.**dataimport.DataImporter.**
>> doFullImport(DataImporter.**java:359)
>>     at org.apache.solr.handler.**dataimport.DataImporter.**
>> runCmd(DataImporter.java:427)
>>     at org.apache.solr.handler.**dataimport.DataImporter$1.run(**
>> DataImporter.java:408)
>> Caused by: org.apache.solr.handler.**dataimport.**DataImportHandlerException:
>> java.sql.SQLException: Operation not allowed after ResultSet closed
>>     at org.apache.solr.handler.**dataimport.**DataImportHandlerException.**
>> wrapAndThrow(**DataImportHandlerException.**java:64)
>>     at org.apache.solr.handler.**dataimport.JdbcDataSource$**
>> ResultSetIterator.hasnext(**JdbcDataSource.java:339)
>>     at org.apache.solr.handler.**dataimport.JdbcDataSource$**
>> ResultSetIterator.access$600(**JdbcDataSource.java:228)
>>     at org.apache.solr.handler.**dataimport.JdbcDataSource$**
>> ResultSetIterator$1.hasNext(**JdbcDataSource.java:262)
>>     at org.apache.solr.handler.**dataimport.**CachedSqlEntityProcessor.**
>> getAllNonCachedRows(**CachedSqlEntityProcessor.java:**72)
>>     at org.apache.solr.handler.**dataimport.**EntityProcessorBase.**
>> getIdCacheData(**EntityProcessorBase.java:201)
>>     at org.apache.solr.handler.**dataimport.**CachedSqlEntityProcessor.**
>> nextRow(**CachedSqlEntityProcessor.java:**60)
>>     at org.apache.solr.handler.**dataimport.**
>> ThreadedEntityProcessorWrapper**.nextRow(**ThreadedEntityProcessorWrapper*
>> *.java:84)
>>     at org.apache.solr.handler.**dataimport.DocBuilder$**
>> EntityRunner.runAThread(**DocBuilder.java:449)
>>     at org.apache.solr.handler.**dataimport.DocBuilder$**
>> EntityRunner.run(DocBuilder.**java:402)
>>     at org.apache.solr.handler.**dataimport.DocBuilder$**
>> EntityRunner.runAThread(**DocBuilder.java:469)
>>     at org.apache.solr.handler.**dataimport.DocBuilder$**
>> EntityRunner.access$000(**DocBuilder.java:356)
>>     at org.apache.solr.handler.**dataimport.DocBuilder$**
>> EntityRunner$1.run(DocBuilder.**java:409)
>>     at java.util.concurrent.**ThreadPoolExecutor.runWorker(**
>> ThreadPoolExecutor.java:1110)
>>     at java.util.concurrent.**ThreadPoolExecutor$Worker.run(**
>> ThreadPoolExecutor.java:603)
>>     at java.lang.Thread.run(Thread.**java:636)
>> Caused by: java.sql.SQLException: Operation not allowed after ResultSet
>> closed
>>     at com.mysql.jdbc.SQLError.**createSQLException(SQLError.**java:1073)
>>     at com.mysql.jdbc.SQLError.**createSQLException(SQLError.**java:987)
>>     at com.mysql.jdbc.SQLError.**createSQLException(SQLError.**java:982)
>>     at com.mysql.jdbc.SQLError.**createSQLException(SQLError.**java:927)
>>     at com.mysql.jdbc.ResultSetImpl.**checkClosed(ResultSetImpl.**java:794)
>>     at com.mysql.jdbc.ResultSetImpl.**next(ResultSetImpl.java:7139)
>>     at org.apache.solr.handler.**dataimport.JdbcDataSource$**
>> ResultSetIterator.hasnext(**JdbcDataSource.java:331)
>>     ... 14 more
>>
>>
>

Re: Multithreaded DIH bug

Posted by Mikhail Khludnev <mk...@griddynamics.com>.
Hello,

AFAIK Particularly this exception is not a big deal. It's just one of the
evidence of the fact that CachedSqlEntityProcessor doesn't work in multiple
threads at 3.x and 4.0. It's discussed at
http://search-lucene.com/m/0DNn32L2UBv

the most problem here is the following messages in the log

org.apache.solr.handler.dataimport.*ThreadedEntityProcessorWrapper. nextRow*
*arow : null*

Some time ago I did the patch for 3.4 (pretty raw) you can try it
http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201110.mbox/browser
I plan (but only plan, sorry) to address it at 4.0 where SOLR-2382
refactoring has been applied recently.

Regards

On Fri, Dec 2, 2011 at 4:57 AM, Mark <st...@gmail.com> wrote:

> I'm trying to use multiple threads with DIH but I keep receiving the
> following error.. "Operation not allowed after ResultSet closed"
>
> Is there anyway I can fix this?
>
> Dec 1, 2011 4:38:47 PM org.apache.solr.common.**SolrException log
> SEVERE: Full Import failed:java.lang.**RuntimeException: Error in
> multi-threaded import
>    at org.apache.solr.handler.**dataimport.DocBuilder.**
> doFullDump(DocBuilder.java:**268)
>    at org.apache.solr.handler.**dataimport.DocBuilder.execute(**
> DocBuilder.java:187)
>    at org.apache.solr.handler.**dataimport.DataImporter.**
> doFullImport(DataImporter.**java:359)
>    at org.apache.solr.handler.**dataimport.DataImporter.**
> runCmd(DataImporter.java:427)
>    at org.apache.solr.handler.**dataimport.DataImporter$1.run(**
> DataImporter.java:408)
> Caused by: org.apache.solr.handler.**dataimport.**DataImportHandlerException:
> java.sql.SQLException: Operation not allowed after ResultSet closed
>    at org.apache.solr.handler.**dataimport.**DataImportHandlerException.**
> wrapAndThrow(**DataImportHandlerException.**java:64)
>    at org.apache.solr.handler.**dataimport.JdbcDataSource$**
> ResultSetIterator.hasnext(**JdbcDataSource.java:339)
>    at org.apache.solr.handler.**dataimport.JdbcDataSource$**
> ResultSetIterator.access$600(**JdbcDataSource.java:228)
>    at org.apache.solr.handler.**dataimport.JdbcDataSource$**
> ResultSetIterator$1.hasNext(**JdbcDataSource.java:262)
>    at org.apache.solr.handler.**dataimport.**CachedSqlEntityProcessor.**
> getAllNonCachedRows(**CachedSqlEntityProcessor.java:**72)
>    at org.apache.solr.handler.**dataimport.**EntityProcessorBase.**
> getIdCacheData(**EntityProcessorBase.java:201)
>    at org.apache.solr.handler.**dataimport.**CachedSqlEntityProcessor.**
> nextRow(**CachedSqlEntityProcessor.java:**60)
>    at org.apache.solr.handler.**dataimport.**
> ThreadedEntityProcessorWrapper**.nextRow(**ThreadedEntityProcessorWrapper*
> *.java:84)
>    at org.apache.solr.handler.**dataimport.DocBuilder$**
> EntityRunner.runAThread(**DocBuilder.java:449)
>    at org.apache.solr.handler.**dataimport.DocBuilder$**
> EntityRunner.run(DocBuilder.**java:402)
>    at org.apache.solr.handler.**dataimport.DocBuilder$**
> EntityRunner.runAThread(**DocBuilder.java:469)
>    at org.apache.solr.handler.**dataimport.DocBuilder$**
> EntityRunner.access$000(**DocBuilder.java:356)
>    at org.apache.solr.handler.**dataimport.DocBuilder$**
> EntityRunner$1.run(DocBuilder.**java:409)
>    at java.util.concurrent.**ThreadPoolExecutor.runWorker(**
> ThreadPoolExecutor.java:1110)
>    at java.util.concurrent.**ThreadPoolExecutor$Worker.run(**
> ThreadPoolExecutor.java:603)
>    at java.lang.Thread.run(Thread.**java:636)
> Caused by: java.sql.SQLException: Operation not allowed after ResultSet
> closed
>    at com.mysql.jdbc.SQLError.**createSQLException(SQLError.**java:1073)
>    at com.mysql.jdbc.SQLError.**createSQLException(SQLError.**java:987)
>    at com.mysql.jdbc.SQLError.**createSQLException(SQLError.**java:982)
>    at com.mysql.jdbc.SQLError.**createSQLException(SQLError.**java:927)
>    at com.mysql.jdbc.ResultSetImpl.**checkClosed(ResultSetImpl.**java:794)
>    at com.mysql.jdbc.ResultSetImpl.**next(ResultSetImpl.java:7139)
>    at org.apache.solr.handler.**dataimport.JdbcDataSource$**
> ResultSetIterator.hasnext(**JdbcDataSource.java:331)
>    ... 14 more
>
>


-- 
Sincerely yours
Mikhail Khludnev
Developer
Grid Dynamics
tel. 1-415-738-8644
Skype: mkhludnev
<http://www.griddynamics.com>
 <mk...@griddynamics.com>