Skip to content

Commit 58ced84

Browse files
authored
Bump to OkHttp 4.X (#2709)
1 parent 53e7a91 commit 58ced84

File tree

10 files changed

+30
-214
lines changed

10 files changed

+30
-214
lines changed

build.gradle

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,6 @@ allprojects {
6767
version { strictly '2.4.0' }
6868
because 'Retrofit 2.5.0 breaks with our path parameter routing logic'
6969
}
70-
71-
rootConfiguration 'com.squareup.okhttp3:okhttp', {
72-
version { strictly '[3, 3.14.0[' }
73-
because 'okhttp 3.14.0 removed UnrepeatableRequestBody which is relied on by an internal library'
74-
}
75-
7670
}
7771
}
7872
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type: improvement
2+
improvement:
3+
description: Bump to OkHttp 4.X
4+
links:
5+
- https://github.com/palantir/conjure-java-runtime/pull/2709

okhttp-clients/src/main/java/com/palantir/conjure/java/okhttp/ForwardingOkHttpClient.java

Lines changed: 0 additions & 188 deletions
This file was deleted.

okhttp-clients/src/main/java/com/palantir/conjure/java/okhttp/OkHttpClients.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ private static RemotingOkHttpClient createInternal(
292292
.addMetrics("from", DispatcherMetricSet.class.getSimpleName(), dispatcherMetricSet);
293293

294294
return new RemotingOkHttpClient(
295-
client.build(),
295+
client,
296296
backoffStrategyFunction,
297297
config.nodeSelectionStrategy(),
298298
urlSelector,

okhttp-clients/src/main/java/com/palantir/conjure/java/okhttp/Okhttp39HostnameVerifier.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@
3232
*/
3333
package com.palantir.conjure.java.okhttp;
3434

35-
import static okhttp3.internal.Util.verifyAsIpAddress;
36-
3735
import java.security.cert.Certificate;
3836
import java.security.cert.CertificateParsingException;
3937
import java.security.cert.X509Certificate;
@@ -46,6 +44,7 @@
4644
import javax.net.ssl.SSLException;
4745
import javax.net.ssl.SSLSession;
4846
import javax.security.auth.x500.X500Principal;
47+
import okhttp3.internal.Util;
4948

5049
/**
5150
* A HostnameVerifier consistent with <a href="http://www.ietf.org/rfc/rfc2818.txt">RFC 2818</a>.
@@ -79,7 +78,7 @@ public boolean verify(String host, SSLSession session) {
7978
}
8079

8180
public boolean verify(String host, X509Certificate certificate) {
82-
return verifyAsIpAddress(host) ? verifyIpAddress(host, certificate) : verifyHostname(host, certificate);
81+
return Util.canParseAsIpAddress(host) ? verifyIpAddress(host, certificate) : verifyHostname(host, certificate);
8382
}
8483

8584
/** Returns true if {@code certificate} matches {@code ipAddress}. */

okhttp-clients/src/main/java/com/palantir/conjure/java/okhttp/RemotingOkHttpCall.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import okhttp3.Request;
5252
import okhttp3.Response;
5353
import okhttp3.ResponseBody;
54-
import okhttp3.internal.http.UnrepeatableRequestBody;
5554

5655
/**
5756
* An OkHttp {@link Call} implementation that handles standard retryable error status such as 308, 429, 503, and
@@ -586,7 +585,7 @@ private static void retryIfAllowed(Callback callback, Call call, Exception excep
586585
}
587586

588587
private static boolean isStreamingBody(Call call) {
589-
return call.request().body() instanceof UnrepeatableRequestBody;
588+
return call.request().body() != null && call.request().body().isOneShot();
590589
}
591590

592591
private static boolean shouldPropagateQos(ClientConfiguration.ServerQoS serverQoS) {

okhttp-clients/src/main/java/com/palantir/conjure/java/okhttp/RemotingOkHttpClient.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
* An {@link OkHttpClient} that executes {@link okhttp3.Call}s as {@link RemotingOkHttpCall}s in order to retry a class
3838
* of retryable error states.
3939
*/
40-
final class RemotingOkHttpClient extends ForwardingOkHttpClient {
40+
final class RemotingOkHttpClient extends OkHttpClient {
4141
private static final SafeLogger log = SafeLoggerFactory.get(RemotingOkHttpClient.class);
4242

4343
private static final int MAX_NUM_RELOCATIONS = 20;
@@ -53,7 +53,7 @@ final class RemotingOkHttpClient extends ForwardingOkHttpClient {
5353
private final ClientConfiguration.RetryOnSocketException retryOnSocketException;
5454

5555
RemotingOkHttpClient(
56-
OkHttpClient delegate,
56+
OkHttpClient.Builder builder,
5757
Supplier<BackoffStrategy> backoffStrategy,
5858
NodeSelectionStrategy nodeSelectionStrategy,
5959
UrlSelector urls,
@@ -63,7 +63,7 @@ final class RemotingOkHttpClient extends ForwardingOkHttpClient {
6363
ClientConfiguration.ServerQoS serverQoS,
6464
ClientConfiguration.RetryOnTimeout retryOnTimeout,
6565
ClientConfiguration.RetryOnSocketException retryOnSocketException) {
66-
super(delegate);
66+
super(builder);
6767
this.backoffStrategyFactory = backoffStrategy;
6868
this.nodeSelectionStrategy = nodeSelectionStrategy;
6969
this.urls = urls;
@@ -93,7 +93,7 @@ public Builder newBuilder() {
9393
RemotingOkHttpCall newCallWithMutableState(
9494
Request request, BackoffStrategy backoffStrategy, int maxNumRelocations, Optional<Call> previousCall) {
9595
return new RemotingOkHttpCall(
96-
getDelegate().newCall(request),
96+
super.newCall(request),
9797
previousCall,
9898
backoffStrategy,
9999
urls,

okhttp-clients/src/test/java/com/palantir/conjure/java/okhttp/OkHttpClientsTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
import okhttp3.Request;
6666
import okhttp3.RequestBody;
6767
import okhttp3.Response;
68-
import okhttp3.internal.http.UnrepeatableRequestBody;
6968
import okhttp3.mockwebserver.MockResponse;
7069
import okhttp3.mockwebserver.MockWebServer;
7170
import okhttp3.mockwebserver.SocketPolicy;
@@ -176,7 +175,7 @@ public void streamingRequestBodyIsNotRetried() throws IOException {
176175
assertThat(body.retried).hasValue(0);
177176
}
178177

179-
private static final class StreamingRequestBody extends RequestBody implements UnrepeatableRequestBody {
178+
private static final class StreamingRequestBody extends RequestBody {
180179
private static final MediaType OCTET_STREAM = MediaType.parse("application/octet-stream");
181180

182181
private final Source source;
@@ -203,6 +202,11 @@ public void writeTo(BufferedSink sink) throws IOException {
203202
}
204203
}
205204
}
205+
206+
@Override
207+
public boolean isOneShot() {
208+
return true;
209+
}
206210
}
207211

208212
private static final class StreamReusedException extends IOException {

versions.lock

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ com.palantir.tritium:tritium-api:0.79.0 (2 constraints: 411f78be)
5252
com.palantir.tritium:tritium-core:0.79.0 (1 constraints: 48105fa2)
5353
com.palantir.tritium:tritium-metrics:0.79.0 (5 constraints: 1b4de163)
5454
com.palantir.tritium:tritium-registry:0.79.0 (6 constraints: 625dbee1)
55-
com.squareup.okhttp3:okhttp:3.13.1 (4 constraints: 2e38ea61)
56-
com.squareup.okio:okio:1.17.2 (1 constraints: 850cc309)
55+
com.squareup.okhttp3:okhttp:4.12.0 (3 constraints: 292d9bf6)
56+
com.squareup.okio:okio:3.6.0 (1 constraints: 530c38fd)
57+
com.squareup.okio:okio-jvm:3.6.0 (1 constraints: 500ad3b9)
5758
com.squareup.retrofit2:converter-jackson:2.4.0 (1 constraints: 08050136)
5859
com.squareup.retrofit2:retrofit:2.4.0 (2 constraints: 4b1d8704)
5960
com.thoughtworks.paranamer:paranamer:2.8 (1 constraints: 7b15b5d4)
@@ -87,7 +88,11 @@ org.immutables:value:2.10.0 (1 constraints: 35052f3b)
8788
org.javassist:javassist:3.29.2-GA (1 constraints: 30112ef1)
8889
org.jboss.logging:jboss-logging:3.5.0.Final (4 constraints: 0747c0c6)
8990
org.jboss.threads:jboss-threads:3.5.0.Final (3 constraints: b52a2fe5)
90-
org.jetbrains:annotations:24.0.1 (2 constraints: fc20bc6d)
91+
org.jetbrains:annotations:24.0.1 (3 constraints: da2fbd33)
92+
org.jetbrains.kotlin:kotlin-stdlib:1.9.10 (2 constraints: c2210fe1)
93+
org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10 (2 constraints: 3f1b4b83)
94+
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10 (1 constraints: e210ffd2)
95+
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10 (3 constraints: eb27efa7)
9196
org.jvnet:animal-sniffer-annotation:1.0 (1 constraints: f20b95eb)
9297
org.mpierce.metrics.reservoir:hdrhistogram-metrics-reservoir:1.1.3 (1 constraints: 0d10f991)
9398
org.scala-lang:scala-library:2.12.17 (1 constraints: 3c16782c)
@@ -98,13 +103,13 @@ org.wildfly.common:wildfly-common:1.5.4.Final (2 constraints: 741cfbf1)
98103
com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.3 (1 constraints: 3905393b)
99104
com.google.code.findbugs:annotations:3.0.1 (1 constraints: 9e0aafc3)
100105
com.palantir.safe-logging:preconditions-assertj:3.6.0 (1 constraints: 0b050c36)
101-
com.squareup.okhttp3:mockwebserver:3.13.1 (1 constraints: 3a053f3b)
106+
com.squareup.okhttp3:mockwebserver:4.12.0 (1 constraints: 3905413b)
102107
io.leangen.geantyref:geantyref:1.3.4 (1 constraints: 0a05fd35)
103108
io.reactivex.rxjava2:rxjava:2.2.21 (1 constraints: 3905363b)
104109
io.undertow:undertow-core:2.2.24.Final (2 constraints: a619e9ea)
105110
io.undertow:undertow-servlet-jakarta:2.2.20.Final (1 constraints: 50071361)
106111
jakarta.servlet:jakarta.servlet-api:5.0.0 (2 constraints: 1015bdac)
107-
junit:junit:4.12 (1 constraints: 080f065e)
112+
junit:junit:4.13.2 (1 constraints: 690fa77c)
108113
net.bytebuddy:byte-buddy:1.14.8 (2 constraints: c416aa4f)
109114
net.bytebuddy:byte-buddy-agent:1.14.8 (1 constraints: 480b46de)
110115
net.jcip:jcip-annotations:1.0 (1 constraints: 560ff165)

versions.props

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ com.palantir.safe-logging:* = 3.6.0
1313
com.palantir.tokens:* = 3.18.0
1414
com.palantir.tracing:* = 6.18.0
1515
com.palantir.tritium:* = 0.79.0
16+
com.squareup.okhttp3:* = 4.12.0
1617
io.reactivex.rxjava2:rxjava = 2.2.21
1718
org.apache.commons:commons-lang3 = 3.13.0
1819
org.assertj:assertj-core = 3.24.2
@@ -50,9 +51,6 @@ javax.inject:javax.inject = 1
5051

5152
com.fasterxml.jackson.*:* = 2.13.1
5253

53-
# Temporarily pausing until internal libraries stop relying on UnrepeatableRequestBody
54-
com.squareup.okhttp3:* = 3.13.1
55-
5654
# We cannot upgrade retrofit2 to 2.5.0 because of https://github.com/palantir/conjure-java-runtime/issues/930
5755
com.squareup.retrofit2:* = 2.4.0
5856

0 commit comments

Comments
 (0)