Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b8d5e37

Browse filesBrowse files
authored
Fix Netty leaks (#1397)
1 parent 37ddf09 commit b8d5e37
Copy full SHA for b8d5e37

File tree

1 file changed

+46
-38
lines changed
Filter options

1 file changed

+46
-38
lines changed

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

Copy file name to clipboardExpand all lines: docker-java-transport-netty/src/main/java/com/github/dockerjava/netty/NettyInvocationBuilder.java
+46-38Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,20 @@ public void delete() {
111111

112112
HttpRequestProvider requestProvider = httpDeleteRequestProvider();
113113

114-
ResponseCallback<Void> callback = new ResponseCallback<>();
114+
try (ResponseCallback<Void> callback = new ResponseCallback<>()) {
115115

116-
HttpResponseHandler responseHandler = new HttpResponseHandler(requestProvider, callback);
116+
HttpResponseHandler responseHandler = new HttpResponseHandler(requestProvider, callback);
117117

118-
Channel channel = getChannel();
118+
Channel channel = getChannel();
119119

120-
channel.pipeline().addLast(responseHandler);
120+
channel.pipeline().addLast(responseHandler);
121121

122-
sendRequest(requestProvider, channel);
122+
sendRequest(requestProvider, channel);
123123

124-
callback.awaitResult();
124+
callback.awaitResult();
125+
} catch (IOException e) {
126+
throw new RuntimeException(e);
127+
}
125128
}
126129

127130
public void get(ResultCallback<Frame> resultCallback) {
@@ -141,12 +144,13 @@ public void get(ResultCallback<Frame> resultCallback) {
141144
}
142145

143146
public <T> T get(TypeReference<T> typeReference) {
147+
try (ResponseCallback<T> callback = new ResponseCallback<>()) {
148+
get(typeReference, callback);
144149

145-
ResponseCallback<T> callback = new ResponseCallback<>();
146-
147-
get(typeReference, callback);
148-
149-
return callback.awaitResult();
150+
return callback.awaitResult();
151+
} catch (IOException e) {
152+
throw new RuntimeException(e);
153+
}
150154
}
151155

152156
public <T> void get(TypeReference<T> typeReference, ResultCallback<T> resultCallback) {
@@ -267,12 +271,13 @@ public void run() {
267271
}
268272

269273
public <T> T post(final Object entity, TypeReference<T> typeReference) {
274+
try (ResponseCallback<T> callback = new ResponseCallback<>()) {
275+
post(entity, typeReference, callback);
270276

271-
ResponseCallback<T> callback = new ResponseCallback<>();
272-
273-
post(entity, typeReference, callback);
274-
275-
return callback.awaitResult();
277+
return callback.awaitResult();
278+
} catch (IOException e) {
279+
throw new RuntimeException(e);
280+
}
276281
}
277282

278283
public <T> void post(final Object entity, TypeReference<T> typeReference, final ResultCallback<T> resultCallback) {
@@ -372,12 +377,13 @@ private void setDefaultHeaders(HttpRequest request) {
372377
}
373378

374379
public <T> T post(TypeReference<T> typeReference, InputStream body) {
380+
try (ResponseCallback<T> callback = new ResponseCallback<>()) {
381+
post(typeReference, callback, body);
375382

376-
ResponseCallback<T> callback = new ResponseCallback<>();
377-
378-
post(typeReference, callback, body);
379-
380-
return callback.awaitResult();
383+
return callback.awaitResult();
384+
} catch (IOException e) {
385+
throw new RuntimeException(e);
386+
}
381387
}
382388

383389
public <T> void post(TypeReference<T> typeReference, ResultCallback<T> resultCallback, InputStream body) {
@@ -464,28 +470,30 @@ public void put(InputStream body, com.github.dockerjava.core.MediaType mediaType
464470

465471
Channel channel = getChannel();
466472

467-
ResponseCallback<Void> resultCallback = new ResponseCallback<>();
473+
try (ResponseCallback<Void> resultCallback = new ResponseCallback<>()) {
474+
HttpResponseHandler responseHandler = new HttpResponseHandler(requestProvider, resultCallback);
468475

469-
HttpResponseHandler responseHandler = new HttpResponseHandler(requestProvider, resultCallback);
476+
channel.pipeline().addLast(new ChunkedWriteHandler());
477+
channel.pipeline().addLast(responseHandler);
470478

471-
channel.pipeline().addLast(new ChunkedWriteHandler());
472-
channel.pipeline().addLast(responseHandler);
473-
474-
HttpRequest request = requestProvider.getHttpRequest(resource);
479+
HttpRequest request = requestProvider.getHttpRequest(resource);
475480

476-
// don't accept FullHttpRequest here
477-
if (request instanceof FullHttpRequest) {
478-
throw new DockerClientException("fatal: request is instance of FullHttpRequest");
479-
}
481+
// don't accept FullHttpRequest here
482+
if (request instanceof FullHttpRequest) {
483+
throw new DockerClientException("fatal: request is instance of FullHttpRequest");
484+
}
480485

481-
request.headers().set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
482-
request.headers().remove(HttpHeaderNames.CONTENT_LENGTH);
483-
request.headers().set(HttpHeaderNames.CONTENT_TYPE, mediaType.getMediaType());
486+
request.headers().set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
487+
request.headers().remove(HttpHeaderNames.CONTENT_LENGTH);
488+
request.headers().set(HttpHeaderNames.CONTENT_TYPE, mediaType.getMediaType());
484489

485-
channel.write(request);
486-
channel.write(new ChunkedStream(new BufferedInputStream(body, 1024 * 1024)));
487-
channel.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT);
490+
channel.write(request);
491+
channel.write(new ChunkedStream(new BufferedInputStream(body, 1024 * 1024)));
492+
channel.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT);
488493

489-
resultCallback.awaitResult();
494+
resultCallback.awaitResult();
495+
} catch (IOException e) {
496+
throw new RuntimeException(e);
497+
}
490498
}
491499
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.