Skip to content

Commit 1e9ed95

Browse files
committed
Use base worker activity registration for sandboxes
1 parent ea40f0c commit 1e9ed95

2 files changed

Lines changed: 11 additions & 21 deletions

File tree

durabletask-azuremanaged/durabletask/azuremanaged/preview/sandboxes/worker.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@
55
import random
66
import threading
77

8-
from typing import Any, Iterator, Optional
8+
from typing import Iterator, Optional
99

1010
from azure.core.credentials import TokenCredential
1111
from azure.identity import ManagedIdentityCredential
1212

13-
from durabletask import task
1413
from durabletask.azuremanaged.internal import sandbox_service_pb2 as pb
1514
from durabletask.azuremanaged.preview.sandboxes.helpers import SandboxActivity
1615
from durabletask.azuremanaged.preview.sandboxes.helpers import resolve_activities
@@ -26,7 +25,6 @@
2625
import durabletask.internal.orchestrator_service_pb2 as worker_pb
2726
import durabletask.internal.shared as shared
2827
from durabletask.worker import (
29-
ActivityWorkItemFilter,
3028
ConcurrencyOptions,
3129
WorkItemFilters,
3230
)
@@ -73,18 +71,6 @@ def __init__(self) -> None:
7371
self._sandbox_active_activities = 0
7472
self._sandbox_active_activities_lock = threading.Lock()
7573

76-
def add_activity(
77-
self,
78-
fn: task.Activity[Any, Any],
79-
**kwargs: Any) -> str:
80-
version = kwargs.pop("version", None)
81-
if kwargs:
82-
unexpected = next(iter(kwargs))
83-
raise TypeError(f"Unexpected keyword argument: {unexpected}")
84-
activity_name = super().add_activity(fn)
85-
self._sandbox_activities.append(SandboxActivity(activity_name, version))
86-
return activity_name
87-
8874
def start(self) -> None:
8975
self._configure_sandbox_activity_filters()
9076
super().start()
@@ -103,17 +89,20 @@ def _on_activity_execution_completed(self, req: worker_pb.ActivityRequest) -> No
10389
self._sandbox_active_activities = max(0, self._sandbox_active_activities - 1)
10490

10591
def _configure_sandbox_activity_filters(self) -> None:
106-
activities = resolve_activities(self._sandbox_activities)
92+
registered_filters = WorkItemFilters._from_registry(self._registry) # pyright: ignore[reportPrivateUsage]
93+
activities = resolve_activities([
94+
SandboxActivity(activity_filter.name, version)
95+
for activity_filter in registered_filters.activities
96+
for version in (activity_filter.versions or [None])
97+
])
10798
if not activities:
10899
raise RuntimeError(
109100
"Sandbox worker requires at least one registered activity before it can register.")
110101

111102
self._sandbox_activities = activities
112103
self.use_work_item_filters(WorkItemFilters(
113104
orchestrations=[],
114-
activities=[ActivityWorkItemFilter(
115-
name=activity.name,
116-
versions=[] if activity.version is None else [activity.version]) for activity in activities],
105+
activities=registered_filters.activities,
117106
entities=[]))
118107

119108
def _start_sandbox_registration(self) -> None:

tests/durabletask-azuremanaged/test_sandboxes_extension.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ def test_generated_stub_uses_sandbox_rpc_paths() -> None:
436436
def test_sandbox_worker_constructor_does_not_expose_runtime_contract() -> None:
437437
assert list(inspect.signature(SandboxWorker).parameters) == []
438438
assert "_execute_activity" not in SandboxWorker.__dict__
439+
assert "add_activity" not in SandboxWorker.__dict__
439440

440441

441442
def test_sandbox_activities_client_does_not_expose_worker_registration_rpc() -> None:
@@ -472,8 +473,8 @@ def OtherActivity(_ctx, value):
472473
return value
473474

474475
worker = SandboxWorker()
475-
worker.add_activity(EnvActivity, version=None)
476-
worker.add_activity(OtherActivity, version=None)
476+
worker.add_activity(EnvActivity)
477+
worker.add_activity(OtherActivity)
477478
worker._configure_sandbox_activity_filters()
478479
start = next(worker._registration_messages())
479480

0 commit comments

Comments
 (0)