<div dir="ltr">The post_commit methods occur outside of the transactions. You should be able to perform the necessary database calls there.<div><br></div><div>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.</div>

<div><br></div><div>Cheers,</div><div>Kevin Benton</div><div><br></div><div>--</div><div>Kevin Benton</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jun 24, 2014 at 8:33 PM, Li Ma <span dir="ltr"><<a href="mailto:skywalker.nick@gmail.com" target="_blank">skywalker.nick@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
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.<br>


<br>
The related code is as follows:<br>
<br>
def create_port(self, context, port):<br>
    ...<br>
    session = context.session<br>
    with session.begin(subtransactions=True):<br>
        ...<br>
        self.mechanism_manager.create_port_precommit(mech_context)<br>
    try:<br>
        self.mechanism_manager.create_port_postcommit(mech_context)<br>
        ...<br>
    ...<br>
    return result<br>
<br>
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.<br>


<br>
Thanks,<br>
Li Ma<br>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Kevin Benton</div>
</div>