codehaus


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How *-conductor (database accessor) assure concurrency?


Hi, guys.

Today, I encountered strange behaviors and it raise me a simple question
which I never concerned about.

It's about 'how database accessors like *-conductor assure DB data
consistency?'

What I've seen is ModelsNotFound in Trove which meaning there is no
sqlalchemy query result for the Trove DB model. I'm not sure what's
happening before, but what I found is DB entry is actually existed but
trove-conductor could not find it emitting exception continuously. At the
same time, different trove-conductor would be working normally after
restart.

First, I thought that sqlalchemy ensures concurrency but after reading
related document (
https://docs.sqlalchemy.org/en/latest/orm/session_basics.html#is-the-session-thread-safe),
it does not guarantee at all, and user should take all responsibility to
manage session.

After, I thought oslo.concurrency is promising to ensure consistency by
making lock inter process in that the name tells me. But I could not find
any related code for locking.

So.. What happens internally for *-manage? Any hints would be appreciated.

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20190213/c12be83d/attachment.html>