Commit graph

210 commits

Author SHA1 Message Date
spacewander
6c8e7aab73 document early_request_filter
Fix #363
---
updated

Includes-commit: 204ddb0274
Includes-commit: 34c67f0aca
Replicated-from: https://github.com/cloudflare/pingora/pull/368
Signed-off-by: spacewander <spacewanderlzx@gmail.com>
2024-09-13 14:11:24 -07:00
James Yang
2a4e152e80 fix(proxy): typo in example
Includes-commit: 9b1d7c544d
Replicated-from: https://github.com/cloudflare/pingora/pull/371
2024-09-13 14:11:24 -07:00
Edward Wang
96e561a999 Allow miss handler to lookup storage using streaming write tag
When supporting streaming partial writes, the cache miss request may not
always find the corresponding body reader for the storage asset that its
upstream write is trying to fill.

This change adds a lookup_streaming_write storage API and allows the
miss handler to provide a streaming write tag for use with the API, so
that it may find the matching hit handler to serve downstream.
2024-09-13 14:11:24 -07:00
Yuchen Wu
059768551c Windows support 2/n: Support FD types on different platforms 2024-09-13 14:11:24 -07:00
Matthew Gumport
e288bfe8f0 change lock status memory ordering, tag spans
This changes the memory ordering for the lock status load to `SeqCst` from
`Relaxed` to eliminate a potential source of panics.

Panics had the frames:
```
pingora_proxy::proxy_cache::<T>::handle_lock_status (proxy_cache.rs:748)
pingora_proxy::proxy_cache::<T>::proxy_cache::{{closure}} (proxy_cache.rs:211)
pingora_proxy::HttpProxy<T>::process_request::{{closure}} (lib.rs:509)
pingora_proxy::HttpProxy<T>::process_new_http::{{closure}} (lib.rs:727)
```

which showed we were checking on the status of the lock, after waiting on it,
and still seeing its status as waiting. The status is returned by value, so this
is not a time-of-check to time-of-use problem, this is an inconsistency in how
the lock status is managed. The change in memory order is mostly for the sake of
this programmer's attempts to understand what is happening.

This also completes a couple of TODOs to limit the wait period as well as tag
the span with the lock status.
2024-09-06 13:43:53 -07:00
Matthew Gumport
5e3e774a8d disable caching during error handling
This has the effect of reducing a warning log since we are not
leaving the lock dangling for the next reader.
2024-09-06 13:43:53 -07:00
Allan
4446912080 Fix Opt::parse_args doc typo
Includes-commit: 9a934bc8ba
Replicated-from: https://github.com/cloudflare/pingora/pull/360
2024-09-06 13:43:53 -07:00
Yuchen Wu
5a4a2883ad docs: fix doc comment for request_summary
Co-authored-by: Derek Argueta <darguetap@gmail.com>
2024-09-06 13:43:53 -07:00
Zero King
61700443bf Replace non-breaking space with regular space
Includes-commit: 0560e0ff05
Replicated-from: https://github.com/cloudflare/pingora/pull/356
2024-09-06 13:43:53 -07:00
Matthew Gumport
444186eb71 unset meta on cache miss
If we have a cache miss, any meta in this object is invalid. Unset
it so that we don't use it later.
2024-09-06 13:43:53 -07:00
Andrew Hauck
d1d7a87b76 Add support for binding to local port ranges and retrying on EADDRNOTAVAIL 2024-09-06 13:43:53 -07:00
James Munns
acffb8aaf2 Add error log when attempting to upgrade
I was attempting to test upgrades on MacOS, and was a bit confused at the ECONNREFUSED error.

Having this log would help others avoiding troubleshooting this until it is supported.

Includes-commit: 6f80ce2f7a
Replicated-from: https://github.com/cloudflare/pingora/pull/327
2024-08-30 11:18:18 -07:00
Yuchen Wu
f3a5a85031 Windows support 1/n: clean up cargo and certain tests
Co-authored-by: Fredrik Enestad <fredrik@enestad.com>
2024-08-30 11:18:18 -07:00
Kevin Guthrie
e564cd535a Refactor boringssl_openssl into submodules in preparation for rustls integration 2024-08-30 11:18:18 -07:00
Edward Wang
4f45792d80 Weaken or remove etags when downstream compression applies
Allow this as an adjustable setting to preserve etag when
(de)compressing. The default is to weaken etags whenever a compression
module applies.
2024-08-30 11:18:18 -07:00
Kevin Guthrie
1b9e8eead1 Refactor module into and relocate the no-op tls module 2024-08-30 10:03:14 -07:00
Wladimir Palant
d8f3ffae77 Add a dummy TLS implementation to be used as fallback
---
Added some more exports used by the server example

