[
https://issues.apache.org/jira/browse/SOLR-2045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12915577#action_12915577
]
Lance Norskog commented on SOLR-2045:
-------------------------------------
Mysql has the same problem: incremental updates do not reuse a connection and
therefore fail.
> DIH doesn't release jdbc connections in conjunction with DB2
> -------------------------------------------------------------
>
> Key: SOLR-2045
> URL: https://issues.apache.org/jira/browse/SOLR-2045
> Project: Solr
> Issue Type: Bug
> Components: contrib - DataImportHandler
> Affects Versions: 1.4.1
> Environment: DB2 SQLLIB 9.5, 9.7 jdbc Driver
> Reporter: Fenlor Sebastia
>
> Using the JDBCDatasource in conjunction with the DB2 JDBC Drivers results in
> the following error when the DIH tries to close the the connection due to
> active transactions. As a consequence each delta im port or full import opens
> a new connection without closing it. So the maximum amount of connections
> will be reached soon. Setting the connection to readOnly or changing the
> transaction isolation level doesn't help neither.
> The JDBC Driver I used: "com.ibm.db2.jcc.DB2Driver" relieing in db2jcc4.jar
> shipped with DB2 Express 9.7 for example
> Here is the stack trace...
> 14.08.2010 01:49:51 org.apache.solr.handler.dataimport.JdbcDataSource
> closeConnection
> FATAL: Ignoring Error when closing connection
> com.ibm.db2.jcc.am.SqlException: [jcc][10251][10308][4.8.87]
> java.sql.Connection.close() requested while a transaction is in progress on
> the connection.The transaction remains active, and the connection cannot be
> closed. ERRORCODE=-4471, SQLSTATE=null
> at com.ibm.db2.jcc.am.gd.a(gd.java:660)
> at com.ibm.db2.jcc.am.gd.a(gd.java:60)
> at com.ibm.db2.jcc.am.gd.a(gd.java:120)
> at com.ibm.db2.jcc.am.lb.u(lb.java:1202)
> at com.ibm.db2.jcc.am.lb.x(lb.java:1225)
> at com.ibm.db2.jcc.am.lb.v(lb.java:1211)
> at com.ibm.db2.jcc.am.lb.close(lb.java:1195)
> at com.ibm.db2.jcc.uw.UWConnection.close(UWConnection.java:838)
> at
> org.apache.solr.handler.dataimport.JdbcDataSource.closeConnection(JdbcDataSource.java:399)
> at
> org.apache.solr.handler.dataimport.JdbcDataSource.close(JdbcDataSource.java:390)
> at
> org.apache.solr.handler.dataimport.DataConfig$Entity.clearCache(DataConfig.java:173)
> at
> org.apache.solr.handler.dataimport.DataConfig.clearCaches(DataConfig.java:331)
> at
> org.apache.solr.handler.dataimport.DataImporter.doFullImport(DataImporter.java:339)
> at
> org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:389)
> at
> org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:370)
> Well the issue can be solved by invoking a commit or rollback directly before
> the connection.close() statement. Here is the code snipped of changes I made
> in JdbcDatasource.java
> private void closeConnection() {
> try {
> if (conn != null) {
> if (conn.isReadOnly())
> {
> LOG.info("connection is readonly, therefore rollback");
> conn.rollback();
> } else
> {
> LOG.info("connection is not readonly, therefore
> commit");
> conn.commit();
> }
>
> conn.close();
> }
> } catch (Exception e) {
> LOG.error("Ignoring Error when closing connection", e);
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]