Skip to content

Commit 48d1fcd

Browse files
committed
Add timeouts, cleanup
1 parent 49d8e29 commit 48d1fcd

File tree

5 files changed

+35
-41
lines changed

5 files changed

+35
-41
lines changed

docker-java-core/src/main/java/com/github/dockerjava/core/AbstractDockerCmdExecFactory.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,9 @@ public abstract class AbstractDockerCmdExecFactory implements DockerCmdExecFacto
150150

151151
private DockerClientConfig dockerClientConfig;
152152

153+
protected Integer connectTimeout;
154+
protected Integer readTimeout;
155+
153156
protected DockerClientConfig getDockerClientConfig() {
154157
checkNotNull(dockerClientConfig,
155158
"Factor not initialized, dockerClientConfig not set. You probably forgot to call init()!");
@@ -172,6 +175,22 @@ public CopyArchiveToContainerCmd.Exec createCopyArchiveToContainerCmdExec() {
172175
return new CopyArchiveToContainerCmdExec(getBaseResource(), getDockerClientConfig());
173176
}
174177

178+
/**
179+
* Configure connection timeout in milliseconds
180+
*/
181+
public AbstractDockerCmdExecFactory withConnectTimeout(Integer connectTimeout) {
182+
this.connectTimeout = connectTimeout;
183+
return this;
184+
}
185+
186+
/**
187+
* Configure read timeout in milliseconds
188+
*/
189+
public AbstractDockerCmdExecFactory withReadTimeout(Integer readTimeout) {
190+
this.readTimeout = readTimeout;
191+
return this;
192+
}
193+
175194
@Override
176195
public AuthCmd.Exec createAuthCmdExec() {
177196
return new AuthCmdExec(getBaseResource(), getDockerClientConfig());

docker-java-transport-jersey/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,6 @@ public class JerseyDockerCmdExecFactory extends AbstractDockerCmdExecFactory {
5050

5151
private JerseyWebTarget baseResource;
5252

53-
private Integer readTimeout = null;
54-
55-
private Integer connectTimeout = null;
56-
5753
private Integer maxTotalConnections = null;
5854

5955
private Integer maxPerRouteConnections = null;
@@ -262,16 +258,6 @@ public void close() throws IOException {
262258
connManager.close();
263259
}
264260

265-
public JerseyDockerCmdExecFactory withReadTimeout(Integer readTimeout) {
266-
this.readTimeout = readTimeout;
267-
return this;
268-
}
269-
270-
public JerseyDockerCmdExecFactory withConnectTimeout(Integer connectTimeout) {
271-
this.connectTimeout = connectTimeout;
272-
return this;
273-
}
274-
275261
public JerseyDockerCmdExecFactory withMaxTotalConnections(Integer maxTotalConnections) {
276262
this.maxTotalConnections = maxTotalConnections;
277263
return this;

docker-java-transport-netty/src/main/java/com/github/dockerjava/netty/NettyDockerCmdExecFactory.java

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.dockerjava.netty;
22

33
import static com.google.common.base.Preconditions.checkNotNull;
4+
import static java.util.Objects.nonNull;
45

56
import java.io.IOException;
67
import java.net.InetAddress;
@@ -58,7 +59,7 @@
5859
* @see https://docs.docker.com/engine/reference/api/docker_remote_api_v1.21/#attach-to-a-container
5960
* @see https://docs.docker.com/engine/reference/api/docker_remote_api_v1.21/#exec-start
6061
*/
61-
public class NettyDockerCmdExecFactory extends AbstractDockerCmdExecFactory implements DockerCmdExecFactory {
62+
public class NettyDockerCmdExecFactory extends AbstractDockerCmdExecFactory {
6263

6364
private static String threadPrefix = "dockerjava-netty";
6465

@@ -88,10 +89,6 @@ public DuplexChannel getChannel() {
8889
}
8990
};
9091

91-
private Integer connectTimeout = null;
92-
93-
private Integer readTimeout = null;
94-
9592
@Override
9693
public void init(DockerClientConfig dockerClientConfig) {
9794
super.init(dockerClientConfig);
@@ -292,29 +289,13 @@ public void close() throws IOException {
292289
eventLoopGroup.shutdownGracefully();
293290
}
294291

295-
/**
296-
* Configure connection timeout in milliseconds
297-
*/
298-
public NettyDockerCmdExecFactory withConnectTimeout(Integer connectTimeout) {
299-
this.connectTimeout = connectTimeout;
300-
return this;
301-
}
302-
303-
/**
304-
* Configure read timeout in milliseconds
305-
*/
306-
public NettyDockerCmdExecFactory withReadTimeout(Integer readTimeout) {
307-
this.readTimeout = readTimeout;
308-
return this;
309-
}
310-
311292
private <T extends Channel> T configure(T channel) {
312293
ChannelConfig channelConfig = channel.config();
313294

314-
if (connectTimeout != null) {
295+
if (nonNull(connectTimeout)) {
315296
channelConfig.setConnectTimeoutMillis(connectTimeout);
316297
}
317-
if (readTimeout != null) {
298+
if (nonNull(readTimeout)) {
318299
channel.pipeline().addLast("readTimeoutHandler", new ReadTimeoutHandler());
319300
}
320301

docker-java-transport-okhttp/src/main/java/com/github/dockerjava/okhttp/OkHttpDockerCmdExecFactory.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import java.util.Collections;
2121
import java.util.concurrent.TimeUnit;
2222

23+
import static java.util.Objects.nonNull;
24+
2325
public class OkHttpDockerCmdExecFactory extends AbstractDockerCmdExecFactory {
2426

2527
private static final String SOCKET_SUFFIX = ".socket";
@@ -34,9 +36,15 @@ public class OkHttpDockerCmdExecFactory extends AbstractDockerCmdExecFactory {
3436
public void init(DockerClientConfig dockerClientConfig) {
3537
super.init(dockerClientConfig);
3638

37-
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder()
38-
.readTimeout(0, TimeUnit.SECONDS)
39-
.retryOnConnectionFailure(true);
39+
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
40+
if (nonNull(readTimeout)) {
41+
clientBuilder.readTimeout(readTimeout, TimeUnit.MILLISECONDS);
42+
}
43+
if (nonNull(connectTimeout)) {
44+
clientBuilder.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS);
45+
}
46+
47+
clientBuilder.retryOnConnectionFailure(true);
4048

4149
URI dockerHost = dockerClientConfig.getDockerHost();
4250
switch (dockerHost.getScheme()) {

docker-java/src/test/java/com/github/dockerjava/cmd/CmdIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public DockerCmdExecFactory createExecFactory() {
3535
OKHTTP(true) {
3636
@Override
3737
public DockerCmdExecFactory createExecFactory() {
38-
return new OkHttpDockerCmdExecFactory();
38+
return new OkHttpDockerCmdExecFactory().withConnectTimeout(10 * 1000);
3939
}
4040
};
4141

0 commit comments

Comments
 (0)