Includes-commit: d7be54bbb5
Includes-commit: e36e6e7194
Replicated-from: https://github.com/cloudflare/pingora/pull/277
2024-08-23 17:53:13 -04:00
Andrew Hauck
6214b8d919 Add more tests for setting vary response header 2024-08-23 17:53:13 -04:00
Wladimir Palant
55049c4e79 Fixes #229, #233 – Set proper response headers when compression is enabled
---
Merge branch 'main' into compression-headers
---
Updated “compression enabled” check for recent changes
---
Fixed clippy warning
---
Reverted changes related to Accept-Ranges header
---
Handle multiple Vary headers
---
Merged main branch

Includes-commit: 4ea0c3ff10
Includes-commit: 78f09b29d7
Includes-commit: 973d5969e4
Includes-commit: 9f82578858
Includes-commit: d6e94c93f1
Includes-commit: e88fdb8a37
Includes-commit: f647f04bf1
Replicated-from: https://github.com/cloudflare/pingora/pull/286
2024-08-23 17:53:13 -04:00
Andrew Hauck
91702bb0c0 Make l4 module pub to expose Connect 2024-08-23 17:53:13 -04:00
Edward Wang
d425379ae3 Edit github workflow to run audit on latest stable only
cargo-audit now has an MSRV of 1.74 > ours. We only need to run audit on
at least one toolchain, anyhow.
2024-08-19 20:23:44 -07:00
Matthew Gumport
b0bd0fb0c9 fixup sentry unwrap
Don't unconditionally unwrap Sentry, guard it with a default value.
2024-08-16 10:36:11 -07:00
Matthew Gumport
07a970e413 add support for passing sentry release
This changes the Sentry field from the DSN string to the entire ClientOptions
struct. This will let us pass more information to the client SDK, including the
git-parsed version information.
2024-08-16 10:36:11 -07:00
Matthew Gumport
fba2c1df11 move cargo config to toml 2024-08-16 10:36:11 -07:00
Congyu WANG
a1f7b62367 fix h2 request_summary
---
also add port number
---
also print query with path for h2 just as h1

Includes-commit: 2df4e29e18
Includes-commit: 53e1810a27
Includes-commit: 8102a0900b
Replicated-from: https://github.com/cloudflare/pingora/pull/345
2024-08-16 10:36:11 -07:00
Andrew Hauck
50c3687e83 Add documentation on HealthObserve trait 2024-08-09 14:30:49 -07:00
vicanso
8a0c73f174 Support observe backend health status #225
---
test: add test for upstream health observe
---
renamed the function and added doc to make it intelligible
---
fix clippy error
---
Merge branch 'main' into main
---
test: fix test for backend do update

Co-authored-by: Tree Xie <tree.xie@outlook.com>
Includes-commit: 1421c26756
Includes-commit: 695d549014
Includes-commit: 6a09b52c5e
Includes-commit: 72d6ee09ae
Includes-commit: e6c2af0e77
Includes-commit: fb62869583
Replicated-from: https://github.com/cloudflare/pingora/pull/325
2024-08-09 14:30:49 -07:00
Kevin Guthrie
24d722920a Derive Ord and PartialOrd for CompactCacheKey 2024-08-09 14:30:49 -07:00
Edward Wang
7003ac34ad Set stale-updating as an explicit CachePhase
This cache phase indicates when we are serving a stale cache hit, but
there is another request currently updating the asset.
2024-08-09 14:30:49 -07:00
v1xingyue
35810d6c92 add new_with_weight
---
use weight as param
---
fix format and doc comment
---
add ext as Extensions::new
---
Merge branch 'main' into ~~~

Includes-commit: 0d4a658cf8
Includes-commit: 1ee9b327b4
Includes-commit: 5b05294e24
Includes-commit: cf8faea7d0
Includes-commit: f0cefff7eb
Replicated-from: https://github.com/cloudflare/pingora/pull/333
2024-08-09 14:30:49 -07:00
Kevin Guthrie
76c4fdacbb Updating the rate-limiter documentation with a simpler example 2024-08-09 14:30:49 -07:00
xialeistudio
ef5ed1af3b docs: add docs for RateLimiter
---
Update docs/user_guide/ratelimiter.md
---
docs: add upstream_request_filter to fix forbidden error of RateLimiter
---
Update ratelimiter.md

update rate_limiter_map initialize code

