Skip to content

Commit 3fbada1

Browse files
authored
AbortSubtask RPC (#55)
1 parent e127fed commit 3fbada1

10 files changed

Lines changed: 157 additions & 12 deletions

File tree

‎README.md‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,10 @@ For requestor the app should implement a long running RPC service which implemen
6060
- Shouldn't take much time (preferably less than a minute for medium range machines).
6161
- `AbortTask`
6262
- Takes one argument: `task_id`.
63-
- Will be called when the task is aborted by the user. Should stop all running subtask verifications for this task and perform any other necessary cleanup.
63+
- Will be called when the task is aborted by the user or timed out. Should stop all running subtask verifications for this task and perform any other necessary cleanup.
64+
- `AbortSubtask`
65+
- Takes two arguments: `task_id` and `subtask_id`.
66+
- Will be called when the subtask is aborted by the user or timed out. Should stop verification of the subtask (if it's running) and perform any other necessary cleanup.
6467
- `Shutdown`
6568
- Takes no arguments.
6669
- Should gracefully terminate the service.

‎golem_task_api/proto/golem_task_api.proto‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ service RequestorApp {
1010
rpc RunBenchmark (RunBenchmarkRequest) returns (RunBenchmarkReply) {}
1111
rpc HasPendingSubtasks (HasPendingSubtasksRequest) returns (HasPendingSubtasksReply) {}
1212
rpc AbortTask (AbortTaskRequest) returns (AbortTaskReply) {}
13+
rpc AbortSubtask (AbortSubtaskRequest) returns (AbortSubtaskReply) {}
1314

1415
rpc Shutdown (ShutdownRequest) returns (ShutdownReply) {}
1516
}
@@ -109,6 +110,13 @@ message AbortTaskRequest {
109110
message AbortTaskReply {
110111
}
111112

113+
message AbortSubtaskRequest {
114+
string task_id = 1;
115+
string subtask_id = 2;
116+
}
117+
118+
message AbortSubtaskReply {
119+
}
112120

113121
message ShutdownRequest {
114122
}

‎python/golem_task_api/client.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
from golem_task_api.enums import VerifyResult
1515
from golem_task_api.messages import (
16+
AbortSubtaskRequest,
17+
AbortSubtaskReply,
1618
AbortTaskRequest,
1719
AbortTaskReply,
1820
CreateTaskRequest,
@@ -249,6 +251,12 @@ async def abort_task(self, task_id: str) -> None:
249251
request.task_id = task_id
250252
await self._golem_app.AbortTask(request)
251253

254+
async def abort_subtask(self, task_id: str, subtask_id: str) -> None:
255+
request = AbortSubtaskRequest()
256+
request.task_id = task_id
257+
request.subtask_id = subtask_id
258+
await self._golem_app.AbortSubtask(request)
259+
252260
async def _soft_shutdown(self) -> None:
253261
request = ShutdownRequest()
254262
await self._golem_app.Shutdown(request)

‎python/golem_task_api/handlers.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ async def has_pending_subtasks(
8787
async def abort_task(self, task_work_dir: RequestorTaskDir) -> None:
8888
pass
8989

90+
@abc.abstractmethod
91+
async def abort_subtask(
92+
self,
93+
task_work_dir: RequestorTaskDir,
94+
subtask_id: str
95+
) -> None:
96+
pass
97+
9098

9199
class ProviderAppHandler:
92100
@abc.abstractmethod

‎python/golem_task_api/messages.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from .proto.golem_task_api_pb2 import (
2+
AbortSubtaskRequest,
3+
AbortSubtaskReply,
24
AbortTaskRequest,
35
AbortTaskReply,
46
CreateTaskRequest,

‎python/golem_task_api/proto/golem_task_api_grpc.py‎

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎python/golem_task_api/proto/golem_task_api_pb2.py‎

Lines changed: 97 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎python/golem_task_api/server.py‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
RequestorAppHandler,
2020
)
2121
from golem_task_api.messages import (
22+
AbortSubtaskRequest,
23+
AbortSubtaskReply,
2224
AbortTaskRequest,
2325
AbortTaskReply,
2426
CreateTaskRequest,
@@ -60,6 +62,7 @@ async def wrapped(self, stream):
6062

6163

6264
class RequestorApp(RequestorAppBase):
65+
6366
def __init__(
6467
self,
6568
work_dir: Path,
@@ -151,6 +154,15 @@ async def AbortTask(self, stream):
151154
reply = AbortTaskReply()
152155
await stream.send_message(reply)
153156

157+
@forward_exceptions()
158+
async def AbortSubtask(self, stream):
159+
request: AbortSubtaskRequest = await stream.recv_message()
160+
task_work_dir = self._work_dir.task_dir(request.task_id)
161+
subtask_id = request.subtask_id
162+
await self._handler.abort_subtask(task_work_dir, subtask_id)
163+
reply = AbortSubtaskReply()
164+
await stream.send_message(reply)
165+
154166
@forward_exceptions()
155167
async def Shutdown(self, stream):
156168
await stream.recv_message()

‎python/requirements-build.txt‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
grpcio-tools
2+
dataclasses

‎python/setup.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name='Golem-Task-Api',
5-
version='0.22.0',
5+
version='0.23.0',
66
url='https://github.com/golemfactory/golem/task-api/python',
77
maintainer='The Golem team',
88
maintainer_email='tech@golem.network',

0 commit comments

Comments
 (0)