WorkspaceProxy wakes Durable Objects via idFromString(), clearing ctx.id.name for Agents/Lifecycle
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
Dieses Issue wurde noch nicht bewertet.
Beschreibung
Describe the bug
When a Durable Object using cloudflare/agents (Lifecycle / Agent / OpenCodeHarness) is paired with @cloudflare/computer's ContainerBackend (or WorkerShellBackend), WorkspaceProxy.#hostStub() and WorkspaceServiceProxy.#hostStub() always resolve the host Durable Object via ns.get(ns.idFromString(id)).
Because a running container outlives Durable Object idle evictions, restarts, and Worker deployments, computerd reconnecting over WorkspaceProxy (/api) is frequently the first caller to wake the Durable Object from a cold start.
In Cloudflare Workers, instantiating a Durable Object via idFromString() does not populate ctx.id.name, so ctx.id.name remains undefined for the entire lifetime of that in-memory Durable Object instance (which stays pinned while the /api WebSocket is open). Any subsequent Lifecycle startup on that instance fails with:
Error: <Class> could not determine its Durable Object name. Address it with idFromName() or getByName().
Expected behavior
WorkspaceRef, WorkspaceProxyProps, and WorkspaceServiceProxyProps should accept an optional name?: string (e.g. this.ctx.id.name) so WorkspaceProxy and WorkspaceServiceProxy resolve the target Durable Object via ns.idFromName(name) (when ns.idFromName(name).toString() === id), preserving ctx.id.name across cold wakes triggered by container callbacks.
A tested patch with workerd unit tests in packages/computer/tests/proxy.test.ts is available at:
https://github.com/4nkitd/computer/commit/efb5ded
Steps to reproduce
- Create a Durable Object class using
withWorkspaceContainer(Base),ContainerBackend, andLifecycle.install(this)(fromagents/lifecycle). - Address the Durable Object via
env.Agent.getByName("main")and start a container command socomputerdconnects back viaWorkspaceProxy. - Redeploy the Worker or let the Durable Object evict while the container remains running so
computerdreconnects viaWorkspaceProxy(ns.get(ns.idFromString(id))) before the next externalgetByName("main")request. - Trigger
lifecycle.start()on the woken Durable Object;ctx.id.nameisundefinedandLifecyclethrowscould not determine its Durable Object name.
Environment
@cloudflare/computer:0.5.1agents:0.28.1wrangler:4.151.0(compatibility_date: 2026-10-15)
- Vorherrschende Sprache
- TypeScript
- Sterne
- 9.6k
- Forks
- 558
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 52
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus cloudflare/computer
-
dofs: resolving a directory scans its children as the directory growsEvtl. vergeben @aron-cf hat das vor 3 Tagen übernommen. Offenbug
cloudflare/computer#236 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
cloudflare/computer#224 · 5 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Always run the "next" computerd workflow on push to the `release` branchEvtl. vergeben @aron-cf hat das vor 8 Tagen übernommen. Offenbug
cloudflare/computer#222 · 2 Kommentare · 1 Reaktion · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Make just-bash and acorn optional peer dependencies, pulled in only by the backend that needs themOffenenhancement
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
cloudflare/computer#220 · 3 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Workspace namespaces: more than one Workspace per Durable Object storageEvtl. vergeben @aron-cf hat das vor 8 Tagen übernommen. Offenenhancement
cloudflare/computer#219 · 1 Kommentar · 1 Reaktion · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in cloudflare/computer
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Chocobozzz/PeerTube#7832 ·
Maintainer antworten meist innerhalb von 3 Tagen
-
Pay to use?Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 66/100
darkreader/darkreader#16108 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Add: Dak Nong TV SDOffencheck:passed streams:add
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug engine
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
frostney/GocciaScript#1746 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
agilepathway/label-checker#739 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag