manifoldcf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Karl Wright (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CONNECTORS-571) MySQL operations time out when long transaction undertaken and need to be restarted
Date Wed, 28 Nov 2012 08:19:00 GMT
Karl Wright created CONNECTORS-571:
--------------------------------------

             Summary: MySQL operations time out when long transaction undertaken and need
to be restarted
                 Key: CONNECTORS-571
                 URL: https://issues.apache.org/jira/browse/CONNECTORS-571
             Project: ManifoldCF
          Issue Type: Bug
          Components: Framework core
    Affects Versions: ManifoldCF 1.0.1, ManifoldCF 1.0
            Reporter: Karl Wright
             Fix For: ManifoldCF 1.1


If a transaction takes too long, MySQL handles this by aborting other threads that are trying
to get locks on the resources being held.  When it does this ManifoldCF does not handle the
situation properly, and does not retry the aborted threads.

The SQLException that is thrown is:

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

The context that this happens in is varied:

{code}
2012/11/22 23:39:28 ERROR (Job start thread) - Job start thread aborting and restarting due
to database connection reset: Database exception: Exception doing query: Lock wait timeout
exceeded; try restarting transaction
org.apache.manifoldcf.core.interfaces.ManifoldCFException: Database exception: Exception doing
query: Lock wait timeout exceeded; try restarting transaction
        at org.apache.manifoldcf.core.database.Database.executeViaThread(Database.java:681)
        at org.apache.manifoldcf.core.database.Database.executeUncachedQuery(Database.java:709)
        at org.apache.manifoldcf.core.database.Database$QueryCacheExecutor.create(Database.java:1394)
        at org.apache.manifoldcf.core.cachemanager.CacheManager.findObjectsAndExecute(CacheManager.java:144)
        at org.apache.manifoldcf.core.database.Database.executeQuery(Database.java:186)
        at org.apache.manifoldcf.core.database.DBInterfaceMySQL.performQuery(DBInterfaceMySQL.java:852)
        at org.apache.manifoldcf.crawler.jobs.JobManager.startJobs(JobManager.java:4711)
        at org.apache.manifoldcf.crawler.system.JobStartThread.run(JobStartThread.java:68)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:1578)
        at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1434)
        at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2925)
        at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:477)
        at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2631)
        at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1800)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2221)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293)
        at org.apache.manifoldcf.core.database.Database.execute(Database.java:826)
        at org.apache.manifoldcf.core.database.Database$ExecuteQueryThread.run(Database.java:641)
2012/11/22 23:39:28 ERROR (Finisher thread) - Finisher thread aborting and restarting due
to database connection reset: Database exception: Exception doing query: Lock wait timeout
exceeded; try restarting transaction
org.apache.manifoldcf.core.interfaces.ManifoldCFException: Database exception: Exception doing
query: Lock wait timeout exceeded; try restarting transaction
        at org.apache.manifoldcf.core.database.Database.executeViaThread(Database.java:681)
        at org.apache.manifoldcf.core.database.Database.executeUncachedQuery(Database.java:709)
        at org.apache.manifoldcf.core.database.Database$QueryCacheExecutor.create(Database.java:1394)
        at org.apache.manifoldcf.core.cachemanager.CacheManager.findObjectsAndExecute(CacheManager.java:144)
        at org.apache.manifoldcf.core.database.Database.executeQuery(Database.java:186)
        at org.apache.manifoldcf.core.database.DBInterfaceMySQL.performQuery(DBInterfaceMySQL.java:852)
        at org.apache.manifoldcf.crawler.jobs.JobManager.finishJobs(JobManager.java:6469)
        at org.apache.manifoldcf.crawler.system.FinisherThread.run(FinisherThread.java:64)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:1578)
        at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1434)
        at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2925)
        at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:477)
        at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2631)
        at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1800)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2221)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293)
        at org.apache.manifoldcf.core.database.Database.execute(Database.java:826)
        at org.apache.manifoldcf.core.database.Database$ExecuteQueryThread.run(Database.java:641)
