Skip to content

Commit 4cbe996

Browse files
authored
fix: set default HTTP protocol to HTTP 1.1 (#241)
1 parent 0a24e7c commit 4cbe996

7 files changed

Lines changed: 67 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ The `shift()` function renamed to `timeShift()`.
4545
### Bug Fixes
4646
1. [#227](https://github.com/influxdata/influxdb-client-java/pull/227): Connection URL with custom base path
4747
1. [#236](https://github.com/influxdata/influxdb-client-java/pull/236): Rename `shift()` to `timeShift()` [FluxDSL]
48+
1. [#241](https://github.com/influxdata/influxdb-client-java/pull/241): Set default HTTP protocol to HTTP 1.1
4849

4950
### Dependencies
5051
1. [#227](https://github.com/influxdata/influxdb-client-java/pull/227): Update dependencies:

client-legacy/src/main/java/com/influxdb/client/flux/FluxConnectionOptions.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222
package com.influxdb.client.flux;
2323

24+
import java.util.Collections;
2425
import java.util.HashMap;
2526
import java.util.Map;
2627
import java.util.Set;
@@ -35,6 +36,7 @@
3536

3637
import okhttp3.HttpUrl;
3738
import okhttp3.OkHttpClient;
39+
import okhttp3.Protocol;
3840

3941
/**
4042
* FluxConnectionOptions are used to configure queries to the Flux.
@@ -121,7 +123,8 @@ public Map<String, String> getParameters() {
121123
public static class Builder {
122124

123125
private String url;
124-
private OkHttpClient.Builder okHttpClient = new OkHttpClient.Builder();
126+
private OkHttpClient.Builder okHttpClient = new OkHttpClient.Builder()
127+
.protocols(Collections.singletonList(Protocol.HTTP_1_1));
125128
private Map<String, String> parameters = new HashMap<>();
126129

127130
/**

client-legacy/src/test/java/com/influxdb/client/flux/FluxConnectionOptionsTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
*/
2222
package com.influxdb.client.flux;
2323

24+
import java.util.List;
25+
2426
import okhttp3.OkHttpClient;
27+
import okhttp3.Protocol;
2528
import org.assertj.core.api.Assertions;
2629
import org.junit.jupiter.api.Test;
2730
import org.junit.platform.runner.JUnitPlatform;
@@ -65,4 +68,16 @@ void okHttpClientValue() {
6568

6669
Assertions.assertThat(fluxConnectionOptions.getOkHttpClient()).isEqualTo(okHttpClient);
6770
}
71+
72+
@Test
73+
void protocolVersion() {
74+
75+
FluxConnectionOptions options = FluxConnectionOptions.builder()
76+
.url("http://localhost:8093")
77+
.build();
78+
79+
List<Protocol> protocols = options.getOkHttpClient().build().protocols();
80+
Assertions.assertThat(protocols).hasSize(1);
81+
Assertions.assertThat(protocols).contains(Protocol.HTTP_1_1);
82+
}
6883
}

client/src/main/java/com/influxdb/client/InfluxDBClientOptions.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.io.InputStream;
2626
import java.time.Duration;
2727
import java.time.temporal.ChronoUnit;
28+
import java.util.Collections;
2829
import java.util.Properties;
2930
import java.util.regex.Matcher;
3031
import java.util.regex.Pattern;
@@ -39,6 +40,7 @@
3940

4041
import okhttp3.HttpUrl;
4142
import okhttp3.OkHttpClient;
43+
import okhttp3.Protocol;
4244

4345
/**
4446
* InfluxDBClientOptions are used to configure theInfluxDB 2.0 connections.
@@ -445,7 +447,8 @@ public InfluxDBClientOptions build() {
445447
}
446448

447449
if (okHttpClient == null) {
448-
okHttpClient = new OkHttpClient.Builder();
450+
okHttpClient = new OkHttpClient.Builder()
451+
.protocols(Collections.singletonList(Protocol.HTTP_1_1));
449452
}
450453

451454
if (logLevel == null) {
@@ -477,7 +480,8 @@ private InfluxDBClientOptions.Builder configure(@Nonnull final String url,
477480
logLevel(Enum.valueOf(LogLevel.class, logLevel));
478481
}
479482

480-
okHttpClient = new OkHttpClient.Builder();
483+
okHttpClient = new OkHttpClient.Builder()
484+
.protocols(Collections.singletonList(Protocol.HTTP_1_1));
481485
if (readTimeout != null) {
482486
okHttpClient.readTimeout(toDuration(readTimeout));
483487
}

client/src/test/java/com/influxdb/client/InfluxDBClientOptionsTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
*/
2222
package com.influxdb.client;
2323

24+
import java.util.List;
25+
2426
import okhttp3.OkHttpClient;
27+
import okhttp3.Protocol;
2528
import org.assertj.core.api.Assertions;
2629
import org.junit.jupiter.api.Test;
2730
import org.junit.platform.runner.JUnitPlatform;
@@ -87,4 +90,17 @@ void authorizationSession() {
8790

8891
Assertions.assertThat(options.getAuthScheme()).isEqualTo(InfluxDBClientOptions.AuthScheme.SESSION);
8992
}
93+
94+
@Test
95+
void protocolVersion() {
96+
97+
InfluxDBClientOptions options = InfluxDBClientOptions.builder()
98+
.url("http://localhost:9999")
99+
.authenticateToken("xyz".toCharArray())
100+
.build();
101+
102+
List<Protocol> protocols = options.getOkHttpClient().build().protocols();
103+
Assertions.assertThat(protocols).hasSize(1);
104+
Assertions.assertThat(protocols).contains(Protocol.HTTP_1_1);
105+
}
90106
}

spring/src/main/java/com/influxdb/spring/influx/InfluxDB2AutoConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,14 @@
2121
*/
2222
package com.influxdb.spring.influx;
2323

24+
import java.util.Collections;
25+
2426
import com.influxdb.client.InfluxDBClient;
2527
import com.influxdb.client.InfluxDBClientFactory;
2628
import com.influxdb.client.InfluxDBClientOptions;
2729

2830
import okhttp3.OkHttpClient;
31+
import okhttp3.Protocol;
2932
import org.springframework.beans.factory.ObjectProvider;
3033
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
3134
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -64,6 +67,7 @@ public InfluxDBClient influxDBClient() {
6467
OkHttpClient.Builder okHttpBuilder;
6568
if (builderProvider == null) {
6669
okHttpBuilder = new OkHttpClient.Builder()
70+
.protocols(Collections.singletonList(Protocol.HTTP_1_1))
6771
.readTimeout(properties.getReadTimeout())
6872
.writeTimeout(properties.getWriteTimeout())
6973
.connectTimeout(properties.getConnectTimeout());

spring/src/test/java/com/influxdb/spring/influx/InfluxDB2AutoConfigurationTest.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,15 @@
2121
*/
2222
package com.influxdb.spring.influx;
2323

24+
import java.util.List;
2425
import java.util.concurrent.TimeUnit;
2526

27+
import javax.annotation.Nonnull;
28+
2629
import com.influxdb.client.InfluxDBClient;
2730

2831
import okhttp3.OkHttpClient;
32+
import okhttp3.Protocol;
2933
import org.assertj.core.api.Assertions;
3034
import org.junit.jupiter.api.Test;
3135
import org.junit.platform.runner.JUnitPlatform;
@@ -96,11 +100,27 @@ public void influxDBClientWithReadTimeout() {
96100
});
97101
}
98102

103+
@Test
104+
public void protocolVersion() {
105+
this.contextRunner.withPropertyValues("spring.influx2.url=http://localhost:8086/", "spring.influx2.token:token")
106+
.run((context) -> {
107+
List<Protocol> protocols = getOkHttpClient(context).protocols();
108+
Assertions.assertThat(protocols).hasSize(1);
109+
Assertions.assertThat(protocols).contains(Protocol.HTTP_1_1);
110+
});
111+
}
112+
99113
private int getReadTimeoutProperty(AssertableApplicationContext context) {
114+
OkHttpClient callFactory = getOkHttpClient(context);
115+
return callFactory.readTimeoutMillis();
116+
}
117+
118+
@Nonnull
119+
private OkHttpClient getOkHttpClient(final AssertableApplicationContext context) {
100120
InfluxDBClient influxDB = context.getBean(InfluxDBClient.class);
101121
Retrofit retrofit = (Retrofit) ReflectionTestUtils.getField(influxDB, "retrofit");
102122
OkHttpClient callFactory = (OkHttpClient) retrofit.callFactory();
103-
return callFactory.readTimeoutMillis();
123+
return callFactory;
104124
}
105125

106126
@Configuration

0 commit comments

Comments
 (0)