Github user tillrohrmann commented on a diff in the pull request: https://github.com/apache/flink/pull/6189#discussion_r197217551 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/rest/RestClient.java --- @@ -239,6 +322,45 @@ public void shutdown(Time timeout) { return responseFuture; } + private interface Request { + void writeTo(Channel channel) throws IOException; + } + + private static final class SimpleRequest implements Request { + private final HttpRequest httpRequest; + + SimpleRequest(HttpRequest httpRequest) { + this.httpRequest = httpRequest; + } + + @Override + public void writeTo(Channel channel) { + channel.writeAndFlush(httpRequest); + } + } + + private static final class MultipartRequest implements Request { + private final HttpRequest httpRequest; + private final HttpPostRequestEncoder bodyRequestEncoder; + + MultipartRequest(HttpRequest httpRequest, HttpPostRequestEncoder bodyRequestEncoder) { + this.httpRequest = httpRequest; + this.bodyRequestEncoder = bodyRequestEncoder; + } + + @Override + public void writeTo(Channel channel) { + channel.writeAndFlush(httpRequest); + // this should never be false as we explicitly set the encoder to use multipart messages + if (bodyRequestEncoder.isChunked()) { + channel.writeAndFlush(bodyRequestEncoder); + } + + // release data and remove temporary files if they were created + bodyRequestEncoder.cleanFiles(); + } + } --- End diff -- Nice, this looks now really sleek ð
---