Hi Yong<div><br></div><div>Yeah, I didn't know the work of <a href="https://blueprints.launchpad.net/nova/+spec/non-blocking-db" target="_blank" style="font-family:arial,sans-serif;font-size:13.63636302947998px">https://blueprints.launchpad.net/nova/+spec/non-blocking-db</a>, it looks hard to solve.</div>
<div>So we may solve the problem just apply the patch for quantum.</div><div><br></div><div>I filed this as a bug.</div><div> <a href="https://bugs.launchpad.net/quantum/+bug/1086173">https://bugs.launchpad.net/quantum/+bug/1086173</a></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">2012/12/3 gong yong sheng <span dir="ltr"><<a href="mailto:gongysh@linux.vnet.ibm.com" target="_blank">gongysh@linux.vnet.ibm.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div>It seems easy to fix it.<div><div class="h5"><br>
      On 12/04/2012 06:03 AM, Nachi Ueno wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div class="h5">Hi Quantum folks
      <div><br>
      </div>
      <div>This bp for nova looks like solve the quantum one also.</div>
      <div><a href="https://blueprints.launchpad.net/nova/+spec/non-blocking-db" target="_blank">https://blueprints.launchpad.net/nova/+spec/non-blocking-db</a><br>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">2012/12/3 Nachi Ueno <span dir="ltr"><<a href="mailto:nachi@nttmcl.com" target="_blank">nachi@nttmcl.com</a>></span><br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">Hi
              Quantum folks</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br>
            </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">
              I faced the problem with mysql transaction and eventlet.</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br>
            </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">Quantum
              using transaction support of sqlalchemy</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">Quantum
              also using eventlet for RPC</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br>
            </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">
              Let's say there are api request A and B.</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">Sql
              request of A will lock B's sql request. </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">
              so B's sql request will wait the A's transaction.</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br>
            </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">On
              the other hand, we are using evenetlet.</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">Since
              we are using mysql c client, the API request may block
              eventlet </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">
              thread.</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br>
            </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">so
              when B start wait sql lock, it blocks all eventlet thread
              including api request A until lock timeout.</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br>
            </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">I
              asked Jay about the this problem, and he said Nova solve
              this problem by this way.</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><a href="https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L2610" target="_blank">https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L2610</a></div>

            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br>
            </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">The
              strategy is to get lock just after the transaction started
              using. ( I'm not sure we can use same strategy in the
              quantum. )</div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br>
            </div>
            <div style="font-family:arial,sans-serif;font-size:13.63636302947998px">Anyway,
               It looks big change needed for me.</div>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
OpenStack-dev mailing list
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a>
<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>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div><br></div>