summaryrefslogtreecommitdiff
path: root/ext/http/00_serve.ts
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-04-25 12:50:01 +0530
committerGitHub <noreply@github.com>2024-04-25 09:20:01 +0200
commite98862deb24be118a62eb02e03495bf0cff2519c (patch)
treebf4c0d8d6dbea54d3ecc261160f82f1f5e589a6d /ext/http/00_serve.ts
parent115dedde22edc60707826c4073e0ee90431b86f1 (diff)
perf(ext/http): cache abort signal error (#23548)
Fixes a perf regression introduced in https://github.com/denoland/deno/commit/eed2598e6cf1db643b4edd07b5eff94c59eb9408 ([flamegraph](https://profiler.firefox.com/public/83whz7mrfkshk5q6hd6hjmrmw8tgmw67s96m4p0/flame-graph/?globalTrackOrder=0&hiddenLocalTracksByPid=12691-0we&symbolServer=http%3A%2F%2F127.0.0.1%3A3000%2F316cvciry38ippl9i74fmcxrd5q9asfrr28xp02&thread=0&v=10)) this patch: ``` Summary: Success rate: 100.00% Total: 10.0007 secs Slowest: 0.0145 secs Fastest: 0.0001 secs Average: 0.0006 secs Requests/sec: 80341.4816 Total data: 9.19 MiB Size/request: 12 Size/sec: 941.44 KiB ``` main: ``` Summary: Success rate: 100.00% Total: 10.0007 secs Slowest: 0.0068 secs Fastest: 0.0002 secs Average: 0.0009 secs Requests/sec: 56560.0551 Total data: 6.47 MiB Size/request: 12 Size/sec: 662.75 KiB ```
Diffstat (limited to 'ext/http/00_serve.ts')
-rw-r--r--ext/http/00_serve.ts10
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/http/00_serve.ts b/ext/http/00_serve.ts
index d19b62dde..afcc16f38 100644
--- a/ext/http/00_serve.ts
+++ b/ext/http/00_serve.ts
@@ -126,6 +126,8 @@ function addTrailers(resp, headerList) {
op_http_set_response_trailers(inner.external, headerList);
}
+let signalAbortError;
+
class InnerRequest {
#external;
#context;
@@ -156,9 +158,15 @@ class InnerRequest {
);
}
}
+ if (!signalAbortError) {
+ signalAbortError = new DOMException(
+ "The request has been cancelled.",
+ "AbortError",
+ );
+ }
// Unconditionally abort the request signal. Note that we don't use
// an error here.
- this.#abortController.abort();
+ this.#abortController.abort(signalAbortError);
this.#external = null;
}