From 5db6c2ff226efaf8bac73c8e6d3e1059fb406189 Mon Sep 17 00:00:00 2001 From: Peter Leonov Date: Fri, 9 Oct 2026 12:07:53 +0200 Subject: [PATCH 1/4] test(client-node): cap the mock server delay in the queued-abort test CodeQL flagged the mock server's request-controlled setTimeout as high severity resource exhaustion, which blocks the release PR #1044 via the code scanning ruleset. The release branch is protected, so this lands on main separately. Co-Authored-By: Claude Opus 5.5 --- .../__tests__/integration/node_abort_queued_request.test.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/client-node/__tests__/integration/node_abort_queued_request.test.ts b/packages/client-node/__tests__/integration/node_abort_queued_request.test.ts index ee8133bd..4a1f1669 100644 --- a/packages/client-node/__tests__/integration/node_abort_queued_request.test.ts +++ b/packages/client-node/__tests__/integration/node_abort_queued_request.test.ts @@ -6,7 +6,7 @@ import type { ClickHouseClient } from "@clickhouse/client-common"; import type { ClickHouseClientConfigOptions } from "@clickhouse/client"; import type Stream from "stream"; -// The server answers "SELECT " after milliseconds. +// The server answers "SELECT " after milliseconds, capped at 5 seconds. describe("[Node.js] Aborting a request queued for a socket", () => { let server: http.Server | undefined; let client: ClickHouseClient | undefined; @@ -25,7 +25,8 @@ describe("[Node.js] Aborting a request queued for a socket", () => { let body = ""; req.on("data", (chunk) => (body += chunk)); req.on("end", () => { - const delay = Number(/SELECT (\d+)/.exec(body)?.[1] ?? 0); + const requested = Number(/SELECT (\d+)/.exec(body)?.[1] ?? 0); + const delay = requested <= 5000 ? requested : 5000; setTimeout(() => { res.write("Ok."); res.end(); From b1ac32569463f9458fdebe6c186e2532c93ba572 Mon Sep 17 00:00:00 2001 From: Peter Leonov Date: Fri, 9 Oct 2026 12:08:23 +0200 Subject: [PATCH 2/4] ci(bench-skill-rowbinary): keep polling ClickHouse when curl fails The step runs under bash -e, so the first curl connection error while the server was still starting aborted the step instead of retrying. This failed the benchmarks check on the release PR #1044. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/bench-skill-rowbinary.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bench-skill-rowbinary.yml b/.github/workflows/bench-skill-rowbinary.yml index e6640a32..870e119f 100644 --- a/.github/workflows/bench-skill-rowbinary.yml +++ b/.github/workflows/bench-skill-rowbinary.yml @@ -64,7 +64,7 @@ jobs: grep -m1 'model name' /proc/cpuinfo || true # The server may still be starting; poll briefly so the version is captured. for _ in $(seq 1 30); do - chv=$(curl -s 'http://localhost:8123/?query=SELECT%20version()') + chv=$(curl -s 'http://localhost:8123/?query=SELECT%20version()' || true) [ -n "$chv" ] && break sleep 1 done From 906cc1f8080d1b00d608fbe7b36583e76473edbe Mon Sep 17 00:00:00 2001 From: Peter Leonov Date: Fri, 9 Oct 2026 12:14:42 +0200 Subject: [PATCH 3/4] ci(bench-skill-rowbinary): only accept a version from a successful curl Without -f, an HTTP error body (e.g. 503 while the server starts) was taken as the version and ended the polling early. Addresses Copilot review feedback on #1045. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/bench-skill-rowbinary.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bench-skill-rowbinary.yml b/.github/workflows/bench-skill-rowbinary.yml index 870e119f..b34a2bd8 100644 --- a/.github/workflows/bench-skill-rowbinary.yml +++ b/.github/workflows/bench-skill-rowbinary.yml @@ -64,8 +64,8 @@ jobs: grep -m1 'model name' /proc/cpuinfo || true # The server may still be starting; poll briefly so the version is captured. for _ in $(seq 1 30); do - chv=$(curl -s 'http://localhost:8123/?query=SELECT%20version()' || true) - [ -n "$chv" ] && break + if chv=$(curl -sf 'http://localhost:8123/?query=SELECT%20version()') && [ -n "$chv" ]; then break; fi + chv= sleep 1 done echo "ClickHouse: ${chv:-}" From ef6d323043a235309ab91ca61a2f0c16fe279078 Mon Sep 17 00:00:00 2001 From: Peter Leonov Date: Fri, 9 Oct 2026 12:15:18 +0200 Subject: [PATCH 4/4] docs(typescript-lsp): note the language server's Node.js 22 requirement typescript-language-server 6.x (bumped in #1029) requires Node.js >= 22.22.2, above the repository's Node 20 minimum. Addresses Copilot review feedback on #1044 (release PR); lands on main separately because #1044 targets the protected release branch. Co-Authored-By: Claude Opus 5.5 --- .claude/skills/typescript-lsp/SKILL.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.claude/skills/typescript-lsp/SKILL.md b/.claude/skills/typescript-lsp/SKILL.md index 803294d5..31f86479 100644 --- a/.claude/skills/typescript-lsp/SKILL.md +++ b/.claude/skills/typescript-lsp/SKILL.md @@ -19,6 +19,9 @@ description: > `npm install` (see the `setup` skill) it is available via `npx` and uses the workspace-local `typescript` (6.x) compiler, matching CI exactly. +The server (6.x) requires Node.js >= 22.22.2, newer than the repository's +Node 20 minimum; on Node 20 `npm install` only warns, but the server isn't supported there. + ## Starting the server From the repo root: