Use of revision_number for router update on 2023.2 Bobcat cause error 500

Bug #2101871 reported by Martin André
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
New
Medium
Unassigned

Bug Description

As seen in https://github.com/gophercloud/gophercloud/pull/3319, trying to use an old `revision_number` when updating a router causes neutron to return a 500 error in Bobcat. Later versions seem to not exhibit the problem.

Here's the stack trace:

Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR root [None req-bc13ad66-b8f8-425e-a207-99055c506852 None admin] Original exception being dropped: ['Traceback (most recent call last):\n', ' File "/opt/stack/neutron/neutron/services/ovn_l3/plugin.py", line 199, in update_router\n self._ovn_client.update_router(context, result,\n', ' File "/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py", line 1509, in update_router\n with excutils.save_and_reraise_exception():\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__\n self.force_reraise()\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise\n raise self.value\n', ' File "/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py", line 1497, in update_router\n db_rev.bump_revision(context, new_router,\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 223, in wrapped\n return f_with_retry(*args, **kwargs,\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 137, in wrapped\n with excutils.save_and_reraise_exception():\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__\n self.force_reraise()\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise\n raise self.value\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 135, in wrapped\n return f(*args, **kwargs)\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_db/api.py", line 144, in wrapper\n with excutils.save_and_reraise_exception() as ectxt:\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__\n self.force_reraise()\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise\n raise self.value\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_db/api.py", line 142, in wrapper\n return f(*args, **kwargs)\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 183, in wrapped\n with excutils.save_and_reraise_exception():\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__\n self.force_reraise()\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise\n raise self.value\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 181, in wrapped\n return f(*dup_args, **dup_kwargs)\n', ' File "/opt/stack/neutron/neutron/db/ovn_revision_numbers_db.py", line 206, in bump_revision\n context.session.merge(row)\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2987, in merge\n self._autoflush()\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2246, in _autoflush\n self.flush()\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3386, in flush\n self._flush(objects)\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3415, in _flush\n self.dispatch.before_flush(self, flush_context, objects)\n', ' File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/event/attr.py", line 247, in __call__\n fn(*args, **kw)\n', ' File "/opt/stack/neutron/neutron/services/revisions/revision_plugin.py", line 79, in bump_revisions\n self._enforce_if_match_constraints(session)\n', ' File "/opt/stack/neutron/neutron/services/revisions/revision_plugin.py", line 322, in _enforce_if_match_constraints\n raise RevisionNumberConstraintFailed(match,\n', 'neutron.services.revisions.revision_plugin.RevisionNumberConstraintFailed: Constrained to 1, but current revision is 3\n']: sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Router at 0x7f61a4742920> is not bound to a Session; lazy load operation of attribute 'gw_port' cannot proceed (Background on this error at: https://sqlalche.me/e/14/bhk3)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource [None req-bc13ad66-b8f8-425e-a207-99055c506852 None admin] update failed: No details.: sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Router at 0x7f61a4742920> is not bound to a Session; lazy load operation of attribute 'gw_port' cannot proceed (Background on this error at: https://sqlalche.me/e/14/bhk3)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource Traceback (most recent call last):
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/services/ovn_l3/plugin.py", line 199, in update_router
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self._ovn_client.update_router(context, result,
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py", line 1509, in update_router
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception():
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py", line 1497, in update_router
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource db_rev.bump_revision(context, new_router,
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 223, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f_with_retry(*args, **kwargs,
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 137, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception():
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 135, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*args, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_db/api.py", line 144, in wrapper
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception() as ectxt:
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_db/api.py", line 142, in wrapper
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*args, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 183, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception():
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 181, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*dup_args, **dup_kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/ovn_revision_numbers_db.py", line 206, in bump_revision
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource context.session.merge(row)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2987, in merge
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self._autoflush()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 2246, in _autoflush
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.flush()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3386, in flush
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self._flush(objects)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 3415, in _flush
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.dispatch.before_flush(self, flush_context, objects)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/event/attr.py", line 247, in __call__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource fn(*args, **kw)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/services/revisions/revision_plugin.py", line 79, in bump_revisions
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self._enforce_if_match_constraints(session)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/services/revisions/revision_plugin.py", line 322, in _enforce_if_match_constraints
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise RevisionNumberConstraintFailed(match,
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource neutron.services.revisions.revision_plugin.RevisionNumberConstraintFailed: Constrained to 1, but current revision is 3
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource During handling of the above exception, another exception occurred:
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource Traceback (most recent call last):
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/resource.py", line 98, in resource
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource result = method(request=request, **args)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/base.py", line 623, in update
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return self._update(request, id, body, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 137, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception():
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 135, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*args, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_db/api.py", line 144, in wrapper
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception() as ectxt:
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_db/api.py", line 142, in wrapper
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*args, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 183, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception():
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 181, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*dup_args, **dup_kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/api/v2/base.py", line 686, in _update
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource obj = obj_updater(request.context, id, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/services/ovn_l3/plugin.py", line 205, in update_router
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource super(OVNL3RouterPlugin, self).update_router(context, id,
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/extraroute_db.py", line 71, in update_router
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return super(ExtraRoute_dbonly_mixin, self).update_router(
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/l3_db.py", line 2236, in update_router
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource router_dict = super(L3_NAT_db_mixin, self).update_router(context,
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 223, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f_with_retry(*args, **kwargs,
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 137, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception():
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 135, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*args, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_db/api.py", line 144, in wrapper
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception() as ectxt:
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_db/api.py", line 142, in wrapper
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*args, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 183, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource with excutils.save_and_reraise_exception():
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 227, in __exit__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource self.force_reraise()
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/excutils.py", line 200, in force_reraise
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise self.value
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/api.py", line 181, in wrapped
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return f(*dup_args, **dup_kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/l3_db.py", line 352, in update_router
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource updated = self._make_router_dict(router_db)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/l3_db.py", line 248, in _make_router_dict
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource resource_extend.apply_funcs(l3_apidef.ROUTERS, res, router)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/oslo_utils/timeutils.py", line 331, in wrapper
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource result = func(*args, **kwargs)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/neutron_lib/db/resource_extend.py", line 91, in apply_funcs
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource resolved_func(response, db_object)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/db/l3_gateway_ip_qos.py", line 42, in _extend_router_dict_gw_qos
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource if router_db.gw_port and (
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/attributes.py", line 482, in __get__
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return self.impl.get(state, dict_)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/attributes.py", line 942, in get
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource value = self._fire_loader_callables(state, key, passive)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/attributes.py", line 978, in _fire_loader_callables
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource return self.callable_(state, passive)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/data/venv/lib/python3.10/site-packages/sqlalchemy/orm/strategies.py", line 863, in _load_for_state
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise orm_exc.DetachedInstanceError(
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Router at 0x7f61a4742920> is not bound to a Session; lazy load operation of attribute 'gw_port' cannot proceed (Background on this error at: https://sqlalche.me/e/14/bhk3)
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: INFO neutron.wsgi [None req-bc13ad66-b8f8-425e-a207-99055c506852 None admin] 10.1.0.45 "PUT /networking/v2.0/routers/6d8b807f-7013-47d6-96a8-3a121e1117b6 HTTP/1.1" status: 500 len: 344 time: 0.6007731

Revision history for this message
Brian Haley (brian-haley) wrote :

So are you sending a revision_number in the API request? I don't actually see it as a supported option, figured it would just be ignored.

https://docs.openstack.org/api-ref/network/v2/index.html#routers-routers

Revision history for this message
Martin André (mandre) wrote :

I'm sending the revision_number in the If-Match header, as documented at https://docs.openstack.org/api-ref/network/v2/index.html#revisions.

You can see from the stack trace it's working as expected and rightfully raises the RevisionNumberConstraintFailed exception, until we raise a new exception while handling it:

Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource File "/opt/stack/neutron/neutron/services/revisions/revision_plugin.py", line 322, in _enforce_if_match_constraints
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource raise RevisionNumberConstraintFailed(match,
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource neutron.services.revisions.revision_plugin.RevisionNumberConstraintFailed: Constrained to 1, but current revision is 3
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource During handling of the above exception, another exception occurred:
[snip]
Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Router at 0x7f61a4742920> is not bound to a Session; lazy load operation of attribute 'gw_port' cannot proceed (Background on this error at: https://sqlalche.me/e/14/bhk3)

From the different resources I've tested this revision-if-match extension with (network, port, subnet, subnet pool, floating ip, security group and group rules, qos policy, and trunk) only router fails. And it also appear fixed from Caracal, so I'm thinking we're probably missing a backport.

Revision history for this message
Rodolfo Alonso (rodolfo-alonso-hernandez) wrote :

Hello Martin:

Can you post the API call you are doing?

The parent bug https://github.com/gophercloud/gophercloud/pull/331 seems to be closed. Is this bug still relevant?

Regards.

Revision history for this message
Miguel Lavalle (minsel) wrote :

So your test code is sending a superseded revision number expecting to get '412 Precondition failed' per the API doc and it gets the 500 instead, right? It doesn't seem to me that the problem is in the revisions plugin, since it seems to be doing what it is supposed to do in this case and in your tests with other resources. The problem seems to be with routers and their gateway.

Revision history for this message
Martin André (mandre) wrote :

@Rodolfo https://github.com/gophercloud/gophercloud/pull/3319 superseded by https://github.com/gophercloud/gophercloud/pull/3328 where I skip the test in bobcat due to this bug.

@Miguel Correct, from the look of it, the revision plugin seems to work as expected, and we're hitting a different exception on the way back.

Mar 06 18:32:36 fv-az568-887 neutron-server[61978]: ERROR neutron.api.v2.resource sqlalchemy.orm.exc.DetachedInstanceError: Parent instance <Router at 0x7f61a4742920> is not bound to a Session; lazy load operation of attribute 'gw_port' cannot proceed (Background on this error at: https://sqlalche.me/e/14/bhk3)

Revision history for this message
Rodolfo Alonso (rodolfo-alonso-hernandez) wrote :

Hello Martin:

Can you post the API call you are doing? I was expecting a description of the call, including the parameters you are passing. In other words, a reproducer. Is it possible to have a curl command to reproduce this issue locally?

Regards.

Revision history for this message
Miguel Lavalle (minsel) wrote :

For easy reproduction of the bug, besides the curl command, it might be useful to describe how you created the router that you are attempting to delete.

Miguel Lavalle (minsel)
Changed in neutron:
importance: Undecided → Medium
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.