internal/fetch: support disabling proxy fetch
Change-Id: Iedc1a7d278b100dd0f59045929dbd5a4e3bc0785
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/278612
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/internal/fetch/fetch.go b/internal/fetch/fetch.go
index e757759..939474c 100644
--- a/internal/fetch/fetch.go
+++ b/internal/fetch/fetch.go
@@ -109,7 +109,7 @@
// Callers of FetchModule must
// defer fr.Defer()
// immediately after the call.
-func FetchModule(ctx context.Context, modulePath, requestedVersion string, proxyClient *proxy.Client, sourceClient *source.Client) (fr *FetchResult) {
+func FetchModule(ctx context.Context, modulePath, requestedVersion string, proxyClient *proxy.Client, sourceClient *source.Client, disableProxyFetch bool) (fr *FetchResult) {
start := time.Now()
fr = &FetchResult{
ModulePath: modulePath,
@@ -152,7 +152,11 @@
}
fr.ResolvedVersion = resolvedVersion
} else {
- info, err := proxyClient.GetInfo(ctx, modulePath, requestedVersion)
+ getInfo := proxyClient.GetInfo
+ if disableProxyFetch {
+ getInfo = proxyClient.GetInfoNoFetch
+ }
+ info, err := getInfo(ctx, modulePath, requestedVersion)
if err != nil {
fr.Error = err
return fr
diff --git a/internal/fetch/helper_test.go b/internal/fetch/helper_test.go
index 54a746d..a44e5af 100644
--- a/internal/fetch/helper_test.go
+++ b/internal/fetch/helper_test.go
@@ -137,7 +137,7 @@
Files: mod.mod.Files,
}})
defer teardownProxy()
- got := FetchModule(ctx, modulePath, fetchVersion, proxyClient, sourceClient)
+ got := FetchModule(ctx, modulePath, fetchVersion, proxyClient, sourceClient, false)
if !withLicenseDetector {
return got, nil
}
diff --git a/internal/frontend/fetch.go b/internal/frontend/fetch.go
index b85415a..0c20eae 100644
--- a/internal/frontend/fetch.go
+++ b/internal/frontend/fetch.go
@@ -523,7 +523,7 @@
derrors.Wrap(&err, "FetchAndUpdateState(%q, %q)", modulePath, requestedVersion)
}()
- fr := fetch.FetchModule(ctx, modulePath, requestedVersion, proxyClient, sourceClient)
+ fr := fetch.FetchModule(ctx, modulePath, requestedVersion, proxyClient, sourceClient, false)
defer fr.Defer()
if fr.Error == nil {
// Only attempt to insert the module into module_version_states if the
diff --git a/internal/proxydatasource/datasource.go b/internal/proxydatasource/datasource.go
index 17b2dcc..6e9a3ed 100644
--- a/internal/proxydatasource/datasource.go
+++ b/internal/proxydatasource/datasource.go
@@ -87,7 +87,7 @@
if e, ok := ds.versionCache[key]; ok {
return e.module, e.err
}
- res := fetch.FetchModule(ctx, modulePath, version, ds.proxyClient, ds.sourceClient)
+ res := fetch.FetchModule(ctx, modulePath, version, ds.proxyClient, ds.sourceClient, false)
defer res.Defer()
m := res.Module
if m != nil {
diff --git a/internal/testing/integration/frontend_test.go b/internal/testing/integration/frontend_test.go
index aba8b4d..78b4903 100644
--- a/internal/testing/integration/frontend_test.go
+++ b/internal/testing/integration/frontend_test.go
@@ -96,7 +96,7 @@
func fetchAndInsertModule(ctx context.Context, t *testing.T, tm *proxy.Module, proxyClient *proxy.Client) {
sourceClient := source.NewClient(1 * time.Second)
- res := fetch.FetchModule(ctx, tm.ModulePath, tm.Version, proxyClient, sourceClient)
+ res := fetch.FetchModule(ctx, tm.ModulePath, tm.Version, proxyClient, sourceClient, false)
defer res.Defer()
if res.Error != nil {
t.Fatal(res.Error)
diff --git a/internal/worker/fetch.go b/internal/worker/fetch.go
index f42bf1a..5861831 100644
--- a/internal/worker/fetch.go
+++ b/internal/worker/fetch.go
@@ -154,7 +154,7 @@
}
start := time.Now()
- fr := fetch.FetchModule(ctx, modulePath, requestedVersion, proxyClient, sourceClient)
+ fr := fetch.FetchModule(ctx, modulePath, requestedVersion, proxyClient, sourceClient, false)
if fr == nil {
panic("fetch.FetchModule should never return a nil FetchResult")
}