If db deadlock occurs for some reason while deleting an image, no one can delete the image any more
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Glance |
Fix Released
|
High
|
Ankit Agrawal | ||
Icehouse |
Fix Released
|
Undecided
|
Unassigned | ||
Juno |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Glance api returns 500 Internal Server Error, if db deadlock occurs in glance-registry for some reason while deleting an image.
The image 'status' is set to deleted and 'deleted' is set to False. As deleted is still False, the image is visible in image list but it can not be deleted any more.
If you try to delete this image it will raise 404 (Not Found) error for V1 api and 500 (HTTPInternalSe
Note:
To reproduce this issue I've explicitly raised "db_exception.
glance-api.log
--------------
2014-10-06 00:53:10.037 6827 INFO glance.
1bcc17d8c55c83997 - - -] Registry client request DELETE /images/
2014-10-06 00:53:10.045 6827 INFO glance.wsgi.server [2b47d213-
File "/usr/local/
result = self.applicatio
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/opt/stack/
response = req.get_
File "/usr/local/
application, catch_exc_
File "/usr/local/
app_iter = application(
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/usr/local/
return request.
File "/usr/local/
application, catch_exc_
File "/usr/local/
app_iter = application(
File "/usr/local/
return self._call_app(env, start_response)
File "/usr/local/
return self._app(env, _fake_start_
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/opt/stack/
response = req.get_
File "/usr/local/
application, catch_exc_
File "/usr/local/
app_iter = application(
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/opt/stack/
response = req.get_
File "/usr/local/
application, catch_exc_
File "/usr/local/
app_iter = application(
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/opt/stack/
response = req.get_
File "/usr/local/
application, catch_exc_
File "/usr/local/
app_iter = application(
File "/usr/lib/
return app(environ, start_response)
File "/usr/local/
return resp(environ, start_response)
File "/usr/local/
response = self.app(environ, start_response)
File "/usr/local/
return resp(environ, start_response)
File "/usr/local/
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/
return self.func(req, *args, **kwargs)
File "/opt/stack/
request, **action_args)
File "/opt/stack/
return method(*args, **kwargs)
File "/opt/stack/
return func(self, req, *args, **kwargs)
File "/opt/stack/
registry.
File "/opt/stack/
return c.delete_
File "/opt/stack/
res = self.do_
File "/opt/stack/
'exc_name': exc_name})
File "/opt/stack/
six.
File "/opt/stack/
**kwargs)
File "/opt/stack/
return func(self, *args, **kwargs)
File "/opt/stack/
headers=
File "/opt/stack/
return func(self, method, url, body, headers)
File "/opt/stack/
raise exception.
ServerError: The request returned 500 Internal Server Error.
2014-10-06 00:53:10.055 6827 INFO glance.wsgi.server [2b47d213-
Changed in glance: | |
assignee: | nobody → Ankit Agrawal (ankitagrawal) |
Changed in glance: | |
importance: | Undecided → High |
tags: | added: icehouse-backport-potential |
Changed in glance: | |
milestone: | none → kilo-1 |
Changed in glance: | |
status: | Fix Committed → Fix Released |
Changed in glance: | |
milestone: | kilo-1 → 2015.1.0 |
Fix proposed to branch: master /review. openstack. org/128301
Review: https:/