From 8195da08e8bde4e039e1499dae5be4b14801ec05 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 9 Nov 2026 23:10:16 +0100 Subject: [PATCH] =?UTF-8?q?D2c:=20PassingCause=20knows=20git's=20could-not?= =?UTF-8?q?-resolve-host=20and=20a=20client's=20timeout=20(ADR=200664=20?= =?UTF-8?q?=C2=A71,=20issue=201748)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- sdk/buildstep/ask_test.go | 26 ++++++++++++++------------ sdk/buildstep/passing.go | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/sdk/buildstep/ask_test.go b/sdk/buildstep/ask_test.go index aba010d1..9df19195 100644 --- a/sdk/buildstep/ask_test.go +++ b/sdk/buildstep/ask_test.go @@ -317,18 +317,20 @@ func TestPauseCapacityAndComposerKey(t *testing.T) { // Issue 1748 (ADR 0664): a transport fault is told from a wrong source by its words; a step given again is no end; the // bus waits 1 minute after the first run and 4 after the second. for words, want := range map[string]bool{ - `Get "https://proxy": dial tcp: lookup proxy.golang.org: i/o timeout`: true, - `Head http://store.internal:5100/v2/x: dial tcp 10.10.0.1:5100: i/o timeout`: true, - "kex_exchange_identification: read: Connection reset by peer": true, - "Connection closed by 10.10.0.1 port 222": true, - "npm error code EAI_AGAIN": true, - "npm error code ETIMEDOUT": true, - "npm error code ECONNRESET": true, - (&HolderSilent{Seat: "go-package-registry", Holder: "gopkgs", Node: "ace"}).Error(): true, - "nats: no responders available for request": false, - "fatal: unknown revision or path not in the working tree": false, - "verifying module: checksum mismatch": false, - "./main.go:3:1: syntax error: unexpected }": false, + `Get "https://proxy": dial tcp: lookup proxy.golang.org: i/o timeout`: true, + `Head http://store.internal:5100/v2/x: dial tcp 10.10.0.1:5100: i/o timeout`: true, + "kex_exchange_identification: read: Connection reset by peer": true, + "Connection closed by 10.10.0.1 port 222": true, + "npm error code EAI_AGAIN": true, + "npm error code ETIMEDOUT": true, + "npm error code ECONNRESET": true, + "fatal: unable to access the forge: Could not resolve host: mesh-forge": true, + "Get \"https://example.com/x.tar.gz\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)": true, + (&HolderSilent{Seat: "go-package-registry", Holder: "gopkgs", Node: "ace"}).Error(): true, + "nats: no responders available for request": false, + "fatal: unknown revision or path not in the working tree": false, + "verifying module: checksum mismatch": false, + "./main.go:3:1: syntax error: unexpected }": false, } { if PassingCause(words) != want { t.Errorf("PassingCause(%q) = %v, want %v", words, !want, want) diff --git a/sdk/buildstep/passing.go b/sdk/buildstep/passing.go index e3530ce8..de3b382e 100644 --- a/sdk/buildstep/passing.go +++ b/sdk/buildstep/passing.go @@ -41,7 +41,7 @@ func (h *HolderSilent) Unwrap() error { return &Passing{Err: errors.New(h.Error( // one: it is the same for a seat nothing holds (HolderSilent is the case a holder is named). var passingWords = []string{"i/o timeout", "no such host", "temporary failure in name resolution", "connection refused", "connection reset", "tls handshake timeout", "lookup ", "kex_exchange_identification", "connection closed by", - "eai_again", "etimedout", "econnreset", "econnrefused", "enotfound", strings.ToLower(HolderSilentWords)} + "could not resolve host", "client.timeout", "operation timed out", "connection timed out", "eai_again", "etimedout", "econnreset", "econnrefused", "enotfound", strings.ToLower(HolderSilentWords)} // PassingCause says words (a tool's output or a step's reason) are those of a transport fault. func PassingCause(words string) bool {