[openstack-dev] [Neutron ML2] Potential DB lock when developing new mechanism driver

Kevin Benton blak111 at gmail.com
Wed Jun 25 08:59:26 UTC 2014


The post_commit methods occur outside of the transactions. You should be
able to perform the necessary database calls there.

If you look at the code snippet in the email you provided, you can see that
the 'try' block surrounding the postcommit method is at the same
indentation-level as the 'with' statement for the transaction so it will be
closed at that point.

Cheers,
Kevin Benton

--
Kevin Benton


On Tue, Jun 24, 2014 at 8:33 PM, Li Ma <skywalker.nick at gmail.com> wrote:

> Hi all,
>
> I'm developing a new mechanism driver. I'd like to access ml2-related
> tables in create_port_precommit and create_port_postcommit. However I find
> it hard to do that because the two functions are both inside an existed
> database transaction defined in create_port function of ml2/plugin.py.
>
> The related code is as follows:
>
> def create_port(self, context, port):
>     ...
>     session = context.session
>     with session.begin(subtransactions=True):
>         ...
>         self.mechanism_manager.create_port_precommit(mech_context)
>     try:
>         self.mechanism_manager.create_port_postcommit(mech_context)
>         ...
>     ...
>     return result
>
> As a result, I need to carefully deal with the database nested transaction
> issue to prevent from db lock when I develop my own mechanism driver. Right
> now, I'm trying to get the idea behind the scene. Is it possible to
> refactor it in order to make precommit and postcommit out of the db
> transaction? I think it is perfect for those who develop mechanism driver
> and do not know well about the functioning context of the whole ML2 plugin.
>
> Thanks,
> Li Ma
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



-- 
Kevin Benton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20140625/6c01eba5/attachment.html>


More information about the OpenStack-dev mailing list