Skip to content

Add option 3 to connect down policy#12928

Open
vmamidi wants to merge 7 commits intoapache:masterfrom
vmamidi:connect_down_policy
Open

Add option 3 to connect down policy#12928
vmamidi wants to merge 7 commits intoapache:masterfrom
vmamidi:connect_down_policy

Conversation

@vmamidi
Copy link
Contributor

@vmamidi vmamidi commented Feb 27, 2026

Add option 3 to connect down policy to count inactive connections as failures

@vmamidi vmamidi changed the title Add option 3 to connect down policy to Add option 3 to connect down policy Feb 27, 2026
@vmamidi vmamidi requested a review from Copilot February 27, 2026 21:15
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new proxy.config.http.connect.down.policy value (3) intended to treat origin server inactivity timeouts (after a connection is established) as failures for the purposes of marking an origin down.

Changes:

  • Extend HttpSM::track_connect_fail() to recognize connect_down_policy == 3, including an additional timeout-based condition.
  • Update admin documentation to describe the new policy value 3.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
src/proxy/http/HttpSM.cc Updates server-down tracking logic to treat policy 3 as “policy 2 + inactivity timeout” behavior.
doc/admin-guide/files/records.yaml.en.rst Documents the new connect.down.policy = 3 option and its intended effect.

@zwoop zwoop added this to the 11.0.0 milestone Feb 27, 2026
@vmamidi vmamidi requested a review from Copilot February 27, 2026 23:09
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated no new comments.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

vmamidi and others added 2 commits February 27, 2026 18:19
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

@bryancall bryancall self-requested a review March 2, 2026 22:40
// What does our policy say?
if (t_state.txn_conf->connect_down_policy == 2) { // Any connection error through TLS handshake
if (t_state.txn_conf->connect_down_policy == 2 ||
t_state.txn_conf->connect_down_policy == 3) { // Any connection error through TLS handshake
Copy link
Contributor

@masaori335 masaori335 Mar 3, 2026

Choose a reason for hiding this comment

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

I prefer to make this config bit mask, it'll allow us to choose combination of policies when we have more policies.

Copy link
Contributor

@bryancall bryancall left a comment

Choose a reason for hiding this comment

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

LGTM. Clean change — policy 3 correctly extends policy 2 by adding the INACTIVE_TIMEOUT check outside the had_connect_fail() guard, since connect_result is cleared when the connection transitions to CONNECTION_ALIVE. The test is well done with both positive (policy=3 marks down) and negative (policy=2 does not) cases. Docs are clear.

Re: Copilot comment about t_state.current.server->state vs t_state.current.state — both fields get set to INACTIVE_TIMEOUT via different handlers (tunnel handlers set server->state, while handle_server_setup_error and tunnel_handler_post_server set current.state). The check is correct as written.

Re: bitmask suggestion — the failure modes here are hierarchical, not orthogonal (TCP is required for TLS, and a successful connection is required for inactive timeout), so an enum/level approach is the right model. A bitmask would allow expressing meaningless combinations like TLS only without TCP.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants