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 ð
---