Github user GJL commented on a diff in the pull request:
https://github.com/apache/flink/pull/5442#discussion_r167249950
--- Diff:
flink-runtime/src/main/java/org/apache/flink/runtime/webmonitor/WebMonitorUtils.java
---
@@ -207,6 +215,53 @@ public static WebMonitor startWebRuntimeMonitor(
}
}
+ @SuppressWarnings({"unchecked", "rawtypes"})
+ public static <T extends RestfulGateway>
List<Tuple2<RestHandlerSpecification, ChannelInboundHandler>>
tryLoadJarUploadHandler(
+ GatewayRetriever<T> leaderRetriever,
+ CompletableFuture<String> restAddressFuture,
+ Time timeout,
+ java.nio.file.Path uploadDir,
+ Executor executor) {
+
+ // 1. Check if flink-runtime-web is in the classpath
+ try {
+ final String classname =
"org.apache.flink.runtime.webmonitor.WebRuntimeMonitor";
+ Class.forName(classname).asSubclass(WebMonitor.class);
+ } catch (ClassNotFoundException e) {
+ // class not found means that there is no
flink-runtime-web in the classpath
+ return Collections.emptyList();
+ }
+
+ try {
+ final String classname =
"org.apache.flink.runtime.webmonitor.handlers.ng.JarUploadHandler";
+ final Class<?> clazz = Class.forName(classname);
+ final Constructor<?> constructor = clazz.getConstructor(
+ CompletableFuture.class,
+ GatewayRetriever.class,
+ Time.class,
+ Map.class,
+ MessageHeaders.class,
+ java.nio.file.Path.class,
+ Executor.class);
+
+ final MessageHeaders jarUploadMessageHeaders =
+ (MessageHeaders) Class
+
.forName("org.apache.flink.runtime.webmonitor.handlers.ng.JarUploadMessageHeaders")
+ .newInstance();
+
+ return Arrays.asList(Tuple2.of(jarUploadMessageHeaders,
(ChannelInboundHandler) constructor.newInstance(
+ restAddressFuture,
+ leaderRetriever,
+ timeout,
+ Collections.emptyMap(),
--- End diff --
should use headers defined by `restConfiguration.getResponseHeaders()`
---