2012/11/22 23:39:30 ERROR (Worker thread '253') - Worker thread aborting and restarting due
to database connection reset: Database exception: Exception doing query: Lock wait timeout
exceeded; try restarting transaction
org.apache.manifoldcf.core.interfaces.ManifoldCFException: Database exception: Exception doing
query: Lock wait timeout exceeded; try restarting transaction
        at org.apache.manifoldcf.core.database.Database.executeViaThread(Database.java:681)
        at org.apache.manifoldcf.core.database.Database.executeUncachedQuery(Database.java:709)
        at org.apache.manifoldcf.core.database.Database$QueryCacheExecutor.create(Database.java:1394)
        at org.apache.manifoldcf.core.cachemanager.CacheManager.findObjectsAndExecute(CacheManager.java:144)
        at org.apache.manifoldcf.core.database.Database.executeQuery(Database.java:186)
        at org.apache.manifoldcf.core.database.DBInterfaceMySQL.performModification(DBInterfaceMySQL.java:678)
        at org.apache.manifoldcf.core.database.DBInterfaceMySQL.performUpdate(DBInterfaceMySQL.java:275)
        at org.apache.manifoldcf.core.database.BaseTable.performUpdate(BaseTable.java:80)
        at org.apache.manifoldcf.crawler.jobs.JobQueue.updateCompletedRecord(JobQueue.java:722)
        at org.apache.manifoldcf.crawler.jobs.JobManager.markDocumentCompletedMultiple(JobManager.java:2435)
        at org.apache.manifoldcf.crawler.system.WorkerThread.run(WorkerThread.java:765)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
        at org.apache.manifoldcf.core.database.Database.execute(Database.java:840)
        at org.apache.manifoldcf.core.database.Database$ExecuteQueryThread.run(Database.java:641)
{code}

and

{code}
ERROR 2012-11-22 19:36:28,593 (Worker thread '16') - Worker thread aborting and restarting
due to database connection reset: Database exception: Exception doing query: Lock wait timeout
exceeded; try restarting transaction
org.apache.manifoldcf.core.interfaces.ManifoldCFException: Database exception: Exception doing
query: Lock wait timeout exceeded; try restarting transaction
        at org.apache.manifoldcf.core.database.Database.executeViaThread(Database.java:681)
        at org.apache.manifoldcf.core.database.Database.executeUncachedQuery(Database.java:709)
        at org.apache.manifoldcf.core.database.Database$QueryCacheExecutor.create(Database.java:1394)
        at org.apache.manifoldcf.core.cachemanager.CacheManager.findObjectsAndExecute(CacheManager.java:144)
        at org.apache.manifoldcf.core.database.Database.executeQuery(Database.java:186)
        at org.apache.manifoldcf.core.database.DBInterfaceMySQL.performModification(DBInterfaceMySQL.java:678)
        at org.apache.manifoldcf.core.database.DBInterfaceMySQL.performUpdate(DBInterfaceMySQL.java:275)
        at org.apache.manifoldcf.core.database.BaseTable.performUpdate(BaseTable.java:80)
        at org.apache.manifoldcf.crawler.jobs.HopCount.markForDelete(HopCount.java:1426)
        at org.apache.manifoldcf.crawler.jobs.HopCount.doDeleteInvalidation(HopCount.java:1356)
        at org.apache.manifoldcf.crawler.jobs.HopCount.doFinish(HopCount.java:1057)
        at org.apache.manifoldcf.crawler.jobs.HopCount.finishParents(HopCount.java:389)
        at org.apache.manifoldcf.crawler.jobs.JobManager.finishDocuments(JobManager.java:4309)
        at org.apache.manifoldcf.crawler.system.WorkerThread.run(WorkerThread.java:557)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
        at org.apache.manifoldcf.core.database.Database.execute(Database.java:840)
        at org.apache.manifoldcf.core.database.Database$ExecuteQueryThread.run(Database.java:641)
{code}


--
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

Mime
View raw message