Skip to content

teststation listens with quic-go's 30 s idle timeout; the live station uses 300 s #62

Closed

Description

@rgfaber

Purpose (reliability): a test that dials macula-go's in-process teststation sees the connection lifetime a live station gives, so a test passes or fails for the reasons production would; today a 30 s path outage ends the connection in tests and not on the fleet.

Facts (v0.27.0-rc.4 and origin/master)

  • teststation/station.go:161 listens with &quic.Config{}: quic-go's default MaxIdleTimeout is 30 s.
  • The idle timeout in force is the minimum of both sides'. Clients ask for 300 s (macula-rust transport.rs IDLE_TIMEOUT, macula-go transport/profile_dial.go:192), and the live Erlang station listens with 300 s (macula_quic.erl, idle_timeout_ms default 300_000). So against the teststation every client gets 30 s.
  • Seen in A publication made while a link cannot carry packets is destroyed, and nothing above the transport is told macula-rust#57: a 30 s black hole ends the link at the teststation's 30 s (Io("timed out")) and the test fails. The same test with the teststation set to MaxIdleTimeout: 300s, KeepAlivePeriod: 15s passes.

Done when

The teststation listens with the live station's idle timeout and keep-alive (300 s / 15 s), named once, and a test pins it.

Activity

  1. rgfaber commented on Oct 30, 2026

    @rgfaber
    ContributorAuthor

    Purpose met. The teststation now gives a connection the lifetime a live station does: a 5 minute idle timeout with keepalive PINGs. A 30 s path outage no longer ends the connection in tests.

    Evidence:

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions