exc-tracking: fixed API calls with new exceptions store engine

This commit is contained in:
RhodeCode Admin 2023-08-25 12:50:30 +02:00
parent c9fb929365
commit 3424f9c3fc
2 changed files with 20 additions and 9 deletions

View file

@ -405,13 +405,19 @@ def store_exception(request, apiuser, exc_data_json, prefix=Optional('rhodecode'
try:
exc_traceback = exc_data['exc_traceback']
exc_type_name = exc_data['exc_type_name']
exc_value = ''
except KeyError as err:
raise JSONRPCError('Missing exc_traceback, or exc_type_name '
'in exc_data_json field. Missing: {}'.format(err))
raise JSONRPCError(
f'Missing exc_traceback, or exc_type_name '
f'in exc_data_json field. Missing: {err}')
class ExcType:
__name__ = exc_type_name
exc_info = (ExcType(), exc_value, exc_traceback)
exc_tracking._store_exception(
exc_id=exc_id, exc_traceback=exc_traceback,
exc_type_name=exc_type_name, prefix=prefix)
exc_id=exc_id, exc_info=exc_info, prefix=prefix)
exc_url = request.route_url(
'admin_settings_exception_tracker_show', exception_id=exc_id)

View file

@ -198,14 +198,19 @@ def get_request_metadata(request=None) -> dict:
return request_metadata
def format_exc(exc_info):
def format_exc(exc_info, use_detailed_tb=True):
exc_type, exc_value, exc_traceback = exc_info
tb = "++ TRACEBACK ++\n\n"
tb += "".join(traceback.format_exception(exc_type, exc_value, exc_traceback, None))
if isinstance(exc_traceback, str):
tb += exc_traceback
use_detailed_tb = False
else:
tb += "".join(traceback.format_exception(exc_type, exc_value, exc_traceback, None))
locals_tb = get_detailed_tb(exc_info)
if locals_tb:
tb += f"\n+++ DETAILS +++\n\n{locals_tb}\n" ""
if use_detailed_tb:
locals_tb = get_detailed_tb(exc_info)
if locals_tb:
tb += f"\n+++ DETAILS +++\n\n{locals_tb}\n" ""
return tb