Skip to content

Conversation

@derrickstolee
Copy link

@derrickstolee derrickstolee commented Jan 5, 2026

I'm exploring ideas around a new cache-server infrastructure. One of the trickiest parts of deploying new infrastructure is the need to have all endpoints ready to go at launch without incremental learning.

This change adds new gvfs.<verb>.cache-server config keys that allow for verb-by-verb overrides of the typical gvfs.cache-server config key. These are loaded on a per-verb basis and then reset after the request. Further, if there is a failure then the request is retried with the base cache-server URL.

This would allow us to, for example, deploy a service that serves only the gvfs/prefetch endpoint and see if that is improving on latency and throughput expectations before moving on to the GET and POST verbs for single and batched object downloads.

As I was adding tests, I realized that we should split this test script into distinct parts so we can have a faster inner loop when testing specific areas. I know that this script is frequently the longest script running in our PR and CI builds, so the parallel split should help significantly.

Use commit-by-commit review. I tried to keep the last two commits as obviously "copy-and-paste only" except for a small change to the port calculation to avoid overlap when using multiple ports in parallel tests.

  • This change only applies to interactions with Azure DevOps and the
    GVFS Protocol.

Before modifying the config documentation more, fill in these blanks.

Signed-off-by: Derrick Stolee <[email protected]>
@derrickstolee derrickstolee force-pushed the override-cache-server-by-verb branch 2 times, most recently from 3c79ddd to c83a879 Compare January 18, 2026 02:16
In anticipation of tests for multiple cache-servers, update the existing
logic that sets up and tears down cache-servers to allow multiple instances
on different ports.

Signed-off-by: Derrick Stolee <[email protected]>
This extension of the gvfs.cache-server config now allows a new key,
gvfs.prefetch.cache-server, to override the cache-server URL for only
the prefetch endpoint.

The purpose of this config is to allow for incremental testing and
deployment of new cache-server infrastructure. Hypothetically, we could
have special-purpose cache-servers that are glorified bundle servers and
other servers that focus on the object and size endpoints.

More realistically, this will allow us to test cache servers that have
only the prefetch endpoint ready to go. This allows some incremental
rollout that is more controlled than a flag day replacing the entire
infrastructure.

Signed-off-by: Derrick Stolee <[email protected]>
This extension of the gvfs.cache-server config now allows a new key,
gvfs.get.cache-server, to override the cache-server URL for only the
prefetch endpoint.

The purpose of this config is to allow for incremental testing and
deployment of new cache-server infrastructure.

Signed-off-by: Derrick Stolee <[email protected]>
This extension of the gvfs.cache-server config now allows a new key,
gvfs.post.cache-server, to overrid the cache-server URL for only the
batched objects endpoint.

The purpose of this config is to allow for incremental testing and
deployment of new cache-server infrastructure.

Signed-off-by: Derrick Stolee <[email protected]>
Test that all three verb-specific cache-server configs can be used
simultaneously, each directing requests to a different server. This
verifies that prefetch, get, and post verbs each respect their own
override and don't interfere with each other.
The t5799-gvfs-helper.sh script is long and takes forever. This slows down
PR merges and the local development inner loop is a pain. Before
distributing the tests into a set of new test scripts by topic, extract
important helper methods that can be imported by the new scripts.

Signed-off-by: Derrick Stolee <[email protected]>
@derrickstolee derrickstolee force-pushed the override-cache-server-by-verb branch from c83a879 to 7222e1a Compare January 18, 2026 02:30
Move the tests from t5799-gvfs-helper.sh into multiple scripts that can run
in parallel. To ensure that the ports do not overlap, add a large multiplier
on the instance when needing multiple ports within the same test (currently
limited to the verb-specific cache servers).

Signed-off-by: Derrick Stolee <[email protected]>
@derrickstolee derrickstolee force-pushed the override-cache-server-by-verb branch from 7222e1a to 77a05f6 Compare January 18, 2026 02:35
@derrickstolee derrickstolee marked this pull request as ready for review January 18, 2026 03:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant