Is 'self.context' used to handle other requests as well? I would suggest generating a new context (neutron.context.get_admin_context()) for each fixed interval looping call to ensure you aren't sharing a DB session with another thread.
On Mon, Jan 11, 2016 at 2:26 AM, Koteswar <[email protected]> wrote: > vendor specific mech driver code, where I am doing some read/write to sql. > > def _create_port(self, port): switchports = port['port']['switchports'] > LOG.debug(_LE("_create_port switch: %s"), port) network_id = port['port'][ > 'network_id'] subnets = db.get_subnets_by_network(self.context, > network_id) if not subnets: LOG.error("Subnet not found for the network") > self._raise_ml2_error(wexc.HTTPNotFound, 'create_port') for switchport in > switchports: switch_mac_id = switchport['switch_id'] port_id = switchport[ > 'port_id'] bnp_switch = db.get_bnp_phys_switch_by_mac(self.context, > switch_mac_id) # check for port and switch level existence if not > bnp_switch: LOG.error(_LE("No physical switch found '%s' "), > switch_mac_id) self._raise_ml2_error(wexc.HTTPNotFound, 'create_port') > phys_port = db.get_bnp_phys_port(self.context, bnp_switch.id, port_id) if > not phys_port: LOG.error(_LE("No physical port found for '%s' "), > phys_port) self._raise_ml2_error(wexc.HTTPNotFound, 'create_port') if > bnp_switch.status != constants.SWITCH_STATUS['enable']: > LOG.error(_LE("Physical > switch is not Enabled '%s' "), bnp_switch.status) > self._raise_ml2_error(wexc.HTTPBadRequest, > 'create_port') > > On Mon, Jan 11, 2016 at 2:47 PM, Anna Kamyshnikova < > [email protected]> wrote: > >> Hi! >> >> Can you point what mechanism driver is this or the piece of code that >> give this error? >> >> On Mon, Jan 11, 2016 at 11:58 AM, Koteswar <[email protected]> wrote: >> >>> Hi All, >>> >>> >>> >>> In my mechanism driver, I am reading/writing into sql db in a fixed >>> interval looping call. Sometimes I get the following error when I stop and >>> start neutron server >>> >>> InvalidRequestError: This session is in 'prepared' state; no further SQL >>> can be emitted within this transaction. >>> >>> >>> >>> I am using context.session.query() for add, delete, update and get. >>> Please help me if any one resolved an issue like this. >>> >>> >>> >>> Full trace is as follows: >>> >>> 2016-01-06 15:33:21.799 [01;31mERROR neutron.plugins.ml2.managers >>> [[01;36mreq-d940a1b6-253a-43d2-b5ff-6c784c8a520f [00;36madmin >>> 83b5358da62a407f88155f447966356f[01;31m] [01;35m[01;31mMechanism driver >>> 'hp' failed in create_port_precommit[00m >>> >>> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers >>> [01;35m[00mTraceback (most recent call last): >>> >>> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers >>> [01;35m[00m File "/opt/stack/neutron/neutron/plugins/ml2/managers.py", >>> line 394, in _call_on_drivers >>> >>> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers >>> [01;35m[00m getattr(driver.obj, method_name)(context) >>> >>> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers >>> [01;35m[00m File >>> "/usr/local/lib/python2.7/dist-packages/baremetal_network_provisioning/ml2/mechanism_hp.py", >>> line 67, in create_port_precommit >>> >>> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers >>> [01;35m[00m raise e >>> >>> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers >>> [01;35m[00mInvalidRequestError: This session is in 'prepared' state; no >>> further SQL can be emitted within this transaction. >>> >>> [01;31m2016-01-06 15:33:21.799 TRACE neutron.plugins.ml2.managers >>> [01;35m[00m >>> >>> 2016-01-06 15:33:21.901 [01;31mERROR neutron.api.v2.resource >>> [[01;36mreq-d940a1b6-253a-43d2-b5ff-6c784c8a520f [00;36madmin >>> 83b5358da62a407f88155f447966356f[01;31m] [01;35m[01;31mcreate failed[00m >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00mTraceback (most recent call last): >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/opt/stack/neutron/neutron/api/v2/resource.py", line 83, >>> in resource >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m result = method(request=request, **args) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", >>> line 146, in wrapper >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m ectxt.value = e.inner_exc >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File >>> "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 195, >>> in __exit__ >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m six.reraise(self.type_, self.value, self.tb) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", >>> line 136, in wrapper >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m return f(*args, **kwargs) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/opt/stack/neutron/neutron/api/v2/base.py", line 516, in >>> create >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m obj = do_create(body) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/opt/stack/neutron/neutron/api/v2/base.py", line 498, in >>> do_create >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m request.context, reservation.reservation_id) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File >>> "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 195, >>> in __exit__ >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m six.reraise(self.type_, self.value, self.tb) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/opt/stack/neutron/neutron/api/v2/base.py", line 491, in >>> do_create >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m return obj_creator(request.context, **kwargs) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", >>> line 146, in wrapper >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m ectxt.value = e.inner_exc >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File >>> "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 195, >>> in __exit__ >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m six.reraise(self.type_, self.value, self.tb) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/usr/local/lib/python2.7/dist-packages/oslo_db/api.py", >>> line 136, in wrapper >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m return f(*args, **kwargs) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py", line >>> 1040, in create_port >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m result, mech_context = self._create_port_db(context, port) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/opt/stack/neutron/neutron/plugins/ml2/plugin.py", line >>> 1032, in _create_port_db >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m self.mechanism_manager.create_port_precommit(mech_context) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/opt/stack/neutron/neutron/plugins/ml2/managers.py", >>> line 590, in create_port_precommit >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m self._call_on_drivers("create_port_precommit", context) >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m File "/opt/stack/neutron/neutron/plugins/ml2/managers.py", >>> line 405, in _call_on_drivers >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00m method=method_name >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource >>> [01;35m[00mMechanismDriverError: create_port_precommit failed. >>> >>> [01;31m2016-01-06 15:33:21.901 TRACE neutron.api.v2.resource [01;35m[00m >>> >>> >>> >>> Regards, >>> >>> Koteswar >>> >>> >>> __________________________________________________________________________ >>> OpenStack Development Mailing List (not for usage questions) >>> Unsubscribe: >>> [email protected]?subject:unsubscribe >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> >> >> >> -- >> Regards, >> Ann Kamyshnikova >> Mirantis, Inc >> >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: >> [email protected]?subject:unsubscribe >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: [email protected]?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > > -- Kevin Benton
__________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: [email protected]?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
