mirror of
https://github.com/wassname/ray.git
synced 2026-06-28 12:45:44 +08:00
Skip set_result if the future is done (#11256)
This commit is contained in:
@@ -1515,11 +1515,19 @@ cdef void async_set_result(shared_ptr[CRayObject] obj,
|
||||
data_metadata_pairs, ids_to_deserialize)[0]
|
||||
|
||||
def set_future():
|
||||
# Issue #11030, #8841
|
||||
# If this future has result set already, we just need to
|
||||
# skip the set result/exception procedure.
|
||||
if py_future.done():
|
||||
cpython.Py_DECREF(py_future)
|
||||
return
|
||||
|
||||
if isinstance(result, RayTaskError):
|
||||
ray.worker.last_task_error_raise_time = time.time()
|
||||
py_future.set_exception(result.as_instanceof_cause())
|
||||
else:
|
||||
py_future.set_result(result)
|
||||
|
||||
cpython.Py_DECREF(py_future)
|
||||
|
||||
loop.call_soon_threadsafe(set_future)
|
||||
|
||||
Reference in New Issue
Block a user