commit | 9b79b2447671f52e2e64785f03f0f3989621cb15 | [log] [tgz] |
---|---|---|
author | Eric Orth <ericorth@chromium.org> | Tue Jul 20 20:53:18 2021 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Tue Jul 20 20:53:18 2021 |
tree | af62303ecf5c0ffc667fb21e6bf81bdd69b9563e | |
parent | 24a51efd20ebe5f9d0d8a696893f359e3667974a [diff] |
Create ProxyHostResolverCache Serves as a replacement for the net::HostCache usage in /services/proxy_resolver. Nice features of this cache over net::HostCache: * Divorced from net::HostCache to allow that class to make its own changes with less dependencies to worry about. * More performant (lg(n)) eviction when full. net::HostCache is more complicated and always needs to do a full linear scan of the entire cache. * Stale entries always removed when found. net::HostCache needs to deal with a lot more complications around keeping and sometimes using stale entries. * Key/entry types specialized to proxy usage instead of having a bunch of unused fields and requiring some conversions. * TTL logic better encapsulated instead of making callers deal with passing in times and deciding TTL. * Skips lots of net::HostCache functionality that was completely unnecessary for proxy script resolution usage. Old logic used default cache size from net::HostCache::CreateDefaultCache(), which has a max size of 100 or 1000 depending on ENABLE_BUILT_IN_DNS. But this code's caching needs has no relation to whether or not the built-in DNS resolver is being used, so I arbitrarily split the difference in setting the new cache's max size to 500. Also worth noting that the new cache is only used for positive results. HostResolverMojo previously saved error results into its net::HostCache, but it did so with a TTL of 0, resulting in the entry being stale and unusable as soon as any measurable amount of time has passed. Fixed: 1229361 Change-Id: I02f2c37f3a3419997d65d4ab90a0df31f9a23c07 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3032014 Reviewed-by: Matt Menke <mmenke@chromium.org> Commit-Queue: Eric Orth <ericorth@chromium.org> Cr-Commit-Position: refs/heads/master@{#903641}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.