Co-authored-by: Dany Gagnon <ddanygagnon@gmail.com>
Co-authored-by: Xia Lei <xialeistudio@gmail.com>
Includes-commit: 461d384966
Includes-commit: 80231711f9
Includes-commit: 99ed87f309
Includes-commit: bffc9f4f23
Replicated-from: https://github.com/cloudflare/pingora/pull/120
2024-08-09 14:30:49 -07:00
Edward Wang
e1c6e57db3 Add un-gzip support and allow decompress by algorithm 2024-08-09 14:30:49 -07:00
Edward Wang
e5fda7c657 Allow Stale phase in cache_miss
There could be a race condition where a Stale request waiting on cache
lock retries the cache lock and lookup, but enters cache_miss after
finding the asset is no longer present.
2024-08-09 14:30:49 -07:00
Nathan Prescott
e0ade326ed Updated flurry and quick_cache (flurry being the only relavent change)
---
Specified quick_cache version because older version was being loaded on build

Includes-commit: 3f5419e92d
Includes-commit: de83f0a612
Replicated-from: https://github.com/cloudflare/pingora/pull/248
2024-08-09 14:30:49 -07:00
Yuchen Wu
11b5882a42 Retry all h2 connection when encountering graceful shutdown
Before this change, the retry only happens on reused connections. The
shutting down could also happen on new connections as well. So this
change will retry in both cases.
2024-08-09 14:30:49 -07:00
Yuchen Wu
2a080423cd Use Rust 1.80 2024-08-09 14:30:49 -07:00
Yuchen Wu
9f50e6ccb0 Handle bare IPv6 address in raw connect Host 2024-08-09 14:30:49 -07:00
Yuchen Wu
29746f6968 Upgrade latest Rust to 1.80 2024-08-02 12:08:38 -07:00
Yuchen Wu
8af7348958 Allow unknown links 2024-07-26 13:35:13 -07:00
Yuchen Wu
32303b9258 Address Rust 1.80 clippy warnings.
Also remove the doc_async_trait cfg since it is no longer viable.
2024-07-26 13:35:13 -07:00
Yuchen Wu
ff2582a64a Fix a rebase merge error 2024-07-26 13:35:13 -07:00
Andrew Hauck
be97e35031 Add ability to ignore informational responses when proxying downstream 2024-07-26 13:35:13 -07:00
Yuchen Wu
999e379064 Support opaque extension field in Backend
Sometimes service dicovery can carry arbitrary information, such as
SNI and request path to instrument how to connect to backend servers.

Backend now support to carry this type of information.
2024-07-26 13:35:13 -07:00
Andrew Hauck
a51874039f Add callback function to Backends update() to address atomicity issue when building selector 2024-07-26 13:35:13 -07:00
Yuchen Wu
7c122e7f36 Add the support for custom L4 connector
This allows user defined L4 connect() to be used so that they can
customize the connect behavior such as changing socket options and
simulating errors in tests.
2024-07-26 13:35:13 -07:00
pluveto
60787db4a1 chore(openssl): Update OpenSSL function signatures to use *mut instead of *const
This PR updates the function signatures in the `ext.rs` file to use `*mut` instead of `*const` for the `ssl` and `cert` parameters in the `SSL_use_certificate` and `SSL_use_PrivateKey` functions. This indicates that the functions can modify the SSL and certificate objects as intended.

Ref:
- https://www.openssl.org/docs/man1.1.1/man3/SSL_use_certificate.html
https://boringssl.googlesource.com/boringssl/+/refs/tags/~~~/ssl/ssl_cert.cc#292

Refactor the `cvt` function to use `c_long` instead of `c_int` for the return type for better compatibility with the types used in the OpenSSL library.

Also, add a test case for the `ssl_set_groups_list` function to ensure it handles valid and invalid input correctly.
---
chore(openssl):fix increase X509 reference count

Includes-commit: 7841271b4a
Includes-commit: e132431889
Replicated-from: https://github.com/cloudflare/pingora/pull/308
2024-07-26 13:35:13 -07:00
Wladimir Palant
18db42cd2c Fixes #311 - Make timeouts Sync
Includes-commit: 3faed99e26
Replicated-from: https://github.com/cloudflare/pingora/pull/312
2024-07-26 13:35:13 -07:00
Yuchen Wu
9220e6be2d Fix bleep commit hash 2024-07-26 09:42:33 -07:00
Yuchen Wu
42a847d372 Update 0.3.0 CHANGELOG 2024-07-12 16:55:19 -07:00