Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Don't include traceback when wrapping exceptions
The fix in fa52cb0 strips tracebacks
from exceptions when returning them to the user, but it still spams
the log with a long traceback. We shouldn't be including the traceback
when we wrap the exception in the first place. Instead we just
include the message.

It also updates the error code to 409 for device in use since this
is actually a conflict.

Fix for:

  bug 1155315
  bug 1103324
  bug 1092610

Change-Id: I95019a3022eb52e0335c455009c13fe229475d03
  • Loading branch information
vishvananda committed Mar 14, 2013
1 parent e47d099 commit d63bd8d
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 8 deletions.
13 changes: 5 additions & 8 deletions nova/api/openstack/wsgi.py
Expand Up @@ -656,11 +656,12 @@ def __exit__(self, ex_type, ex_value, ex_traceback):
return True

if isinstance(ex_value, exception.NotAuthorized):
msg = unicode(ex_value)
msg = unicode(ex_value.message % ex_value.kwargs)
raise Fault(webob.exc.HTTPForbidden(explanation=msg))
elif isinstance(ex_value, exception.Invalid):
msg = unicode(ex_value.message % ex_value.kwargs)
raise Fault(exception.ConvertedException(
code=ex_value.code, explanation=unicode(ex_value)))
code=ex_value.code, explanation=msg))

# Under python 2.6, TypeError's exception value is actually a string,
# so test # here via ex_type instead:
Expand Down Expand Up @@ -1172,12 +1173,8 @@ def __call__(self, req):
code = self.wrapped_exc.status_int
fault_name = self._fault_names.get(code, "computeFault")
explanation = self.wrapped_exc.explanation
offset = explanation.find("Traceback")
if offset is not -1:
LOG.debug(_("API request failed, fault raised to the top of"
" the stack. Detailed stacktrace %s") %
explanation)
explanation = explanation[0:offset - 1]
LOG.debug(_("Returning %(code)s to user: %(explanation)s"),
{'code': code, 'explanation': explanation})

fault_data = {
fault_name: {
Expand Down
1 change: 1 addition & 0 deletions nova/exception.py
Expand Up @@ -388,6 +388,7 @@ class InvalidDevicePath(Invalid):

class DevicePathInUse(Invalid):
message = _("The supplied device path (%(path)s) is in use.")
code = 409


class DeviceIsBusy(Invalid):
Expand Down

0 comments on commit d63bd8d

Please sign in to comment.