aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2024-10-11Surface sentry feature at pingora crateYuchen Wu
2024-10-11Rust 1.81Yuchen Wu
2024-10-07Make sentry an optional featureKevin Guthrie
2024-10-07Stream able to configure rx timestamp readingDaniel Dao
This allows us to optionally enable rx timestamp reading logic per stream by calling `set_rx_timestamp`. When rx timestamp is disabled, the standard battle-tested logic is used.
2024-10-07support retrieving rx timestamp for TcpStreamDaniel Dao
Documentation: https://docs.kernel.org/networking/timestamping.html This modifies Stream type to be able to setup rx timestamp on its socket, and use `recvmsg` to read the returned timestamp. The rx timestamp of the last recvmsg is stored as `rx_ts` In the context of tcp stream, if the returned byte range spans multiple timestamps, the last one is returned.
2024-10-07Safe guard for empty alpn.Yuchen Wu
Per ~~~-5535: it is not safe to call SSL_select_next_proto() with invalid alpn_in. Although our code is safe because it is only used via set_alpn_select_callback which performs the check, an additional guard is added just in case these functions are used in other context.
2024-10-07Add function for custom rate measurementsKevin Guthrie
2024-10-07A couple of error message nitsGustav Davidsson
2024-09-23Update semgrep.ymlhrushikeshdeshpande
Updating existing Semgrep.yml file - Semgrep is a tool that will be used to scan Cloudflare's public repos for Supply chain, code and secrets. This work is part of Application & Product Security team's initiative to onboard Semgrep onto all of Cloudflare's public repos. In case of any questions, please reach out to "Hrushikesh Deshpande" on cf internal chat.
2024-09-23Add support for gRPC-web module to bridge gRPC-web client requests to gRPC ↵Andrew Hauck
server requests
2024-09-23pingora-limits - Rate Estimator hashes & slots configurationPaweł Jastrzebski
--- fix cargo fmt check Includes-commit: 19eeddcfbf0f4a7e4dc96cf4782143e96f54b371 Includes-commit: 41987023f175942be8f47ede18ada85b20993cca Replicated-from: https://github.com/cloudflare/pingora/pull/380
2024-09-23Only run clippy on the latest stable RustYuchen Wu
Otherwise it requires extra attention for deprecated clippy rules
2024-09-19Adding semgrep yaml fileHrushikesh Deshpande
2024-09-13document early_request_filterspacewander
Fix #363 --- updated Includes-commit: 204ddb02743445e6204858b4df3ea3f28fa1911c Includes-commit: 34c67f0acae52ce94a3a6d5696e0847e63b42be7 Replicated-from: https://github.com/cloudflare/pingora/pull/368 Signed-off-by: spacewander <[email protected]>
2024-09-13fix(proxy): typo in exampleJames Yang
Includes-commit: 9b1d7c544d45f88db55cc9ac118a8f60e8ef84b9 Replicated-from: https://github.com/cloudflare/pingora/pull/371
2024-09-13Allow miss handler to lookup storage using streaming write tagEdward Wang
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-13Windows support 2/n: Support FD types on different platformsYuchen Wu
2024-09-06change lock status memory ordering, tag spansMatthew Gumport
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-06disable caching during error handlingMatthew Gumport
This has the effect of reducing a warning log since we are not leaving the lock dangling for the next reader.
2024-09-06Fix `Opt::parse_args` doc typoAllan
Includes-commit: 9a934bc8baa4e8b05639f6aa71ca9695832986f0 Replicated-from: https://github.com/cloudflare/pingora/pull/360
2024-09-06docs: fix doc comment for request_summaryYuchen Wu
Co-authored-by: Derek Argueta <[email protected]>
2024-09-06Replace non-breaking space with regular spaceZero King
Includes-commit: 0560e0ff05481465e926766ba1d6791c12a96944 Replicated-from: https://github.com/cloudflare/pingora/pull/356
2024-09-06unset meta on cache missMatthew Gumport
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-06Add support for binding to local port ranges and retrying on EADDRNOTAVAILAndrew Hauck
2024-08-30Add error log when attempting to upgradeJames Munns
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: 6f80ce2f7a5dd97e174916d8efc4864366eca790 Replicated-from: https://github.com/cloudflare/pingora/pull/327
2024-08-30Windows support 1/n: clean up cargo and certain testsYuchen Wu
Co-authored-by: Fredrik Enestad <[email protected]>
2024-08-30Refactor `boringssl_openssl` into submodules in preparation for rustls ↵Kevin Guthrie
integration
2024-08-30Weaken or remove etags when downstream compression appliesEdward Wang
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-30Refactor module into and relocate the no-op tls moduleKevin Guthrie
2024-08-23Add a dummy TLS implementation to be used as fallbackWladimir Palant
--- Added some more exports used by the server example Includes-commit: d7be54bbb5c0c3465eef09d0545988b34b725f4f Includes-commit: e36e6e719450bc445c383d501aacc02bff6695e5 Replicated-from: https://github.com/cloudflare/pingora/pull/277
2024-08-23Add more tests for setting vary response headerAndrew Hauck
2024-08-23Fixes #229, #233 – Set proper response headers when compression is enabledWladimir Palant
--- 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: 4ea0c3ff10fad0a27f798dcdf3f797294af89d80 Includes-commit: 78f09b29d7a6f04b2647879855e91a3cf3744fb1 Includes-commit: 973d5969e4210b1a86e69e75d74caabb44109a8a Includes-commit: 9f82578858e5ba167badc81cf347fb70bbf7f41a Includes-commit: d6e94c93f1cdd9ca3ab8e3829d65af6f265ce627 Includes-commit: e88fdb8a3721bb38c476b0d825d271b013069df7 Includes-commit: f647f04bf1db2b63788a837a5ab5a6f3030d209e Replicated-from: https://github.com/cloudflare/pingora/pull/286
2024-08-23Make l4 module pub to expose ConnectAndrew Hauck
2024-08-19Edit github workflow to run audit on latest stable onlyEdward Wang
cargo-audit now has an MSRV of 1.74 > ours. We only need to run audit on at least one toolchain, anyhow.
2024-08-16fixup sentry unwrapMatthew Gumport
Don't unconditionally unwrap Sentry, guard it with a default value.
2024-08-16add support for passing sentry releaseMatthew Gumport
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-16move cargo config to tomlMatthew Gumport
2024-08-16fix h2 request_summaryCongyu WANG
--- also add port number --- also print query with path for h2 just as h1 Includes-commit: 2df4e29e180f5e79bee04aa4b4d83536e9f7f3a4 Includes-commit: 53e1810a27de581f6d5a9606198d9ac443f4a63c Includes-commit: 8102a0900bf30bf740e58c3a541bb86d296eb660 Replicated-from: https://github.com/cloudflare/pingora/pull/345
2024-08-09Add documentation on HealthObserve traitAndrew Hauck
2024-08-09Support observe backend health status #225vicanso
--- 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 <[email protected]> Includes-commit: 1421c267563f0161624e7dcc00a8f8d7be86d8b8 Includes-commit: 695d5490142945e11effe6ab87f4785ee0c7e4ab Includes-commit: 6a09b52c5e8b710c9fa4e0ac75420edd73556897 Includes-commit: 72d6ee09ae7488a372180cbf2b57f19d76eb8697 Includes-commit: e6c2af0e77283f73c785e73a702d739f4d5a8da0 Includes-commit: fb62869583667a220fab019bec8d7a80ef3caba2 Replicated-from: https://github.com/cloudflare/pingora/pull/325
2024-08-09Derive `Ord` and `PartialOrd` for `CompactCacheKey`Kevin Guthrie
2024-08-09Set stale-updating as an explicit CachePhaseEdward Wang
This cache phase indicates when we are serving a stale cache hit, but there is another request currently updating the asset.
2024-08-09add new_with_weightv1xingyue
--- use weight as param --- fix format and doc comment --- add ext as Extensions::new --- Merge branch 'main' into ~~~ Includes-commit: 0d4a658cf83e4c1c6ab90ab79bbc147035357bc6 Includes-commit: 1ee9b327b499328850d2b88d774dfc4241b19015 Includes-commit: 5b05294e244b191c2505928474344f6004469768 Includes-commit: cf8faea7d08513acd11ba3c53dbfe0528c6b7621 Includes-commit: f0cefff7eb3ba2bdc73fc3e7655bb9a8bbdd22cb Replicated-from: https://github.com/cloudflare/pingora/pull/333
2024-08-09Updating the rate-limiter documentation with a simpler exampleKevin Guthrie
2024-08-09docs: add docs for RateLimiterxialeistudio
--- 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 <[email protected]> Co-authored-by: Xia Lei <[email protected]> Includes-commit: 461d384966601a5fae60384cb0fef3fac9442218 Includes-commit: 80231711f9d85ee63a363c28a965acc86281b8df Includes-commit: 99ed87f309b7d550b6a97af1c528a5849c020342 Includes-commit: bffc9f4f23c51feff64a1f6d3e9bfe8680e154d1 Replicated-from: https://github.com/cloudflare/pingora/pull/120
2024-08-09Add un-gzip support and allow decompress by algorithmEdward Wang
2024-08-09Allow Stale phase in cache_missEdward Wang
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-09Updated flurry and quick_cache (flurry being the only relavent change)Nathan Prescott
--- Specified quick_cache version because older version was being loaded on build Includes-commit: 3f5419e92d64769534e3ab6f497ee938f07616fa Includes-commit: de83f0a6122aa9be637faf4e7ed0c3f73d20a78c Replicated-from: https://github.com/cloudflare/pingora/pull/248
2024-08-09Retry all h2 connection when encountering graceful shutdownYuchen Wu
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-09Use Rust 1.80Yuchen Wu