When using relstorage + MySQL it creates seven tables to storage all objects, following:

mysql> show tables;

| current_object - ENGINE=InnoDB
| new_oid - ENGINE=MyISAM
| object_ref - ENGINE=MyISAM
| object_refs_added - ENGINE=MyISAM
| object_state - ENGINE=InnoDB
| pack_object - ENGINE=MyISAM
| pack_state - ENGINE=MyISAM
| pack_state_tid - ENGINE=MyISAM
| transaction - ENGINE=InnoDB


As you see there are tables using both InnoDB and other using MyISAM, thats default setup relstorage do


Regards,

- -
iarlyy selbir | ski0s

:wq!


On Wed, Feb 24, 2010 at 10:24 AM, Jonathan (dev101) <dev101@magma.ca> wrote:

Just a guess, but it looks like you are trying to get a transaction lock on a mysql table, so does the mysql table you are using have a storage engine that supports transactions (eg. InnoDB)?

 

Jonathan

 

From: zope-bounces@zope.org [mailto:zope-bounces@zope.org] On Behalf Of iarly selbir | ski0s
Sent: February-24-10 8:12 AM
To: zope@zope.org
Subject: [Zope] unable to acquire commit lock

 

few days ago my I'm getting this errors when trying logging on /manage, googling I don't found any reasonable solution and/or  information about, only thing was, "restarting zope instances works", thats true

 

 

Traceback:

 

2010-02-24T09:43:09 ERROR Zope.SiteErrorLog http://www.mywebsite.com/login_form

Traceback (innermost last):

  Module ZPublisher.Publish, line 125, in publish

  Module Zope2.App.startup, line 238, 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 726, in tpc_vote

  Module relstorage.relstorage, line 711, in tpc_vote

  Module relstorage.relstorage, line 686, in _vote

  Module relstorage.relstorage, line 593, 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 looked at the code and this function _hold_commit_lock has the following SELECT statement:

 

SELECT GET_LOCK(CONCAT(DATABASE(), '.commit'), %s)

 

I tried to reproduce it querying manually but  it looks like an unknown command, and other point, I don't know what Zope put in %s variable.

 

 

 

Does anybody already had this problem?

 

 

Thanks for any reply.

 


Regards,

- -
iarlyy selbir | ski0s

:wq!