##// END OF EJS Templates
exception: store orginal tb and exc inside the new exception passed to rhodecode from vcsserver.
marcink -
r621:f216af0d default
parent child Browse files
Show More
@@ -84,8 +84,11 b' def raise_from_original(new_type):'
84 84 Raise a new exception type with original args and traceback.
85 85 """
86 86 exc_type, exc_value, exc_traceback = sys.exc_info()
87 new_exc = new_type(*exc_value.args)
88 # store the original traceback into the new exc
89 new_exc._org_exc_tb = traceback.format_exc(exc_traceback)
87 90
88 91 try:
89 raise new_type(*exc_value.args), None, exc_traceback
92 raise new_exc, None, exc_traceback
90 93 finally:
91 94 del exc_traceback
@@ -37,6 +37,7 b' def _make_exception(kind, org_exc, *args'
37 37 exc = Exception(*args)
38 38 exc._vcs_kind = kind
39 39 exc._org_exc = org_exc
40 exc._org_exc_tb = ''
40 41 return exc
41 42
42 43
@@ -362,8 +362,10 b' class HTTPApplication(object):'
362 362
363 363 org_exc = getattr(e, '_org_exc', None)
364 364 org_exc_name = None
365 org_exc_tb = ''
365 366 if org_exc:
366 367 org_exc_name = org_exc.__class__.__name__
368 org_exc_tb = getattr(e, '_org_exc_tb', '')
367 369 # replace our "faked" exception with our org
368 370 exc_info[0] = org_exc.__class__
369 371 exc_info[1] = org_exc
@@ -383,6 +385,7 b' class HTTPApplication(object):'
383 385 'message': e.message,
384 386 'traceback': tb_info,
385 387 'org_exc': org_exc_name,
388 'org_exc_tb': org_exc_tb,
386 389 'type': type_
387 390 }
388 391 }
General Comments 0
You need to be logged in to leave comments. Login now