feat(on-early-drop): Add middleware for client early drop detection#636
Open
fbergero wants to merge 1 commit intotower-rs:mainfrom
Open
feat(on-early-drop): Add middleware for client early drop detection#636fbergero wants to merge 1 commit intotower-rs:mainfrom
fbergero wants to merge 1 commit intotower-rs:mainfrom
Conversation
Introduces a new middleware that detects when a client disconnects before receiving a full response. This allows for monitoring and logging of early connection terminations. Fixes tower-rs#396
0477f9b to
0828576
Compare
|
cc @tottoto can you review? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add on-early-drop middleware for client early drop detection
Introduces a new middleware that detects when a client disconnects before receiving a full response. This allows for monitoring and logging of early connection terminations.
Fixes #396
Motivation
When clients disconnect before receiving a complete response (e.g., due to browser navigation, timeouts, or network issues), the entire future chain is typically dropped with no indication of what happened. This creates "disappearing requests" that never show up in logs or metrics, making it difficult to:
Solution
This PR introduces two main components:
1. OnEarlyDropGuard
A standalone guard that executes a callback function when dropped, unless explicitly marked as completed:
2. OnEarlyDropLayer/Service
A Tower middleware that applies early drop detection to HTTP services:
This implementation enables various use cases: