<div dir="ltr"><div>I tried rollback but still it didn't work. This issue is reproduced sometimes only when </div><div>1. neutron port created</div><div>2. enable fixed looping in conf, stop neutron and start</div><div>3. delete neutron port</div><div><br></div><div>and looping interval is very lesss say 20 secs. </div><div>source code where it fails:</div><div>--------------------------------------</div><div><div>def get_bnp_neutron_port(context, neutron_port_id):</div><div>    """Get bnp neutron port that matches neutron_port_id."""</div><div>    try:</div><div>        query = context.session.query(models.BNPNeutronPort)</div><div>        port_map = query.filter_by(neutron_port_id=neutron_port_id).one()</div><div>    except exc.NoResultFound:</div><div>        LOG.error(_LE('no port map found with id: %s'), port_map)</div><div>        return</div><div>    except Exception as e:</div><div>        LOG.error("BNP Exception: %s", e)</div><div>        context.session.rollback()</div><div>        return</div><div>    return port_map</div></div><div><br></div><div>trace:</div><div>-----------------------------</div><div>2016-01-12 07:00:54.421 ERROR baremetal_network_provisioning.db.bm_nw_provision_db [req-79c61136-2f15-40b6-a0c7-074848d87d6e admin 1395aaf0481f4bc9b8fbb8888e555fe1] BNP Exception: This se</div><div>ssion is in 'prepared' state; no further SQL can be emitted within this transaction.</div><div>2016-01-12 07:00:54.421 ERROR oslo_db.sqlalchemy.exc_filters [req-79c61136-2f15-40b6-a0c7-074848d87d6e admin 1395aaf0481f4bc9b8fbb8888e555fe1] DB exception wrapped.</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters Traceback (most recent call last):</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 668, in _rollback_impl</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters     self.engine.dialect.do_rollback(self.connection)</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/mysql/base.py", line 2519, in do_rollback</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters     dbapi_connection.rollback()</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 724, in rollback</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters     self._read_ok_packet()</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 698, in _read_ok_packet</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters     pkt = self._read_packet()</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 895, in _read_packet</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters     packet_header = self._read_bytes(4)</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters   File "/usr/local/lib/python2.7/dist-packages/pymysql/connections.py", line 912, in _read_bytes</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters     data = self._rfile.read(num_bytes)</div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters RuntimeError: reentrant call inside <_io.BufferedReader name=3></div><div>2016-01-12 07:00:54.421 TRACE oslo_db.sqlalchemy.exc_filters</div><div>2016-01-12 07:00:54.433 ERROR neutron.plugins.ml2.managers [req-79c61136-2f15-40b6-a0c7-074848d87d6e admin 1395aaf0481f4bc9b8fbb8888e555fe1] Mechanism driver 'hp' failed in delete_port_pr</div><div>ecommit</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 11, 2016 at 7:39 PM, Koteswar <span dir="ltr"><<a href="mailto:koti.kelam@gmail.com" target="_blank">koti.kelam@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">thanks a lot. I will try this.</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 11, 2016 at 7:26 PM, Mike Bayer <span dir="ltr"><<a href="mailto:mbayer@redhat.com" target="_blank">mbayer@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><br>
<br>
On 01/11/2016 03:58 AM, Koteswar wrote:<br>
> Hi All,<br>
><br>
><br>
><br>
> In my mechanism driver, I am reading/writing into sql db in a fixed<br>
> interval looping call. Sometimes I get the following error when I stop<br>
> and start neutron server<br>
><br>
> InvalidRequestError: This session is in 'prepared' state; no further SQL<br>
> can be emitted within this transaction.<br>
><br>
><br>
><br>
> I am using context.session.query() for add, delete, update and get.<br>
> Please help me if any one resolved an issue like this.<br>
<br>
</span>the stack trace is unfortunately re-thrown from the ml2.managers code<br>
without retaining the original traceback; use this form to reraise with<br>
original tb:<br>
<br>
    exc_info = sys.exc_info()<br>
    raise type(e), e, exc_info[2]<br>
<br>
There's likely helpers somewhere in oslo that do this.<br>
<br>
The cause of this error is that a transaction commit is failing, the<br>
error is being caught and this same Session is being used again without<br>
rollback called first.   The code below illustrates the problem and how<br>
to solve.<br>
<br>
from sqlalchemy import create_engine<br>
from sqlalchemy.orm import Session<br>
<br>
<br>
e = create_engine("sqlite://")<br>
<br>
s = Session(e)<br>
<br>
<br>
conn = s.connection()<br>
<br>
<br>
def boom():<br>
    raise Exception("sqlite commit failed")<br>
