Skip to content

Commit 63bcfa8

Browse files
derrickstoleedscho
authored andcommitted
gvfs-helper: override cache server for get
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 <stolee@gmail.com>
1 parent ab32e6b commit 63bcfa8

3 files changed

Lines changed: 58 additions & 0 deletions

File tree

‎Documentation/config/gvfs.adoc‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ gvfs.<verb>.cache-server::
1010
--
1111
prefetch::
1212
Use this cache server when prefetching commits and tree packfiles.
13+
get::
14+
Use this cache server when downloading objects immediately via the
15+
GET endpoint.
1316
--
1417

1518
gvfs.sharedcache::

‎gvfs-helper.c‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,7 @@ enum gh__server_type {
395395

396396
enum gh__verb {
397397
PREFETCH,
398+
GET,
398399
};
399400

400401
static void update_cache_server_for_verb(enum gh__verb verb)
@@ -408,6 +409,10 @@ static void update_cache_server_for_verb(enum gh__verb verb)
408409
verbstr = "prefetch";
409410
break;
410411

412+
case GET:
413+
verbstr = "get";
414+
break;
415+
411416
default:
412417
gh__global.cache_server_url_backup = NULL;
413418
return;
@@ -3360,7 +3365,9 @@ static void do__http_get__gvfs_object(struct gh__response_status *status,
33603365

33613366
setup_gvfs_objects_progress(&params, l_num, l_den);
33623367

3368+
update_cache_server_for_verb(GET);
33633369
do_req__with_fallback(component_url.buf, &params, status);
3370+
reset_cache_server();
33643371

33653372
gh__request_params__release(&params);
33663373
strbuf_release(&component_url);

‎t/t5799-gvfs-helper.sh‎

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1725,4 +1725,52 @@ test_expect_success 'verb-specific cache-server: get does NOT use gvfs.prefetch.
17251725
verify_server_was_not_contacted 1
17261726
'
17271727

1728+
test_expect_success 'verb-specific cache-server: get uses gvfs.get.cache-server' '
1729+
test_when_finished "per_test_cleanup" &&
1730+
test_when_finished "git -C \"$REPO_T1\" config --unset gvfs.get.cache-server" &&
1731+
start_gvfs_protocol_server 0 &&
1732+
start_gvfs_protocol_server 1 &&
1733+
1734+
# Configure server 0 as default cache-server and server 1 for get.
1735+
git -C "$REPO_T1" config gvfs.cache-server "$(cache_server_url 0)" &&
1736+
git -C "$REPO_T1" config gvfs.get.cache-server "$(cache_server_url 1)" &&
1737+
1738+
# Run get - should go to server 1.
1739+
git -C "$REPO_T1" gvfs-helper \
1740+
--cache-server=trust \
1741+
--remote=origin \
1742+
get \
1743+
<"$OID_ONE_BLOB_FILE" >OUT.output 2>OUT.stderr &&
1744+
1745+
# Verify server 1 was contacted (get-specific).
1746+
verify_server_was_contacted 1 &&
1747+
1748+
# Verify server 0 was NOT contacted.
1749+
verify_server_was_not_contacted 0
1750+
'
1751+
1752+
test_expect_success 'verb-specific cache-server: prefetch does NOT use gvfs.get.cache-server' '
1753+
test_when_finished "per_test_cleanup" &&
1754+
test_when_finished "git -C \"$REPO_T1\" config --unset gvfs.get.cache-server" &&
1755+
start_gvfs_protocol_server 0 &&
1756+
start_gvfs_protocol_server 1 &&
1757+
1758+
# Configure server 0 as default cache-server and server 1 for get.
1759+
git -C "$REPO_T1" config gvfs.cache-server "$(cache_server_url 0)" &&
1760+
git -C "$REPO_T1" config gvfs.get.cache-server "$(cache_server_url 1)" &&
1761+
1762+
# Run prefetch - should go to server 0 (default), not server 1 (get).
1763+
git -C "$REPO_T1" gvfs-helper \
1764+
--cache-server=trust \
1765+
--remote=origin \
1766+
--no-progress \
1767+
prefetch >OUT.output 2>OUT.stderr &&
1768+
1769+
# Verify server 0 was contacted (default cache-server).
1770+
verify_server_was_contacted 0 &&
1771+
1772+
# Verify server 1 was NOT contacted (get-specific).
1773+
verify_server_was_not_contacted 1
1774+
'
1775+
17281776
test_done

0 commit comments

Comments
 (0)