Preserve the original exception type when converting to RayTaskError (#5799)

This commit is contained in:
Eric Liang
2019-09-28 17:03:15 -07:00
committed by GitHub
parent 493364d3bd
commit 81ee887f91
5 changed files with 57 additions and 10 deletions
+11 -2
View File
@@ -1002,7 +1002,13 @@ class Worker(object):
def _handle_process_task_failure(self, function_descriptor,
return_object_ids, error, backtrace):
function_name = function_descriptor.function_name
failure_object = RayTaskError(function_name, backtrace)
if isinstance(error, RayTaskError):
# avoid recursively nesting of RayTaskError
failure_object = RayTaskError(function_name, backtrace,
error.cause_cls)
else:
failure_object = RayTaskError(function_name, backtrace,
error.__class__)
failure_objects = [
failure_object for _ in range(len(return_object_ids))
]
@@ -2290,7 +2296,10 @@ def get(object_ids):
last_task_error_raise_time = time.time()
if isinstance(value, ray.exceptions.UnreconstructableError):
worker.dump_object_store_memory_usage()
raise value
if isinstance(value, RayTaskError):
raise value.as_instanceof_cause()
else:
raise value
# Run post processors.
for post_processor in worker._post_get_hooks: