Empty floating_ips.address generates bad SQL under Postgres

Bug #1112536 reported by Davanum Srinivas (DIMS)
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Fix Released
Undecided
Davanum Srinivas (DIMS)

Bug Description

Please see the log here - http://logs.openstack.org/20965/1/check/gate-tempest-devstack-vm-postgres-full/157/logs/screen-n-net.txt.gz

2013-02-01 03:47:49.157 7504 DEBUG nova.openstack.common.rpc.amqp [-] unpacked context: {'read_deleted': u'no', 'project_name': u'FloatingIPsTestJSON306051-tenant', 'user_id': u'3cc28d294bba40b49756da5a7b294b39', 'roles': [u''], 'timestamp': u'2013-02-01T03:47:49.066279', 'auth_token': '<SANITIZED>', 'remote_address': u'127.0.0.1', 'quota_class': None, 'is_admin': False, 'user': u'3cc28d294bba40b49756da5a7b294b39', 'service_catalog': [{u'endpoints_links': [], u'endpoints': [{u'adminURL': u'http://127.0.0.1:8776/v1/8efb05ba455b489c854e2d50f2b6315d', u'region': u'RegionOne', u'publicURL': u'http://127.0.0.1:8776/v1/8efb05ba455b489c854e2d50f2b6315d', u'internalURL': u'http://127.0.0.1:8776/v1/8efb05ba455b489c854e2d50f2b6315d', u'id': u'8bbfc05407de4cc786a5176635f1feff'}], u'type': u'volume', u'name': u'cinder'}], 'request_id': u'req-6014fdd9-cf3f-4f8f-9200-d90897c63ed6', 'instance_lock_checked': False, 'project_id': u'8efb05ba455b489c854e2d50f2b6315d', 'user_name': u'FloatingIPsTestJSON306051-user', 'tenant': u'8efb05ba455b489c854e2d50f2b6315d'} _safe_log /opt/stack/new/nova/nova/openstack/common/rpc/common.py:249
2013-02-01 03:47:49.162 ERROR nova.openstack.common.rpc.amqp [req-6014fdd9-cf3f-4f8f-9200-d90897c63ed6 FloatingIPsTestJSON306051-user FloatingIPsTestJSON306051-tenant] Exception during message handling
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp Traceback (most recent call last):
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/openstack/common/rpc/amqp.py", line 276, in _process_data
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp rval = self.proxy.dispatch(ctxt, version, method, **args)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/openstack/common/rpc/dispatcher.py", line 133, in dispatch
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return getattr(proxyobj, method)(ctxt, **kwargs)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/openstack/common/rpc/common.py", line 397, in inner
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return catch_client_exception(exceptions, func, *args, **kwargs)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/openstack/common/rpc/common.py", line 380, in catch_client_exception
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return func(*args, **kwargs)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/network/manager.py", line 508, in associate_floating_ip
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp floating_address)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/db/api.py", line 346, in floating_ip_get_by_address
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return IMPL.floating_ip_get_by_address(context, address)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 134, in wrapper
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return f(*args, **kwargs)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 888, in floating_ip_get_by_address
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return _floating_ip_get_by_address(context, address)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 134, in wrapper
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return f(*args, **kwargs)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/opt/stack/new/nova/nova/db/sqlalchemy/api.py", line 894, in _floating_ip_get_by_address
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp filter_by(address=address).\
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2156, in first
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp ret = list(self[0:1])
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2023, in __getitem__
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return list(res)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2227, in __iter__
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp return self._execute_and_instances(context)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2242, in _execute_and_instances
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp result = conn.execute(querycontext.statement, self._params)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1449, in execute
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp params)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1584, in _execute_clauseelement
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp compiled_sql, distilled_params
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1698, in _execute_context
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp context)
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1850, in _handle_dbapi_exception
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp None, sys.exc_info()[2]
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp DataError: (DataError) invalid input syntax for type inet: ""
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp LINE 3: ...HERE floating_ips.deleted = 0 AND floating_ips.address = ''
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp ^
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp 'SELECT floating_ips.created_at AS floating_ips_created_at, floating_ips.updated_at AS floating_ips_updated_at, floating_ips.deleted_at AS floating_ips_deleted_at, floating_ips.deleted AS floating_ips_deleted, floating_ips.id AS floating_ips_id, floating_ips.address AS floating_ips_address, floating_ips.fixed_ip_id AS floating_ips_fixed_ip_id, floating_ips.project_id AS floating_ips_project_id, floating_ips.host AS floating_ips_host, floating_ips.auto_assigned AS floating_ips_auto_assigned, floating_ips.pool AS floating_ips_pool, floating_ips.interface AS floating_ips_interface \nFROM floating_ips \nWHERE floating_ips.deleted = %(deleted_1)s AND floating_ips.address = %(address_1)s \n LIMIT %(param_1)s' {'param_1': 1, 'address_1': u'', 'deleted_1': 0}
2013-02-01 03:47:49.162 7504 TRACE nova.openstack.common.rpc.amqp
2013-02-01 03:47:49.170 ERROR nova.openstack.common.rpc.common [req-6014fdd9-cf3f-4f8f-9200-d90897c63ed6 FloatingIPsTestJSON306051-user FloatingIPsTestJSON306051-tenant] Returning exception (DataError) invalid input syntax for type inet: ""
LINE 3: ...HERE floating_ips.deleted = 0 AND floating_ips.address = ''
                                                                    ^
 'SELECT floating_ips.created_at AS floating_ips_created_at, floating_ips.updated_at AS floating_ips_updated_at, floating_ips.deleted_at AS floating_ips_deleted_at, floating_ips.deleted AS floating_ips_deleted, floating_ips.id AS floating_ips_id, floating_ips.address AS floating_ips_address, floating_ips.fixed_ip_id AS floating_ips_fixed_ip_id, floating_ips.project_id AS floating_ips_project_id, floating_ips.host AS floating_ips_host, floating_ips.auto_assigned AS floating_ips_auto_assigned, floating_ips.pool AS floating_ips_pool, floating_ips.interface AS floating_ips_interface \nFROM floating_ips \nWHERE floating_ips.deleted = %(deleted_1)s AND floating_ips.address = %(address_1)s \n LIMIT %(param_1)s' {'param_1': 1, 'address_1': u'', 'deleted_1': 0} to caller

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to nova (master)

Fix proposed to branch: master
Review: https://review.openstack.org/21003

Changed in nova:
assignee: nobody → Davanum Srinivas (DIMS) (dims-v)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to nova (master)

Reviewed: https://review.openstack.org/21003
Committed: http://github.com/openstack/nova/commit/df4e4b6a49ebcb890f4ea0d1b1e91618586e67a5
Submitter: Jenkins
Branch: master

commit df4e4b6a49ebcb890f4ea0d1b1e91618586e67a5
Author: Davanum Srinivas <email address hidden>
Date: Fri Feb 1 10:07:06 2013 -0500

    Postgres does not like empty strings for type inet

    Check for empty string and explicitly set address to None

    Fixes LP# 1112536

    Change-Id: Ib6f1ca9ab4dd11a53e2ab8057664136166b4c616

Changed in nova:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in nova:
milestone: none → grizzly-3
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in nova:
milestone: grizzly-3 → 2013.1
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.