fn validate_cache_pairs(
policy_nodes: &[NodeConfig],
) -> Result<Vec<CachePairWarning>, String>Expand description
Checks that every proxy-cache pair agrees about where it caches.
The two halves of a pair are linked only by their shared id; nothing
else ties them together. If they disagree about policy or store, the
store half writes somewhere the lookup half never reads, and the route
compiles, serves traffic, and returns a permanent 100% miss with no error
anywhere – it simply looks like a cache that is never warm. There is no
configuration for which that is correct, so it is refused.
A half with no counterpart is returned as a warning instead: equally useless, but also what a policy looks like halfway through being built.