cloudflare / cloudflare/developer-platform

Workers-for-Platforms workers can "brick" themselves after running out of CPU time.

Đang mở
#49 0 bình luận 0 reaction 1 người được giao Được @dinasaur404 nhận Xem trên GitHub
product:workers-for-platforms
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
1
Fork
0
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

### What versions & operating system are you using?

System:
OS: macOS 15.6.1
CPU: (16) arm64 Apple M4 Max
Memory: 2.01 GB / 48.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 24.4.1 - /Users/dmaretskyi/.proto/tools/node/24.4.1/bin/node
npm: 11.4.2 - /Users/dmaretskyi/.proto/tools/node/24.4.1/bin/npm
pnpm: 9.15.4 - /Users/dmaretskyi/.proto/shims/pnpm
bun: 1.3.3 - /Users/dmaretskyi/.proto/shims/bun
Deno: 2.5.6 - /Users/dmaretskyi/.proto/shims/deno
npmPackages:
@cloudflare/vitest-pool-workers: 0.10.5 => 0.10.5
@cloudflare/workers-types: 4.20251106.1 => 4.20251106.1
wrangler: 4.49.0 => 4.49.0

### Please provide a link to a minimal reproduction

-

### Describe the Bug

We are deploying simple test worker to a dispatch namespace:

```ts
export default {
async fetch(request: Request, env: Env) {
const { iterations } = JSON.parse(await request.body.json());

let a = 0n;
let b = 1n;
for (let i = 0; i < iterations; i++) {
a += b;
b = a - b;
}

return new Response(JSON.stringify({ result: a.toString() }), {
headers: { "Content-Type": "application/json" },
});
},
};
```

Running this with a high iteration count (~1,000,000,000) we can synthetically cause a `Worker exceeded CPU time limit.` error.

Now, the issue is when we invoke the worker again. All subsequent invocations immediatelly fail with: `The Workers runtime canceled this request because it detected that your Worker's code had hung and would never generate a response.`. Based on the timings **the worker code isn't being executed**.

For more context, the dispatch-namespace is being invoked from a DurableObject:

```
[HTTP fetch]--->[DurableObject rpc]--->[DispatchNamespace fetch]
```

All of the errors get thrown when we call `fetch` on the stub returned from the dipatch namespace.
After the initial invocation fails with `Worker exceeded CPU time limit.` the worker is essentially **bricked**. We cannot invoke it even with a low iteration count.

From my testing, if we re-deploy the dispatch-namespace worker, or rotate the DurableObject the requests are routed through - the error goes away.

To recap:

```
Invocation 1:
iterations = 100
--> OK

Invocation 2:
iterations = 1,000,000,000. (after ~30 seconds)
--> error: Worker exceeded CPU time limit.

Invocations 3,4,5,...:
iterations = 100 (thrown immediatelly)
--> error: The Workers runtime canceled this request because it detected that your Worker's code had hung and would never generate a response.
```

Note that all code here (both the invoking worker and the dispatch-namespace one) run on Cloudflare hosted infrastructure, not locally.

### Please provide any relevant error logs

_No response_

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.