Skip to content

Commit

Permalink
document early_request_filter
Browse files Browse the repository at this point in the history
Fix #363
---
updated

Includes-commit: 204ddb0
Includes-commit: 34c67f0
Replicated-from: #368
Signed-off-by: spacewander <spacewanderlzx@gmail.com>
  • Loading branch information
spacewander authored and gdavidsson committed Sep 13, 2024
1 parent 2a4e152 commit 6c8e7aa
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 7 deletions.
2 changes: 1 addition & 1 deletion .bleep
Original file line number Diff line number Diff line change
@@ -1 +1 @@
265d5245705c6f762c7dd37536f9d1c61d2d8af9
6923a7f31ed6fff1ddaf00ffb8dd56311042c395
8 changes: 6 additions & 2 deletions docs/user_guide/phase.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ The pingora-proxy HTTP proxy framework supports highly programmable proxy behavi
Pingora-proxy allows users to insert arbitrary logic into the life of a request.
```mermaid
graph TD;
start("new request")-->request_filter;
start("new request")-->early_request_filter;
early_request_filter-->request_filter;
request_filter-->upstream_peer;
upstream_peer-->Connect{{IO: connect to upstream}};
Expand Down Expand Up @@ -52,9 +53,12 @@ Pingora-proxy allows users to insert arbitrary logic into the life of a request.
* The reason both `upstream_response_*_filter()` and `response_*_filter()` exist is for HTTP caching integration reasons (still WIP).


### `request_filter()`
### `early_request_filter()`
This is the first phase of every request.

This function is similar to `request_filter()` but executes before any other logic, including downstream module logic. The main purpose of this function is to provide finer-grained control of the behavior of the modules.

### `request_filter()`
This phase is usually for validating request inputs, rate limiting, and initializing context.

### `proxy_upstream_filter()`
Expand Down
3 changes: 2 additions & 1 deletion docs/user_guide/phase_chart.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
Pingora proxy phases without caching
```mermaid
graph TD;
start("new request")-->request_filter;
start("new request")-->early_request_filter;
early_request_filter-->request_filter;
request_filter-->upstream_peer;
upstream_peer-->Connect{{IO: connect to upstream}};
Expand Down
6 changes: 3 additions & 3 deletions pingora-proxy/src/proxy_trait.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ pub trait ProxyHttp {

/// Handle the incoming request before any downstream module is executed.
///
/// This function is similar to [Self::request_filter()] but execute before any other logic
/// especially the downstream modules. The main purpose of this function is to provide finer
/// grained control of behavior of the modules.
/// This function is similar to [Self::request_filter()] but executes before any other logic,
/// including downstream module logic. The main purpose of this function is to provide finer
/// grained control of the behavior of the modules.
///
/// Note that because this function is executed before any module that might provide access
/// control or rate limiting, logic should stay in request_filter() if it can in order to be
Expand Down

0 comments on commit 6c8e7aa

Please sign in to comment.