yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #21192
[Bug 1102886] Re: nova API returns 404 for floating-ip-list if an instance has disappeared
Honestly, I'm pretty sure we managed to kill this bug. Please reopen if
you see it still crop up.
** Changed in: nova
Status: Triaged => Invalid
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1102886
Title:
nova API returns 404 for floating-ip-list if an instance has
disappeared
Status in OpenStack Compute (Nova):
Invalid
Bug description:
I'm not exactly sure how to reproduce the problem.
In my case, one (out of two) compute nodes crashed, leaving a few instances listed which needed replacing.
First the old instances was deleted, but it's still hanging around in the list since that compute node was crashed.
Then released the floating ip via the horizon interface, and assigned it via nova client.
While deleting and re-assigning floating ip's to new instances,
something got set wrong. Which now result in floating ip's being
broken for that tenant.
```
nova --os-tenant-name API floating-ip-list
ERROR: The resource could not be found. (HTTP 404) (Request-ID: req-9c6165ab-6312-4b98-8cf7-9ebc5d067e7c)
```
The log from nova-api shows:
```
2013-01-22 10:20:21 ERROR nova.api.openstack [req-9c6165ab-6312-4b98-8cf7-9ebc5d067e7c 4629023da94042e5ab9b1fab79ddc2ce ab3f2999ea354cb2a1b8cd7d3066abf0] Caught error: Instance 10502b84-3d5d-459a-ab97-de762ac48a49 could not be found.
2013-01-22 10:20:21 TRACE nova.api.openstack Traceback (most recent call last):
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/__init__.py", line 78, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack return req.get_response(self.application)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1086, in get_response
2013-01-22 10:20:21 TRACE nova.api.openstack application, catch_exc_info=False)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1055, in call_application
2013-01-22 10:20:21 TRACE nova.api.openstack app_iter = application(self.environ, start_response)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack return resp(environ, start_response)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/keystone/middleware/auth_token.py", line 278, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack return self.app(env, start_response)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack return resp(environ, start_response)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack return resp(environ, start_response)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack return resp(environ, start_response)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/routes/middleware.py", line 131, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack response = self.app(environ, start_response)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 159, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack return resp(environ, start_response)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 147, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack resp = self.call_func(req, *args, **self.kwargs)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 210, in call_func
2013-01-22 10:20:21 TRACE nova.api.openstack return self.func(req, *args, **kwargs)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 885, in __call__
2013-01-22 10:20:21 TRACE nova.api.openstack content_type, body, accept)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 933, in _process_stack
2013-01-22 10:20:21 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 1021, in dispatch
2013-01-22 10:20:21 TRACE nova.api.openstack return method(req=request, **action_args)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/floating_ips.py", line 158, in index
2013-01-22 10:20:21 TRACE nova.api.openstack self._set_metadata(context, floating_ip)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/floating_ips.py", line 130, in _set_metadata
2013-01-22 10:20:21 TRACE nova.api.openstack instance_uuid)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/floating_ips.py", line 118, in _get_instance
2013-01-22 10:20:21 TRACE nova.api.openstack return self.compute_api.get(context, instance_id)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/compute/api.py", line 1018, in get
2013-01-22 10:20:21 TRACE nova.api.openstack instance = self.db.instance_get_by_uuid(context, instance_id)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/db/api.py", line 576, in instance_get_by_uuid
2013-01-22 10:20:21 TRACE nova.api.openstack return IMPL.instance_get_by_uuid(context, uuid)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/db/sqlalchemy/api.py", line 129, in wrapper
2013-01-22 10:20:21 TRACE nova.api.openstack return f(*args, **kwargs)
2013-01-22 10:20:21 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/db/sqlalchemy/api.py", line 1501, in instance_get_by_uuid
2013-01-22 10:20:21 TRACE nova.api.openstack raise exception.InstanceNotFound(instance_id=uuid)
2013-01-22 10:20:21 TRACE nova.api.openstack InstanceNotFound: Instance 10502b84-3d5d-459a-ab97-de762ac48a49 could not be found.
2013-01-22 10:20:21 TRACE nova.api.openstack
2013-01-22 10:20:21 INFO nova.api.openstack [req-9c6165ab-6312-4b98-8cf7-9ebc5d067e7c 4629023da94042e5ab9b1fab79ddc2ce ab3f2999ea354cb2a1b8cd7d3066abf0] http://10.0.1.203:8774/v2/ab3f2999ea354cb2a1b8cd7d3066abf0/os-floating-ips returned with HTTP 404
2013-01-22 10:20:21 INFO nova.osapi_compute.wsgi.server [req-9c6165ab-6312-4b98-8cf7-9ebc5d067e7c 4629023da94042e5ab9b1fab79ddc2ce ab3f2999ea354cb2a1b8cd7d3066abf0] 10.0.1.50 - - [22/Jan/2013 10:20:21] "GET /v2/ab3f2999ea354cb2a1b8cd7d3066abf0/os-floating-ips HTTP/1.1" 404 272 0.534521
```
Maybe floating ip's assigned to non-existing instances can be reclaimed somehow without poking in the database?
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1102886/+subscriptions