Skip to content

Conversation

hslatman
Copy link
Member

@hslatman hslatman commented Jan 7, 2025

The integration test checking for request IDs to be reflected depends on a test CA server to be started and running. At times (see this case with a few attempts) the CA healthcheck would fail the test, presumably because the CA server was not running yet. This PR checks the connection a few times before failing the test.

@github-actions github-actions bot added the needs triage Waiting for discussion / prioritization by team label Jan 7, 2025
@hslatman hslatman added this to the v0.28.2 milestone Jan 7, 2025
@hslatman hslatman force-pushed the herman/unflake-request-id-integration-test branch 2 times, most recently from 0af6425 to 018b51e Compare January 7, 2025 01:31
@hslatman hslatman force-pushed the herman/unflake-request-id-integration-test branch from 018b51e to c2a6b5b Compare January 7, 2025 01:32
@hslatman hslatman requested review from a team and dopey January 7, 2025 01:36
Comment on lines 312 to 320
d := net.Dialer{Timeout: 5 * time.Second}
conn, err := d.DialContext(ctx, "tcp", address)
if err != nil {
return false
}

conn.Close()

return true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's faster if you just re-dial every 100ms, since you avoid running into TCP's exponential backoff.

Also, if the server isn't bound to the port yet, the kernel might send you a RST in response to the SYN immediately, which would make DialContext fail immediately.

Copy link
Member Author

@hslatman hslatman Jan 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Returning an error immediately is OK, and kind of what I want. The CA server is started (or not, yet) in a different goroutine. The goal is to wait for it to become available before continuing the test, and a failure to connect here indicates it's not yet available.

}

func canConnect(ctx context.Context, address string) bool {
d := net.Dialer{Timeout: 5 * time.Second}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why hardcode a timeout, if you're dialing with a context anyway?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair point. Added it out of habit. b3fb927.

@hslatman hslatman requested review from a team, azazeal and marten-seemann January 7, 2025 11:14
@hslatman hslatman merged commit 47c08d5 into master Jan 8, 2025
13 checks passed
@hslatman hslatman deleted the herman/unflake-request-id-integration-test branch January 8, 2025 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs triage Waiting for discussion / prioritization by team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants