From 98918cd65b81e17a9d96393126904776c2902502 Mon Sep 17 00:00:00 2001 From: jbiskur Date: Wed, 10 Jun 2026 22:28:16 +0100 Subject: [PATCH 1/2] fix(pump): vendor @flowcore/data-pump 0.21.4 (hung-connect reconnect self-heal) Bumps the vendored data-pump (dnt inlines the jsr import into the published package, pinned by deno.lock) from 0.21.3 to 0.21.4, which adds the hung-connect fix: notifier.waitWebSocket now arms the re-poll timeout + abort BEFORE connect() and races connect() against the resolution promise, so a hung websocket reconnect degrades to a bounded re-poll and auto-recovers to WS mode instead of wedging the pump until a process restart. This is the delivery vehicle that gets the fix into embedded consumers (control-plane, worker, klokkan-backend, usable-chat, ...). See flowcore-io/data-pump#78 (data-pump 0.21.4). Co-Authored-By: Claude Opus 4.8 (1M context) --- deno.json | 2 +- deno.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deno.json b/deno.json index e2215b0..7c1c0b7 100644 --- a/deno.json +++ b/deno.json @@ -27,7 +27,7 @@ "file-type": "npm:file-type@^21.0.0", "node-cache": "npm:node-cache@^5.1.2", "rxjs": "npm:rxjs@^7.8.1", - "@flowcore/data-pump": "jsr:@flowcore/data-pump@^0.21.3", + "@flowcore/data-pump": "jsr:@flowcore/data-pump@^0.21.4", "@flowcore/sdk": "npm:@flowcore/sdk@^4.2.2", "postgres": "npm:postgres@^3.4.3", "ws": "npm:ws@^8.18.0", diff --git a/deno.lock b/deno.lock index 2fb573a..8855667 100644 --- a/deno.lock +++ b/deno.lock @@ -5,7 +5,7 @@ "jsr:@deno/cache-dir@~0.10.3": "0.10.3", "jsr:@deno/dnt@~0.41.3": "0.41.3", "jsr:@deno/graph@~0.73.1": "0.73.1", - "jsr:@flowcore/data-pump@~0.21.3": "0.21.3", + "jsr:@flowcore/data-pump@~0.21.4": "0.21.4", "jsr:@flowcore/sdk@^4.2.2": "4.2.2", "jsr:@flowcore/time-uuid@~0.1.1": "0.1.2", "jsr:@std/assert@0.223": "0.223.0", @@ -69,8 +69,8 @@ "@deno/graph@0.73.1": { "integrity": "cd69639d2709d479037d5ce191a422eabe8d71bb68b0098344f6b07411c84d41" }, - "@flowcore/data-pump@0.21.3": { - "integrity": "c18caf7623501b7d3b6d0eb85a577909481950ddf850958208aa7d701d49b0c0", + "@flowcore/data-pump@0.21.4": { + "integrity": "488532273480244bc6401183f080094a600441fa7f87d6ed3cef9a76f56b2a24", "dependencies": [ "jsr:@flowcore/sdk@^4.2.2", "jsr:@flowcore/time-uuid", @@ -384,7 +384,7 @@ "workspace": { "dependencies": [ "jsr:@deno/dnt@~0.41.3", - "jsr:@flowcore/data-pump@~0.21.3", + "jsr:@flowcore/data-pump@~0.21.4", "npm:@flowcore/sdk-transformer-core@^2.5.1", "npm:@flowcore/sdk@^4.2.2", "npm:bun-sqlite-key-value@^1.13.1", From c253d23bbcaa2b80ff533bacf4c5295e0d548e22 Mon Sep 17 00:00:00 2001 From: jbiskur Date: Wed, 10 Jun 2026 22:33:57 +0100 Subject: [PATCH 2/2] test(postgres): accept EAI_AGAIN as well as ENOTFOUND for unresolvable host The "missing connection information" test dials a nonexistent host and asserted the error message contains "ENOTFOUND", but some runners' DNS resolvers report an unresolvable host as "EAI_AGAIN" instead (both mean the host did not resolve). Assert on either to de-flake CI. Unrelated to the data-pump bump; pre-existing fragility surfaced on the current runner. Co-Authored-By: Claude Opus 4.8 (1M context) --- tests/postgres-pathway-state.test.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/postgres-pathway-state.test.ts b/tests/postgres-pathway-state.test.ts index efa4d74..7d76a4f 100644 --- a/tests/postgres-pathway-state.test.ts +++ b/tests/postgres-pathway-state.test.ts @@ -1,4 +1,4 @@ -import { assertEquals, assertFalse, assertRejects } from "https://deno.land/std@0.224.0/assert/mod.ts" +import { assert, assertEquals, assertFalse, assertRejects } from "https://deno.land/std@0.224.0/assert/mod.ts" import { createPostgresPathwayState, PostgresPathwayState } from "../src/pathways/postgres/postgres-pathway-state.ts" // Test configuration @@ -120,13 +120,18 @@ Deno.test({ port: 54321, } - await assertRejects( + const error = await assertRejects( async () => { const badState = createPostgresPathwayState(badConfig) await badState.isProcessed("some-event") }, Error, - "ENOTFOUND", + ) + // An unresolvable host is reported differently across resolvers/runners + // (ENOTFOUND vs EAI_AGAIN); both mean the host did not resolve. + assert( + /ENOTFOUND|EAI_AGAIN/.test(error.message), + `expected a DNS resolution failure (ENOTFOUND/EAI_AGAIN), got: ${error.message}`, ) })