Hi,

we observed deadlock-like problem on our multi-component system with mysql 
database.

Our setup:

1) MySQL server 5.5 with many MyISAM tables Foo_<timestamp>, one per day 
(like partitioning)

2) C++ backend daemon
  * issuing CREATE TABLE IF NOT EXISTS Foo_<timestamp> (...) once per day 
after midnight
  * filling those tables with INSERT INTO Foo_<timestamp> during intraday

3) pythonic multi-threaded backend daemon (we call it 'worker')
  * reads Foo_<timestamp> tables every minute via ScopedSession and mapped 
classes 'Foo'
  * fills memcache with statistics computed from Foo_* tables

4) pythonic/apache/mod_wsgi single-threaded, multi-process webserver
  * runs also on shared codebase 'foobar', so it uses also ScopedSession 
(same as 'worker')
  * codebase is same when runing in webserver-mode and when running in 
worker-mode (ScopedSession is always used).

We observed that during rollover to next day the C++ BE daemon is blocked 
on 'Waiting for table metadata lock: CREATE TABLE IF NOT EXISTS 
Foo_xxxxxxxxx (...)'

Webserver is also blocked. Kill the 'worker' helps, all blocked stuff 
continues. If anyone could know:

- why it blocks since we have MyISAM,which are transaction-less
- why the worker is the blockator, since it only executes SELECTs
- how to fix it?

Thanks

Pavel

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to