Skip to content

Commit 64864b1

Browse files
authored
vdk-core: replace report_and_rethrow (#3056)
## Why? Calling report_and_rethrow causes confusing stack traces, because of adding an extra frame from the extra function call ## What? Replace report_and_rethrow with just calling report and raising the exception after ## How was this tested? CI ## What kind of change is this? Feature/non-breaking Signed-off-by: Dilyan Marinov <[email protected]>
1 parent a9c1c17 commit 64864b1

File tree

6 files changed

+30
-12
lines changed

6 files changed

+30
-12
lines changed

projects/vdk-core/src/vdk/internal/builtin_plugins/connection/managed_connection_base.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,8 @@ def execute_query(self, query: str) -> List[List[Any]]:
156156
]
157157
)
158158
)
159-
errors.report_and_rethrow(
160-
blamee,
161-
e,
162-
)
159+
errors.report(blamee, e)
160+
raise e
163161
return cast(
164162
List[List[Any]], res
165163
) # we return None in case of DML. This is not PEP249 compliant, but is more convenient

projects/vdk-core/src/vdk/internal/builtin_plugins/connection/managed_cursor.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,11 @@ def execute(
119119
]
120120
)
121121
)
122-
errors.report_and_rethrow(
122+
errors.report(
123123
blamee,
124124
e,
125125
)
126+
raise e
126127

127128
def _decorate_operation(self, managed_operation: ManagedOperation, operation: str):
128129
if self.__connection_hook_spec.db_connection_decorate_operation.get_hookimpls():
@@ -143,7 +144,8 @@ def _decorate_operation(self, managed_operation: ManagedOperation, operation: st
143144
]
144145
)
145146
)
146-
errors.report_and_rethrow(errors.ResolvableBy.PLATFORM_ERROR, e)
147+
errors.report(errors.ResolvableBy.PLATFORM_ERROR, e)
148+
raise e
147149

148150
def _validate_operation(self, operation: str, parameters: Optional[Container]):
149151
if self.__connection_hook_spec.db_connection_validate_operation.get_hookimpls():
@@ -161,10 +163,11 @@ def _validate_operation(self, operation: str, parameters: Optional[Container]):
161163
]
162164
)
163165
)
164-
errors.report_and_rethrow(
166+
errors.report(
165167
errors.ResolvableBy.USER_ERROR,
166168
exception=e,
167169
)
170+
raise e
168171

169172
def _execute_operation(self, managed_operation: ManagedOperation):
170173
self._log.info("Executing query:\n%s" % managed_operation.get_operation())

projects/vdk-core/src/vdk/internal/builtin_plugins/run/cli_run.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ def __validate_and_parse_args(arguments: str) -> Optional[Dict]:
4949
]
5050
)
5151
)
52-
errors.report_and_rethrow(errors.ResolvableBy.USER_ERROR, e)
52+
errors.report(errors.ResolvableBy.USER_ERROR, e)
53+
raise e
5354

5455
@staticmethod
5556
def __split_into_chunks(exec_steps: List, chunks: int) -> List:
@@ -193,12 +194,13 @@ def create_and_run_data_job(
193194
]
194195
)
195196
)
196-
errors.report_and_rethrow(
197+
errors.report(
197198
job_input_error_classifier.whom_to_blame(
198199
e, __file__, data_job_directory
199200
),
200201
e,
201202
)
203+
raise e
202204
if execution_result.is_failed() and execution_result.get_exception_to_raise():
203205
raise execution_result.get_exception_to_raise()
204206

projects/vdk-core/src/vdk/internal/builtin_plugins/run/file_based_step.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ def run(job_input)
9797
]
9898
)
9999
)
100-
errors.report_and_rethrow(errors.ResolvableBy.USER_ERROR, e)
100+
errors.report(errors.ResolvableBy.USER_ERROR, e)
101+
raise e
101102

102103
for _, func in inspect.getmembers(python_module, inspect.isfunction):
103104
if func.__name__ == "run":
@@ -153,7 +154,8 @@ def invoke_run_function(func: Callable, job_input: IJobInput, step_name: str):
153154
)
154155

155156
to_be_fixed_by = whom_to_blame(e, __file__, None)
156-
errors.report_and_rethrow(to_be_fixed_by, e)
157+
errors.report(to_be_fixed_by, e)
158+
raise e
157159
else:
158160
errors.report_and_throw(
159161
errors.UserCodeError(

projects/vdk-core/src/vdk/internal/core/errors.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,8 @@ def log_and_rethrow(
259259
# wrap
260260
message = [what_happened, why_it_happened, consequences, countermeasures]
261261
log.error("\n".join(message))
262-
report_and_rethrow(to_be_fixed_by, exception)
262+
report(to_be_fixed_by, exception)
263+
raise exception
263264

264265

265266
class ErrorMessage:

projects/vdk-core/tests/vdk/internal/core/test_errors.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,18 @@ def test_report_and_rethrow(self):
168168
is 1
169169
)
170170

171+
def test_report(self):
172+
ex = IndexError("foo")
173+
errors.report(
174+
errors.ResolvableBy.USER_ERROR,
175+
exception=ex,
176+
)
177+
assert errors.ResolvableByActual.USER in errors.resolvable_context().resolvables
178+
assert (
179+
len(errors.resolvable_context().resolvables[errors.ResolvableByActual.USER])
180+
is 1
181+
)
182+
171183
def test_report_and_throw(self):
172184
with pytest.raises(errors.PlatformServiceError):
173185
errors.report_and_throw(PlatformServiceError("My super awesome message"))

0 commit comments

Comments
 (0)