mirror of
https://github.com/wassname/ray.git
synced 2026-08-18 12:20:14 +08:00
TaskCancellation (#7669)
* Smol comment * WIP, not passing ray.init * Fixed small problem * wip * Pseudo interrupt things * Basic prototype operational * correct proc title * Mostly done * Cleanup * cleaner raylet error * Cleaning up a few loose ends * Fixing Race Conds * Prelim testing * Fixing comments and adding second_check for kill * Working_new_impl * demo_ready * Fixing my english * Fixing a few problems * Small problems * Cleaning up * Response to changes * Fixing error passing * Merged to master * fixing lock * Cleaning up print statements * Format * Fixing Unit test build failure * mock_worker fix * java_fix * Canel * Switching to Cancel * Responding to Review * FixFormatting * Lease cancellation * FInal comments? * Moving exist check to CoreWorker * Fix Actor Transport Test * Fixing task manager test * chaning clock repr * Fix build * fix white space * lint fix * Updating to medium size * Fixing Java test compilation issue * lengthen bad timeouts
This commit is contained in:
+39
-6
@@ -17,6 +17,8 @@ import logging
|
||||
import os
|
||||
import pickle
|
||||
import sys
|
||||
import _thread
|
||||
import setproctitle
|
||||
|
||||
from libc.stdint cimport (
|
||||
int32_t,
|
||||
@@ -90,6 +92,7 @@ from ray.exceptions import (
|
||||
RayTaskError,
|
||||
ObjectStoreFullError,
|
||||
RayTimeoutError,
|
||||
RayCancellationError
|
||||
)
|
||||
from ray.utils import decode
|
||||
import gc
|
||||
@@ -453,13 +456,23 @@ cdef execute_task(
|
||||
class_name, repr(args), repr(kwargs))
|
||||
core_worker.set_actor_title(actor_title.encode("utf-8"))
|
||||
# Execute the task.
|
||||
with ray.worker._changeproctitle(title, next_title):
|
||||
with core_worker.profile_event(b"task:execute"):
|
||||
task_exception = True
|
||||
outputs = function_executor(*args, **kwargs)
|
||||
with core_worker.profile_event(b"task:execute"):
|
||||
task_exception = True
|
||||
try:
|
||||
with ray.worker._changeproctitle(title, next_title):
|
||||
outputs = function_executor(*args, **kwargs)
|
||||
task_exception = False
|
||||
if c_return_ids.size() == 1:
|
||||
outputs = (outputs,)
|
||||
except KeyboardInterrupt as e:
|
||||
raise RayCancellationError(
|
||||
core_worker.get_current_task_id())
|
||||
if c_return_ids.size() == 1:
|
||||
outputs = (outputs,)
|
||||
# Check for a cancellation that was called when the function
|
||||
# was exiting and was raised after the except block.
|
||||
if not check_signals().ok():
|
||||
task_exception = True
|
||||
raise RayCancellationError(
|
||||
core_worker.get_current_task_id())
|
||||
# Store the outputs in the object store.
|
||||
with core_worker.profile_event(b"task:store_outputs"):
|
||||
core_worker.store_task_outputs(
|
||||
@@ -551,6 +564,14 @@ cdef void async_plasma_callback(CObjectID object_id,
|
||||
event_handler._loop.call_soon_threadsafe(
|
||||
event_handler._complete_future, obj_id)
|
||||
|
||||
cdef c_bool kill_main_task() nogil:
|
||||
with gil:
|
||||
if setproctitle.getproctitle() != "ray::IDLE":
|
||||
_thread.interrupt_main()
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
cdef CRayStatus check_signals() nogil:
|
||||
with gil:
|
||||
try:
|
||||
@@ -658,6 +679,7 @@ cdef class CoreWorker:
|
||||
options.ref_counting_enabled = True
|
||||
options.is_local_mode = local_mode
|
||||
options.num_workers = 1
|
||||
options.kill_main = kill_main_task
|
||||
|
||||
CCoreWorkerProcess.Initialize(options)
|
||||
|
||||
@@ -953,6 +975,17 @@ cdef class CoreWorker:
|
||||
check_status(CCoreWorkerProcess.GetCoreWorker().KillActor(
|
||||
c_actor_id, True, no_reconstruction))
|
||||
|
||||
def cancel_task(self, ObjectID object_id, c_bool force_kill):
|
||||
cdef:
|
||||
CObjectID c_object_id = object_id.native()
|
||||
CRayStatus status = CRayStatus.OK()
|
||||
|
||||
status = CCoreWorkerProcess.GetCoreWorker().CancelTask(
|
||||
c_object_id, force_kill)
|
||||
|
||||
if not status.ok():
|
||||
raise TypeError(status.message().decode())
|
||||
|
||||
def resource_ids(self):
|
||||
cdef:
|
||||
ResourceMappingType resource_mapping = (
|
||||
|
||||
Reference in New Issue
Block a user