]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
fix: test: Retry pipequeries on a transient EADDRINUSE in the pipelined test
authorMichal Nowak <mnowak@isc.org>
Wed, 24 Jun 2026 15:16:14 +0000 (17:16 +0200)
committerMichal Nowak <mnowak@isc.org>
Wed, 24 Jun 2026 15:16:14 +0000 (17:16 +0200)
On FreeBSD, the TCP connect() call can transiently fail with
EADDRINUSE under parallel CI load.  The netmgr already retries such
connects (see #3451), but it retries on the same socket, which is
already bound to the same ephemeral source port, so when the
four-tuple is genuinely busy (e.g. in TIME_WAIT) every retry fails
the same way.  pipequeries then exits with "request event result:
address in use", leaving raw.1 empty and failing the first check.

All eight requests share a single TCP dispatch, so the failed connect
means no query ever reached ns4 and its cache is still cold.  It is
therefore safe to run pipequeries again: a fresh process binds a new
ephemeral port, and the out-of-order check keeps its meaning.  Retry
for up to ten attempts, but only on this specific transient error.

Assisted-by: Claude Code:claude-fable-5
Merge branch 'mnowak/pipelined-retry-transient-eaddrinuse' into 'main'

See merge request isc-projects/bind9!12228


Trivial merge