diff options
author | Edward Wang <[email protected]> | 2024-09-02 20:41:50 -0700 |
---|---|---|
committer | Yuchen Wu <[email protected]> | 2024-10-11 15:40:59 -0700 |
commit | 3c3dc7ee2f207c3c2fbe712bc6a493167094df7c (patch) | |
tree | 135e86b77fd53d7fd75584eb0461df53eb595e5b | |
parent | af565b4e24f1b8e4d7f1b7224d62b8029c580496 (diff) | |
download | pingora-3c3dc7ee2f207c3c2fbe712bc6a493167094df7c.tar.gz pingora-3c3dc7ee2f207c3c2fbe712bc6a493167094df7c.zip |
Merge extensions between old and new meta on revalidate
-rw-r--r-- | .bleep | 2 | ||||
-rw-r--r-- | pingora-cache/src/lib.rs | 7 | ||||
-rw-r--r-- | pingora-cache/src/meta.rs | 2 |
3 files changed, 8 insertions, 3 deletions
@@ -1 +1 @@ -089f8397486e934dbbe045085ba3648e0bb945a5
\ No newline at end of file +08724db8653366f6eee60a3236ed9c2987402fc0
\ No newline at end of file diff --git a/pingora-cache/src/lib.rs b/pingora-cache/src/lib.rs index 8f88299..1a97041 100644 --- a/pingora-cache/src/lib.rs +++ b/pingora-cache/src/lib.rs @@ -719,10 +719,15 @@ impl HttpCache { // that requires cacheable_filter to take a mut header and just return InternalMeta // update new meta with old meta's created time - let created = inner.meta.as_ref().unwrap().0.internal.created; + let old_meta = inner.meta.take().unwrap(); + let created = old_meta.0.internal.created; meta.0.internal.created = created; // meta.internal.updated was already set to new meta's `created`, // no need to set `updated` here + // Merge old extensions with new ones. New exts take precedence if they conflict. + let mut extensions = old_meta.0.extensions; + extensions.extend(meta.0.extensions); + meta.0.extensions = extensions; inner.meta.replace(meta); diff --git a/pingora-cache/src/meta.rs b/pingora-cache/src/meta.rs index 8ed034e..fd608d4 100644 --- a/pingora-cache/src/meta.rs +++ b/pingora-cache/src/meta.rs @@ -14,7 +14,7 @@ //! Metadata for caching -use http::Extensions; +pub use http::Extensions; use pingora_error::{Error, ErrorType::*, OrErr, Result}; use pingora_http::{HMap, ResponseHeader}; use serde::{Deserialize, Serialize}; |