Skip to content

Antalya-26.6: use Cloudflare DNS in containers so lookups don't hang on unroutable IPv6 nameservers - #2252

Open
CarlosFelipeOR wants to merge 1 commit into
antalya-26.6from
ci/antalya-26.6/container-dns
Open

Antalya-26.6: use Cloudflare DNS in containers so lookups don't hang on unroutable IPv6 nameservers#2252
CarlosFelipeOR wants to merge 1 commit into
antalya-26.6from
ci/antalya-26.6/container-dns

Conversation

@CarlosFelipeOR

Copy link
Copy Markdown
Collaborator

Containers inherit the runner's uplink resolvers, and the first two are IPv6. Container IPv6 uses an unroutable prefix (2001:3984:3989::/64, Docker's docs example), so glibc waits out the timeout on each before reaching the IPv4 ones.

Measured on a runner, getent hosts base.invalid:

resolver time
default (4 nameservers, IPv6 first) ~14s
185.12.64.1 ~2.9s
185.12.64.2 0.00s
1.1.1.1 0.01s

This is what blocks 04070_url_base_setting — it does 25 .invalid lookups in series and takes ~950s instead of ~8s. Details in #2250.

Cloudflare rather than the Hetzner resolvers so the setting holds on Scaleway and AWS runners too. Neither resolves dockerhub-proxy.dockerhub-proxy-zone, so there's no difference there.

Resolves #2250

Changelog category (leave one):

  • CI Fix or Improvement (changelog entry is not required)

CI/CD Options

Exclude tests:

  • Fast test
  • Integration Tests
  • Stateless tests
  • Stateful tests
  • Performance tests
  • Aarch64 tests
  • All with ASAN
  • All with TSAN
  • All with MSAN
  • All with UBSAN
  • All with Coverage
  • All Regression
  • Disable CI Cache

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • CAS (content-addressed storage; Antalya only)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • OAuth (5m)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

Containers inherit the runner's uplink resolvers, and the first two are IPv6
(2a01:4ff:ff00::add:1/2). Container IPv6 uses an unroutable prefix, so glibc
waits out the timeout on each before falling through to IPv4.

Measured on a runner, `getent hosts base.invalid`:
  default (4 nameservers, IPv6 first)  ~14s
  --dns=185.12.64.1                    ~2.9s
  --dns=185.12.64.2                     0.00s
  --dns=1.1.1.1                         0.01s

This blocks 04070_url_base_setting, which does 25 lookups of .invalid hostnames
in series and takes ~950s instead of ~8s. See #2250.

Cloudflare rather than the Hetzner resolvers so the setting also holds on
Scaleway and AWS runners.
@CarlosFelipeOR
CarlosFelipeOR requested a review from strtgbb August 21, 2026 19:56
@github-actions

Copy link
Copy Markdown

Workflow [PR], commit [f5cd909]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant