Reviewed: https://review.openstack.org/631046 Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=23ca23cc792011e69e89a3d08f54072500749d75 Submitter: Zuul Branch: master
commit 23ca23cc792011e69e89a3d08f54072500749d75 Author: Andrew Karpow <andrew.kar...@sap.com> Date: Tue Jan 15 18:22:53 2019 +0100 postgresql compatibility for get_l3_agent routines This commit fixes a bug caused by the sqlalchemy group_by statement in the get_l3_agent routines when using postgresql. All select statements need to be replicated in the group_by statement. Change-Id: Ib938be79408d78e0973fed10a68934397341c180 Closes-Bug: #1811873 ** Changed in: neutron Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1811873 Title: get_l3_agent_with_min_routers fails with postgresql backend Status in neutron: Fix Released Bug description: We have our own L3 agent that uses the generic neutron function get_l3_agent_with_min_routers, rendering following exception if using a postgresql backend: 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/neutron/db/l3_agentschedulers_db.py", line 469, in get_l3_agent_with_min_routers 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource context, agent_ids) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/neutron/objects/agent.py", line 102, in get_l3_agent_with_min_routers 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource res = query.filter(agent_model.Agent.id.in_(agent_ids)).first() 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2778, in first 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource ret = list(self[0:1]) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2570, in __getitem__ 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource return list(res) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2878, in __iter__ 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource return self._execute_and_instances(context) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2901, in _execute_and_instances 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource result = conn.execute(querycontext.statement, self._params) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 948, in execute 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource return meth(self, multiparams, params) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource return connection._execute_clauseelement(self, multiparams, params) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource compiled_sql, distilled_params 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource context) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1409, in _handle_dbapi_exception 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource util.raise_from_cause(newraise, exc_info) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource reraise(type(exception), exception, tb=exc_tb, cause=cause) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource context) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource File "/var/lib/openstack/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 507, in do_execute 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource cursor.execute(statement, parameters) 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource DBError: (psycopg2.ProgrammingError) column "agents.agent_type" must appear in the GROUP BY clause or be used in an aggregate function 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource LINE 1: SELECT agents.id AS agents_id, agents.agent_type AS agents_a... 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource ^ 2019-01-15 16:34:33,091.091 59 ERROR neutron.api.v2.resource [SQL: 'SELECT agents.id AS agents_id, agents.agent_type AS agents_agent_type, agents."binary" AS agents_binary, agents.topic AS agents_topic, agents.host AS agents_host, agents.availability_zone AS agents_availability_zone, agents.admin_state_up AS agents_admin_state_up, agents.created_at AS agents_created_at, agents.started_at AS agents_started_at, agents.heartbeat_timestamp AS agents_heartbeat_timestamp, agents.description AS agents_description, agents.configurations AS agents_configurations, agents.resource_versions AS agents_resource_versions, agents.load AS agents_load, count(routerl3agentbindings.router_id) AS count \nFROM agents LEFT OUTER JOIN routerl3agentbindings ON agents.id = routerl3agentbindings.l3_agent_id \nWHERE agents.id IN (%(id_1)s) GROUP BY agents.id, routerl3agentbindings.l3_agent_id ORDER BY count \n LIMIT %(param_1)s'] [parameters: {'id_1': u'fd1952bb-0f16-4e6e-bf57-7108729fac25', 'param_1': 1}] (Background on this error at: http://sqlalche.me/e/f405) postgresql needs all SELECT columns to be included in the group_by clause, I will shortly add an fix proposal To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1811873/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp