Skip to content

Commit 8728890

Browse files
close stream before releasing lock (#254)
* close stream before releasing lock * Close stream before releasing lock
1 parent e69dce5 commit 8728890

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

.changeset/twenty-doors-learn.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@cloudflare/sandbox": patch
3+
---
4+
5+
close stream before releasing lock

packages/sandbox/src/clients/interpreter-client.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,12 @@ export class InterpreterClient extends BaseHttpClient {
267267
yield buffer;
268268
}
269269
} finally {
270+
// Cancel the stream first to properly terminate HTTP connections when breaking early
271+
try {
272+
await reader.cancel();
273+
} catch {
274+
// Ignore cancel errors (stream may already be closed)
275+
}
270276
reader.releaseLock();
271277
}
272278
}

packages/sandbox/src/file-stream.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ async function* parseSSE(
3737
}
3838
}
3939
} finally {
40+
// Cancel the stream first to properly terminate HTTP connections when breaking early
41+
try {
42+
await reader.cancel();
43+
} catch {
44+
// Ignore cancel errors (stream may already be closed)
45+
}
4046
reader.releaseLock();
4147
}
4248
}

packages/sandbox/src/sse-parser.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ export async function* parseSSEStream<T>(
7272
}
7373
} finally {
7474
// Clean up resources
75+
try {
76+
await reader.cancel();
77+
} catch {}
7578
reader.releaseLock();
7679
}
7780
}

0 commit comments

Comments
 (0)