[ZODB-Dev] RelStorage MySQL - StorageError: Unable to acquire commit lock
Rudá Porto Filgueiras
rudazz at gmail.com
Wed Aug 12 16:23:19 EDT 2009
I begin to use RelStorage in a production site with Plone 2.5.
Everything was running without failures since 01 august 2009.
But today after a failure in tpc_abort, all instances conneceted to
MySQL can't acquire commit lock.
Follow tpc_abort traceback:
2009-08-12T14:12:08 ERROR txn.1115806016 Error in tpc_abort() on
manager <MultiObjectResourceAdapter for <ZODB.DB.TransactionalUndo
object at 0x210f6790> at 654293328>
Traceback (most recent call last):
File "/usr/local/zope/agecom-virtual/eggs/ZODB3-3.7.3_polling-py2.4-linux-x86_64.egg/transaction/_transaction.py",
line 533, in _cleanup
rm.tpc_abort(self)
File "/usr/local/zope/agecom-virtual/eggs/ZODB3-3.7.3_polling-py2.4-linux-x86_64.egg/transaction/_transaction.py",
line 628, in tpc_abort
self.manager.tpc_abort(txn)
File "/usr/local/zope/agecom-virtual/eggs/ZODB3-3.7.3_polling-py2.4-linux-x86_64.egg/ZODB/BaseStorage.py",
line 194, in tpc_abort
self._abort()
File "/usr/local/zope/agecom-virtual/eggs/RelStorage-1.2.0b2-py2.4.egg/relstorage/relstorage.py",
line 710, in _abort
self._rollback_load_connection()
File "/usr/local/zope/agecom-virtual/eggs/RelStorage-1.2.0b2-py2.4.egg/relstorage/relstorage.py",
line 166, in _rollback_load_connection
self._load_conn.rollback()
OperationalError: (2006, 'MySQL server has gone away')
And after, all instances report this exeption:
2009-08-12T14:21:53 ERROR Zope.SiteErrorLog
http://adm.agecom.ba.gov.br/login_form
Traceback (innermost last):
Module ZPublisher.Publish, line 121, in publish
Module Zope2.App.startup, line 240, in commit
Module transaction._manager, line 96, in commit
Module transaction._transaction, line 395, in commit
Module transaction._transaction, line 498, in _commitResources
Module ZODB.Connection, line 730, in tpc_vote
Module relstorage.relstorage, line 675, in tpc_vote
Module relstorage.relstorage, line 659, in _vote
Module relstorage.relstorage, line 566, in _prepare_tid
Module relstorage.adapters.mysql, line 506, in start_commit
Module relstorage.adapters.mysql, line 672, in _hold_commit_lock
StorageError: Unable to acquire commit lock
I solve the problem restarting all instances, and the site became
operational again, but I have some questions:
This can be a bug or there is any problem in my enviroment/application?
There is another solution to release commit lock without restart all instances?
Cheers,
--
Rudá Porto Filgueiras
http://python-blog.blogspot.com
More information about the ZODB-Dev
mailing list