Created
May 14, 2024 18:32
-
-
Save lptr/e7b76245daa003d1f672bc87a7eba3b6 to your computer and use it in GitHub Desktop.
This file contains 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
diff --git a/platforms/core-execution/build-cache-http/src/main/java/org/gradle/caching/http/internal/DefaultHttpBuildCacheServiceFactory.java b/platforms/core-execution/build-cache-http/src/main/java/org/gradle/caching/http/internal/DefaultHttpBuildCacheServiceFactory.java | |
index 141e49c2014..1ad7e2e8a3a 100644 | |
--- a/platforms/core-execution/build-cache-http/src/main/java/org/gradle/caching/http/internal/DefaultHttpBuildCacheServiceFactory.java | |
+++ b/platforms/core-execution/build-cache-http/src/main/java/org/gradle/caching/http/internal/DefaultHttpBuildCacheServiceFactory.java | |
@@ -25,6 +25,7 @@ | |
import org.gradle.caching.http.HttpBuildCacheCredentials; | |
import org.gradle.internal.authentication.DefaultBasicAuthentication; | |
import org.gradle.internal.deprecation.Documentation; | |
+import org.gradle.internal.operations.BuildOperationRunner; | |
import org.gradle.internal.resource.transport.http.DefaultHttpSettings; | |
import org.gradle.internal.resource.transport.http.HttpClientHelper; | |
import org.gradle.internal.resource.transport.http.HttpSettings; | |
@@ -45,12 +46,19 @@ public class DefaultHttpBuildCacheServiceFactory implements BuildCacheServiceFac | |
private static final int MAX_REDIRECTS = Integer.getInteger("org.gradle.cache.http.max-redirects", 10); | |
+ private final BuildOperationRunner buildOperationRunner; | |
private final SslContextFactory sslContextFactory; | |
private final HttpBuildCacheRequestCustomizer requestCustomizer; | |
private final HttpClientHelper.Factory httpClientHelperFactory; | |
@Inject | |
- public DefaultHttpBuildCacheServiceFactory(SslContextFactory sslContextFactory, HttpBuildCacheRequestCustomizer requestCustomizer, HttpClientHelper.Factory httpClientHelperFactory) { | |
+ public DefaultHttpBuildCacheServiceFactory( | |
+ BuildOperationRunner buildOperationRunner, | |
+ SslContextFactory sslContextFactory, | |
+ HttpBuildCacheRequestCustomizer requestCustomizer, | |
+ HttpClientHelper.Factory httpClientHelperFactory | |
+ ) { | |
+ this.buildOperationRunner = buildOperationRunner; | |
this.sslContextFactory = sslContextFactory; | |
this.requestCustomizer = requestCustomizer; | |
this.httpClientHelperFactory = httpClientHelperFactory; | |
@@ -105,7 +113,7 @@ public BuildCacheService createBuildCacheService(HttpBuildCache configuration, D | |
.config("allowInsecureProtocol", Boolean.toString(allowInsecureProtocol)) | |
.config("useExpectContinue", Boolean.toString(useExpectContinue)); | |
- return new HttpBuildCacheService(httpClientHelper, noUserInfoUrl, requestCustomizer, useExpectContinue); | |
+ return new HttpBuildCacheService(buildOperationRunner, httpClientHelper, noUserInfoUrl, requestCustomizer, useExpectContinue); | |
} | |
private HttpRedirectVerifier createRedirectVerifier(URI url, boolean allowInsecureProtocol) { | |
diff --git a/platforms/core-execution/build-cache-http/src/main/java/org/gradle/caching/http/internal/HttpBuildCacheService.java b/platforms/core-execution/build-cache-http/src/main/java/org/gradle/caching/http/internal/HttpBuildCacheService.java | |
index 74dae2d3935..11c14a47b48 100644 | |
--- a/platforms/core-execution/build-cache-http/src/main/java/org/gradle/caching/http/internal/HttpBuildCacheService.java | |
+++ b/platforms/core-execution/build-cache-http/src/main/java/org/gradle/caching/http/internal/HttpBuildCacheService.java | |
@@ -23,6 +23,7 @@ | |
import org.apache.http.client.ClientProtocolException; | |
import org.apache.http.client.methods.HttpGet; | |
import org.apache.http.client.methods.HttpPut; | |
+import org.apache.http.client.methods.HttpRequestBase; | |
import org.apache.http.client.utils.URIBuilder; | |
import org.apache.http.entity.AbstractHttpEntity; | |
import org.apache.http.protocol.HTTP; | |
@@ -33,6 +34,10 @@ | |
import org.gradle.caching.BuildCacheKey; | |
import org.gradle.caching.BuildCacheService; | |
import org.gradle.internal.UncheckedException; | |
+import org.gradle.internal.operations.BuildOperationContext; | |
+import org.gradle.internal.operations.BuildOperationDescriptor; | |
+import org.gradle.internal.operations.BuildOperationRunner; | |
+import org.gradle.internal.operations.CallableBuildOperation; | |
import org.gradle.internal.resource.transport.http.HttpClientHelper; | |
import org.gradle.internal.resource.transport.http.HttpClientResponse; | |
import org.slf4j.Logger; | |
@@ -64,11 +69,19 @@ public class HttpBuildCacheService implements BuildCacheService { | |
); | |
private final URI root; | |
+ private final BuildOperationRunner buildOperationRunner; | |
private final HttpClientHelper httpClientHelper; | |
private final HttpBuildCacheRequestCustomizer requestCustomizer; | |
private final boolean useExpectContinue; | |
- public HttpBuildCacheService(HttpClientHelper httpClientHelper, URI url, HttpBuildCacheRequestCustomizer requestCustomizer, boolean useExpectContinue) { | |
+ public HttpBuildCacheService( | |
+ BuildOperationRunner buildOperationRunner, | |
+ HttpClientHelper httpClientHelper, | |
+ URI url, | |
+ HttpBuildCacheRequestCustomizer requestCustomizer, | |
+ boolean useExpectContinue | |
+ ) { | |
+ this.buildOperationRunner = buildOperationRunner; | |
this.requestCustomizer = requestCustomizer; | |
this.useExpectContinue = useExpectContinue; | |
this.root = withTrailingSlash(url); | |
@@ -82,7 +95,7 @@ public boolean load(BuildCacheKey key, BuildCacheEntryReader reader) throws Buil | |
httpGet.addHeader(HttpHeaders.ACCEPT, BUILD_CACHE_CONTENT_TYPE + ", */*"); | |
requestCustomizer.customize(httpGet); | |
- try (HttpClientResponse response = httpClientHelper.performHttpRequest(httpGet)) { | |
+ try (HttpClientResponse response = performHttpRequest(key, httpGet)) { | |
StatusLine statusLine = response.getStatusLine(); | |
if (LOGGER.isDebugEnabled()) { | |
LOGGER.debug("Response for GET {}: {}", safeUri(uri), statusLine); | |
@@ -138,7 +151,7 @@ public boolean isStreaming() { | |
return false; | |
} | |
}); | |
- try (HttpClientResponse response = httpClientHelper.performHttpRequest(httpPut)) { | |
+ try (HttpClientResponse response = performHttpRequest(key, httpPut)) { | |
StatusLine statusLine = response.getStatusLine(); | |
if (LOGGER.isDebugEnabled()) { | |
LOGGER.debug("Response for PUT {}: {}", safeUri(uri), statusLine); | |
@@ -155,6 +168,20 @@ public boolean isStreaming() { | |
} | |
} | |
+ private HttpClientResponse performHttpRequest(BuildCacheKey key, HttpRequestBase request) throws IOException { | |
+ return buildOperationRunner.call(new CallableBuildOperation<HttpClientResponse>() { | |
+ @Override | |
+ public HttpClientResponse call(BuildOperationContext context) throws Exception { | |
+ return httpClientHelper.performHttpRequest(request); | |
+ } | |
+ | |
+ @Override | |
+ public BuildOperationDescriptor.Builder description() { | |
+ return BuildOperationDescriptor.displayName("HTTP " + request.getMethod() + " request for cache key " + key.getHashCode()); | |
+ } | |
+ }); | |
+ } | |
+ | |
private static BuildCacheException wrap(Throwable e) { | |
if (e instanceof Error) { | |
throw (Error) e; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment