Skip to content

Commit 384d260

Browse files
committed
fix: record complete exception trace (#919)
* fix: record complete exception trace * add test (cherry picked from commit 068f952)
1 parent f6873a4 commit 384d260

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

apps/sage_intacct/dependent_fields.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
import traceback
23
from datetime import datetime, timezone
34
from time import sleep
45

@@ -218,7 +219,8 @@ def post_dependent_cost_code(import_log: ImportLog, dependent_field_setting: Dep
218219
platform.dependent_fields.bulk_post_dependent_expense_field_values(payload_set)
219220
posted_cost_codes.update(cost_code_names)
220221
processed_batches += 1
221-
except Exception as exception:
222+
except Exception:
223+
exception = traceback.format_exc()
222224
is_errored = True
223225
logger.error(f'Exception while posting dependent cost code | Error: {exception} | Payload: {payload}')
224226

@@ -308,7 +310,8 @@ def post_dependent_cost_type(import_log: ImportLog, dependent_field_setting: Dep
308310
platform.dependent_fields.bulk_post_dependent_expense_field_values(payload_set)
309311
CostType.objects.filter(task_name=cost_types['task_name'], task_id=cost_types['task_id'], workspace_id=dependent_field_setting.workspace_id).update(is_imported=True, updated_at=datetime.now(timezone.utc))
310312
processed_batches += 1
311-
except Exception as exception:
313+
except Exception:
314+
exception = traceback.format_exc()
312315
is_errored = True
313316
logger.error(f'Exception while posting dependent cost type | Error: {exception} | Payload: {payload}')
314317

@@ -439,8 +442,8 @@ def import_dependent_fields_to_fyle(workspace_id: str) -> None:
439442
except SageIntacctSDKError as e:
440443
exception = "Sage Intacct SDK Error"
441444
logger.info('Sage Intacct SDK Error - %s', e)
442-
except Exception as e:
443-
exception = e.__str__()
445+
except Exception:
446+
exception = traceback.format_exc()
444447
logger.error('Exception while importing dependent fields to fyle - %s', exception)
445448
finally:
446449
if cost_type_import_log and cost_type_import_log.status == 'IN_PROGRESS':

tests/test_sageintacct/test_dependent_fields.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,26 @@ def test_import_dependent_fields_to_fyle(db, mocker, create_cost_type, create_de
268268
assert cost_type_import_log.error_log == 'Sage Intacct SDK Error'
269269

270270

271+
def test_import_dependent_fields_to_fyle_generic_exception(db, mocker, create_cost_type, create_dependent_field_setting):
272+
"""
273+
Test import_dependent_fields_to_fyle with generic exception to cover traceback.format_exc()
274+
"""
275+
workspace_id = 1
276+
277+
mocker.patch('apps.sage_intacct.dependent_fields.connect_to_platform', return_value=mocker.MagicMock())
278+
mocker.patch('apps.sage_intacct.dependent_fields.sync_sage_intacct_attributes', side_effect=Exception('Unexpected error'))
279+
280+
import_dependent_fields_to_fyle(workspace_id)
281+
282+
cost_code_import_log = ImportLog.objects.filter(attribute_type='COST_CODE', workspace_id=workspace_id).first()
283+
assert cost_code_import_log.status == 'FAILED'
284+
assert 'Unexpected error' in cost_code_import_log.error_log
285+
286+
cost_type_import_log = ImportLog.objects.filter(attribute_type='COST_TYPE', workspace_id=workspace_id).first()
287+
assert cost_type_import_log.status == 'FAILED'
288+
assert 'Unexpected error' in cost_type_import_log.error_log
289+
290+
271291
def test_construct_custom_field_placeholder():
272292
"""
273293
Test construct_custom_field_placeholder

0 commit comments

Comments
 (0)