Cherry-picks for 10.2.1 - #13585
Merged
Merged
Conversation
The records_yaml AuTest intermittently reported that proxy.config.diags.output.note was missing when a configuration callback ran while startup was still registering metrics. Metrics::find() returned the then-current end iterator for a miss, but RecLookupRecord() compared it with a new end iterator. An intervening registration made them differ and misread the missing string record as a numeric metric. This patch addresses the race by using the direct metrics lookup API, which reports a miss without comparing two moving end positions. It also adds a concurrent registration test that exercises string record lookups during metric creation. (cherry picked from commit 1372b5e)
The YAML parser reads max_age with an underscore, in three places: the queue node (limiter.h), the ip-rep node and its perma-block sub-node (ip_reputation.cc). Every mention in the documentation spelled it max-age, including the three worked examples, so a configuration copied from the docs left all three at their default of 0 and silently disabled queue expiry and both IP-reputation aging paths. The --maxage pparam description also referred to a "max-age" that matches neither the option nor the key, so it now just says maximum age. (cherry picked from commit 46ef875)
…#13238) The plugin read TSHttpTxnCacheLookupUrlGet at POST_REMAP, but the core does not initialize the cache lookup URL until HttpTransact::HandleRequest runs after POST_REMAP returns. The call therefore failed unless a plugin like cachekey was called earlier and populated the URL via TSHttpTxnCacheLookupUrlSet, making prefetch silently dependent on cachekey's presence and remap ordering. Acquire the cache key at CACHE_LOOKUP_COMPLETE instead, which is the first hook where the lookup URL is guaranteed to be set. On transactions where ATS skips cache lookup (non-cacheable methods, internal redirects, cache disabled), the front-end first-pass admission acquire no longer fires. TXN_CLOSE release is gated on _fetchable, so acquire/release symmetry is preserved. Also fix a missing release in the second-pass acquire/uniqueAcquire sequence: if uniqueAcquire fails after acquire succeeds, release the acquired cache key to avoid orphaning it in the policy LRU. The four existing prefetch autests all pair cachekey.so ahead of prefetch.so and would have passed with or without this fix. Adds prefetch_no_cachekey.test.py to regression-cover the standalone case. (cherry picked from commit 9874457)
* compress: add Vary to cached client responses * rename function to add_vary_header_to_server_response (cherry picked from commit 4676308)
…apache#13506) (cherry picked from commit 169e2f1)
AuTest's Streams entity defines All, not all, and does not override __setattr__, so every `Streams.all = ...` assignment created a dead instance attribute rather than registering a tester. Twelve assertions across seven gold tests had never run, and two of the expectations behind them had rotted unnoticed as a result. This patch renames those assignments to Streams.All so the assertions register, and corrects the two expectations they exposed: a gold file that opened with three backticks rather than the two that mark an AuTest wildcard, and a test that left outbound server verification at the default ENFORCED while its origin serves a self-signed certificate. Co-authored-by: Claude Opus 5 <noreply@anthropic.com> (cherry picked from commit 1b31fdf)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cherry-picks for the 10.2.1 release, taken from the PRs at status
For v10.2.1in the
ATS v10.2.xproject. Applied in master merge order.#13506 conflict resolution
include/proxy/http/OverridableConfigDefs.handinclude/ts/apidefs.h.inconflictedbecause master carries
HTTP_CACHE_MAX_STALE_AGE_PERCENT/TS_CONFIG_HTTP_CACHE_MAX_STALE_AGE_PERCENT, which does not exist on 10.2.x. Only the twoentries the PR actually adds were taken:
HTTP_PER_SERVER_CONNECTION_METRIC_ENABLEDHTTP_PER_SERVER_CONNECTION_METRIC_AGGREGATEBoth are appended immediately before
TS_CONFIG_LAST_ENTRY, so the plugin API enum staysbackward compatible. Every other file in this pick matches the upstream diff byte for byte.
This pick builds on #13505, which is already on 10.2.x.
Local verification
cmake --build build-autest -- -k 0— cleanctest -j4— 166/167 pass; onlytest_jsonrpcserverfails, a known macOS-localunix-socket/restart timing issue, not a regression from these picks.
Not picked
Six other items are at
For v10.2.1but their PRs are still open, so there is nothing topick yet: #12825, #13063, #13086, #13196, #13355, #13450.