<br>
# "break" connection.commit(),<br>
# so that the commit fails<br>
conn.connection.commit = boom<br>
try:<br>
    # fail<br>
    s.commit()<br>
except Exception, e:<br>
    # uncomment this to fix the error<br>
    # s.rollback()<br>
    pass<br>
finally:<br>
    boom = False<br>
<br>
<br>
# prepared state error<br>
s.connection()<br>
<div><div><br>
><br>
><br>
><br>
> Full trace is as follows:<br>
><br>
> 2016-01-06 15:33:21.799 [01;31mERROR neutron.plugins.ml2.managers<br>
> [[01;36mreq-d940a1b6-253a-43d2-b5ff-6c784c8a520f [00;36madmin<br>
> 83b5358da62a407f88155f447966356f[01;31m] [01;35m[01;31mMechanism driver<br>
> 'hp' failed in create_port_precommit[00m<br>
><br>
> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers<br>
> [01;35m[00mTraceback (most recent call last):<br>
><br>
> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/plugins/ml2/managers.py",<br>
> line 394, in _call_on_drivers<br>
><br>
> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers<br>
> [01;35m[00m    getattr(driver.obj, method_name)(context)<br>
><br>
> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers<br>
> [01;35m[00m  File<br>
> "/usr/local/lib/python2.7/dist-packages/baremetal_network_provisioning/ml2/mechanism_hp.py",<br>
> line 67, in create_port_precommit<br>
><br>
> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers<br>
> [01;35m[00m    raise e<br>
><br>
> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers<br>
> [01;35m[00mInvalidRequestError: This session is in 'prepared' state; no<br>
> further SQL can be emitted within this transaction.<br>
><br>
> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers<br>
> [01;35m[00m<br>
><br>
> 2016-01-06 15:33:21.901 [01;31mERROR neutron.api.v2.resource<br>
> [[01;36mreq-d940a1b6-253a-43d2-b5ff-6c784c8a520f [00;36madmin<br>
> 83b5358da62a407f88155f447966356f[01;31m] [01;35m[01;31mcreate failed[00m<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00mTraceback (most recent call last):<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/api/v2/resource.py", line<br>
> 83, in resource<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    result = method(request=request, **args)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File<br>
> "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 146, in<br>
> wrapper<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    ectxt.value = e.inner_exc<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File<br>
> "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line<br>
> 195, in __exit__<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    six.reraise(self.type_, self.value, self.tb)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File<br>
> "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 136, in<br>
> wrapper<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    return f(*args, **kwargs)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/api/v2/base.py", line 516,<br>
> in create<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    obj = do_create(body)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/api/v2/base.py", line 498,<br>
> in do_create<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    request.context, reservation.reservation_id)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File<br>
> "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line<br>
> 195, in __exit__<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    six.reraise(self.type_, self.value, self.tb)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/api/v2/base.py", line 491,<br>
> in do_create<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    return obj_creator(request.context, **kwargs)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File<br>
> "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 146, in<br>
> wrapper<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    ectxt.value = e.inner_exc<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File<br>
> "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line<br>
> 195, in __exit__<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    six.reraise(self.type_, self.value, self.tb)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File<br>
> "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", line 136, in<br>
> wrapper<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    return f(*args, **kwargs)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py",<br>
> line 1040, in create_port<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    result, mech_context = self._create_port_db(context, port)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py",<br>
> line 1032, in _create_port_db<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    self.mechanism_manager.create_port_precommit(mech_context)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/plugins/ml2/managers.py",<br>
> line 590, in create_port_precommit<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    self._call_on_drivers("create_port_precommit", context)<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m  File "/opt/stack/neutron/neutron/plugins/ml2/managers.py",<br>
> line 405, in _call_on_drivers<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00m    method=method_name<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource<br>
> [01;35m[00mMechanismDriverError: create_port_precommit failed.<br>
><br>
> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource [01;35m[00m<br>
><br>
><br>
><br>
> Regards,<br>
><br>
> Koteswar<br>
><br>
><br>
><br>
</div></div><div><div>> __________________________________________________________________________<br>
> OpenStack Development Mailing List (not for usage questions)<br>
> Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
><br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>