Age | Commit message (Collapse) | Author |
|
|
|
This prevents eviction from affecting the time to finish the request.
Also adds a Display impl for CompactCacheKey.
|
|
function
|
|
messages
|
|
The cache locks may be held after serving stale, proxy upstream filter,
or revalidate uncacheable resulting in dangling cache locks.
Also only disable cache on final error if cache was not already
disabled, and add DeclinedToUpstream / UpstreamError no cache reasons.
|
|
Includes-commit: d26d344e15bd411dd298b32ecc3e60ac233b0866
Replicated-from: https://github.com/cloudflare/pingora/pull/471
Co-authored-by: Matthew Gumport <[email protected]>
|
|
The PUT request body itself may be chunked, but normally clients send
the body that ought to be cached without chunked encoding applied.
|
|
After a request is predicted uncacheable and bypasses cache, it may
still be cached if the response is a 200. However, HEAD responses are
not normally cacheable as they don't include the actual response body.
|
|
Includes-commit: 7cee7a7e368a6e445903af1d59d92c680948ed2b
Replicated-from: https://github.com/cloudflare/pingora/pull/454
|
|
The h2 crate does not appear to check for content-length underflow if
only a header frame is received with END_STREAM.
|
|
|
|
Currently the meta is attempted to be logged in a hit span that may or
may not exist (or has not started) depending on the cache phase.
|
|
|
|
This change takes the existing API for ListenerEndpoint and modifies it to use a typical idiomatic builder style.
There are additional improvements which I feel can be made here, but I believe that it would be better to do them in subsequent commits in order to keep changes as incremental as possible.
In particular, I think that making socket options into sub-builder is probably a good move.
|
|
The rust 2021 use rust version is 1.56.0, `matches` included in the
standard library prelude and thus is automatically in scope.
Includes-commit: ebc6cbfd1039273c2b9620bd4c70a395afccfc3a
Replicated-from: https://github.com/cloudflare/pingora/pull/414
Signed-off-by: Xiaobo Liu <[email protected]>
|
|
Certain APIs consuming HTTPTasks want to know if the response has
finished. However, in cases such as protocol errors the h2 RecvStream
will return `is_end_stream` which may be associated with an HTTPTask
that was not actually the end of stream. This affects systems such as
caching which wants to know when the response has properly finished for
finishing a cache miss.
This change attempts to check if the stream has ended due to an h2 error
or not to forward a successful or Failed HTTPTask as appropriate.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Includes-commit: ac601366bd02f97c132e0c1e762e17a9c962b9a6
Includes-commit: f8f456ae72db0f78aa5823f5e4121322ecbb9816
Replicated-from: https://github.com/cloudflare/pingora/pull/442
Co-authored-by: Matthew Gumport <[email protected]>
|
|
inner cache meta is dropped
|
|
|
|
This changes the `CachePut` trait to take ownership of the response
header. We have a use-case for mutating the headers as we process the
response, and we would like to avoid copying them in order to do so.
|
|
|
|
This adds a hook during the flow where we move the write permit around
for subrequests to refresh stale assets to tag the parent span as being
part of a subrequest.
|
|
|
|
explicit option
|
|
Allow frontends to avoid jumping through hoops to create an Opt object,
for example, when configuration is handled by a config file.
Includes-commit: 8204820b217b6d60906b8361d2e077ed743b970b
Replicated-from: https://github.com/cloudflare/pingora/pull/390
|
|
The current quickstart document suggests to use pingora v0.1, but it
also suggests using the Opt::parse_args interface, which was introduced
in release v0.3.0. Update the quickstart document to suggest using v0.3
when setting up the cargo.toml file.
Addresses #432
Includes-commit: 9153a8a984d2e81304f8b7d6d338f1bfa126e5c3
Replicated-from: https://github.com/cloudflare/pingora/pull/433
|
|
|
|
Co-authored-by: Harald Gutmann <[email protected]>
|
|
We have the socket version at 0, which matches 0.3 as well. That
wont work because it doesn't have feature "all". We need 0.4+.
>=0.4, <1, should match ^0, but exclude 0.3.
Includes-commit: 98debd9f2793a77047caebf2e70684eb7ef4df14
Replicated-from: https://github.com/cloudflare/pingora/pull/413
|
|
Previously the response header filter was applied when serving from
cache (using `proxy_cache_hit`), but not the response body filter.
|
|
Co-authored-by: Matthew Gumport <[email protected]>
Includes-commit: 15e5c64ce46da5e061f2c84ce45cdddedf2f6058
Replicated-from: https://github.com/cloudflare/pingora/pull/415
|
|
|
|
|
|
Includes-commit: 5b5f2aeecf459f633b5459fffba4ad66da495a0a
Replicated-from: https://github.com/cloudflare/pingora/pull/429
|
|
For consistency when proxying h2 traffic to h1.
|
|
This adds the into_inner() function to the stream type, allowing
the HTTP/1.1 client and server to be turned back into a stream.
These functions are useful for implementing HTTP CONNECT or
HTTP Upgrade.
Includes-commit: 95aa77098cdfc7667074f2793cd326f496da66a1
Replicated-from: https://github.com/cloudflare/pingora/pull/412
|
|
This change fixes an issue that the actual current max send streams is
ignored.
This change requires h2 >= 0.4.6
|
|
Previously clients to the cache put interface writing excess response
body payloads (or bodies for responses that shouldn't have bodies) could
trigger a panic in the body parser. This change opts to just drain these
excess payloads without writing the excess body into cache.
|
|
|
|
Co-authored-by: Harald Gutmann <[email protected]>
|
|
Includes-commit: cd6f77726b2a5ca57f885af360de2ad0de788e87
Replicated-from: https://github.com/cloudflare/pingora/pull/402
Signed-off-by: spacewander <[email protected]>
|
|
When a downstream error occurs while a cache miss is being served, the
downstream error is ignored so the upstream can continue writing to the
cache. However, it is not safe to try reusing the server session in this
case.
|
|
This allows h2c and http1 to co-exist on the same port.
|
|
|