Hrm. It's not piling on with the locking like I originally thought -
from the db's perspective there's not a whole hell of a lot going on,
actually - even two copies of this script run concurrently cause them to
totally get in to some app-level spinning that ends up with at least one
script erroring. I'll keep poking, mainly just because it's interesting
- but it's certainly not happy.

On 09/25/2011 01:53 PM, Vishvananda Ishaya wrote:
> Hey everyone,
> 
> I'm a bit concerned with the connection pooling in the db.  It seems that 
> things are not getting cleaned up properly.  I have a repro-case that causes 
> failures that we have seen before.  if I revert the 
> nova/db/sqlalchemy/session.py to before the eventlet db pool was added I get 
> no failures.  If you want to see the issue, try the attached code.  You will 
> need to run from the nova directory or do python setup.py develop.  You will 
> also need to create a mysql database called test and edit the sql_connection 
> string if you have a mysql password, etc.  Please check this code.  If we 
> can't come up with a fix, I htink we need to revert back to no connection 
> pooling.
> 
> Run the attached script at least 3 times The code below runs fine the first 
> couple of times, Then it starts to fail with the following error:
> 
> 2011-09-24 12:51:02,799 INFO sqlalchemy.engine.base.Engine.0x...36d0 [-] 
> ROLLBACK
> Traceback (most recent call last):
>  File "/Library/Python/2.7/site-packages/eventlet/hubs/hub.py", line 336, in 
> fire_timers
>    timer()
>  File "/Library/Python/2.7/site-packages/eventlet/hubs/timer.py", line 56, in 
> __call__
>    cb(*args, **kw)
>  File "/Library/Python/2.7/site-packages/eventlet/event.py", line 163, in 
> _do_send
>    waiter.switch(result)
>  File "/Library/Python/2.7/site-packages/eventlet/greenthread.py", line 192, 
> in main
>    result = function(*args, **kwargs)
>  File "dbrepro.py", line 44, in associate
>    ip = db.fixed_ip_associate_pool(ctxt, 1, instance_id=val)
>  File "/Users/vishvananda/os/nova/nova/db/api.py", line 352, in 
> fixed_ip_associate_pool
>    instance_id, host)
>  File "/Users/vishvananda/os/nova/nova/db/sqlalchemy/api.py", line 102, in 
> wrapper
>    return f(*args, **kwargs)
>  File "/Users/vishvananda/os/nova/nova/db/sqlalchemy/api.py", line 725, in 
> fixed_ip_associate_pool
>    filter_by(host=None).\
>  File "/Library/Python/2.7/site-packages/sqlalchemy/orm/query.py", line 1496, 
> in first
>    ret = list(self[0:1])
>  File "/Library/Python/2.7/site-packages/sqlalchemy/orm/query.py", line 1405, 
> in __getitem__
>    return list(res)
>  File "/Library/Python/2.7/site-packages/sqlalchemy/orm/query.py", line 1669, 
> in instances
>    fetch = cursor.fetchall()
>  File "/Library/Python/2.7/site-packages/sqlalchemy/engine/base.py", line 
> 2383, in fetchall
>    l = self.process_rows(self._fetchall_impl())
>  File "/Library/Python/2.7/site-packages/sqlalchemy/engine/base.py", line 
> 2366, in process_rows
>    keymap = metadata._keymap
> AttributeError: 'NoneType' object has no attribute '_keymap'
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to