Github user uce commented on a diff in the pull request:
https://github.com/apache/flink/pull/3376#discussion_r103471161
--- Diff:
flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitor.java
---
@@ -256,117 +256,106 @@ public WebRuntimeMonitor(
RuntimeMonitorHandler triggerHandler =
handler(cancelWithSavepoint.getTriggerHandler());
RuntimeMonitorHandler inProgressHandler =
handler(cancelWithSavepoint.getInProgressHandler());
- router = new Router()
- // config how to interact with this web server
- .GET("/config", handler(new
DashboardConfigHandler(cfg.getRefreshInterval())))
-
- // the overview - how many task managers, slots, free
slots, ...
- .GET("/overview", handler(new
ClusterOverviewHandler(DEFAULT_REQUEST_TIMEOUT)))
-
- // job manager configuration
- .GET("/jobmanager/config", handler(new
JobManagerConfigHandler(config)))
-
- // overview over jobs
- .GET("/joboverview", handler(new
CurrentJobsOverviewHandler(DEFAULT_REQUEST_TIMEOUT, true, true)))
- .GET("/joboverview/running", handler(new
CurrentJobsOverviewHandler(DEFAULT_REQUEST_TIMEOUT, true, false)))
- .GET("/joboverview/completed", handler(new
CurrentJobsOverviewHandler(DEFAULT_REQUEST_TIMEOUT, false, true)))
-
- .GET("/jobs", handler(new
CurrentJobIdsHandler(DEFAULT_REQUEST_TIMEOUT)))
-
- .GET("/jobs/:jobid", handler(new
JobDetailsHandler(currentGraphs, metricFetcher)))
- .GET("/jobs/:jobid/vertices", handler(new
JobDetailsHandler(currentGraphs, metricFetcher)))
-
- .GET("/jobs/:jobid/vertices/:vertexid", handler(new
JobVertexDetailsHandler(currentGraphs, metricFetcher)))
- .GET("/jobs/:jobid/vertices/:vertexid/subtasktimes",
handler(new SubtasksTimesHandler(currentGraphs)))
- .GET("/jobs/:jobid/vertices/:vertexid/taskmanagers",
handler(new JobVertexTaskManagersHandler(currentGraphs, metricFetcher)))
- .GET("/jobs/:jobid/vertices/:vertexid/accumulators",
handler(new JobVertexAccumulatorsHandler(currentGraphs)))
- .GET("/jobs/:jobid/vertices/:vertexid/backpressure",
handler(new JobVertexBackPressureHandler(
- currentGraphs,
-
backPressureStatsTracker,
- refreshInterval)))
- .GET("/jobs/:jobid/vertices/:vertexid/metrics",
handler(new JobVertexMetricsHandler(metricFetcher)))
-
.GET("/jobs/:jobid/vertices/:vertexid/subtasks/accumulators", handler(new
SubtasksAllAccumulatorsHandler(currentGraphs)))
-
.GET("/jobs/:jobid/vertices/:vertexid/subtasks/:subtasknum", handler(new
SubtaskCurrentAttemptDetailsHandler(currentGraphs, metricFetcher)))
-
.GET("/jobs/:jobid/vertices/:vertexid/subtasks/:subtasknum/attempts/:attempt",
handler(new SubtaskExecutionAttemptDetailsHandler(currentGraphs,
metricFetcher)))
-
.GET("/jobs/:jobid/vertices/:vertexid/subtasks/:subtasknum/attempts/:attempt/accumulators",
handler(new SubtaskExecutionAttemptAccumulatorsHandler(currentGraphs)))
-
- .GET("/jobs/:jobid/plan", handler(new
JobPlanHandler(currentGraphs)))
- .GET("/jobs/:jobid/config", handler(new
JobConfigHandler(currentGraphs)))
- .GET("/jobs/:jobid/exceptions", handler(new
JobExceptionsHandler(currentGraphs)))
- .GET("/jobs/:jobid/accumulators", handler(new
JobAccumulatorsHandler(currentGraphs)))
- .GET("/jobs/:jobid/metrics", handler(new
JobMetricsHandler(metricFetcher)))
-
- .GET("/taskmanagers", handler(new
TaskManagersHandler(DEFAULT_REQUEST_TIMEOUT, metricFetcher)))
- .GET("/taskmanagers/:" +
TaskManagersHandler.TASK_MANAGER_ID_KEY, handler(new
TaskManagersHandler(DEFAULT_REQUEST_TIMEOUT, metricFetcher)))
- .GET("/taskmanagers/:" +
TaskManagersHandler.TASK_MANAGER_ID_KEY + "/log",
- new TaskManagerLogHandler(retriever, context,
jobManagerAddressPromise.future(), timeout,
- TaskManagerLogHandler.FileMode.LOG,
config, enableSSL))
- .GET("/taskmanagers/:" +
TaskManagersHandler.TASK_MANAGER_ID_KEY + "/stdout",
- new TaskManagerLogHandler(retriever, context,
jobManagerAddressPromise.future(), timeout,
- TaskManagerLogHandler.FileMode.STDOUT,
config, enableSSL))
- .GET("/taskmanagers/:" +
TaskManagersHandler.TASK_MANAGER_ID_KEY + "/metrics", handler(new
TaskManagerMetricsHandler(metricFetcher)))
+ router = new Router();
+ // config how to interact with this web server
+ GET(router, new
DashboardConfigHandler(cfg.getRefreshInterval()));
+
+ // the overview - how many task managers, slots, free slots, ...
+ GET(router, new
ClusterOverviewHandler(DEFAULT_REQUEST_TIMEOUT));
+
+ // job manager configuration
+ GET(router, new JobManagerConfigHandler(config));
+
+ // overview over jobs
+ GET(router, new
CurrentJobsOverviewHandler(DEFAULT_REQUEST_TIMEOUT, true, true));
+ GET(router, new
CurrentJobsOverviewHandler(DEFAULT_REQUEST_TIMEOUT, true, false));
+ GET(router, new
CurrentJobsOverviewHandler(DEFAULT_REQUEST_TIMEOUT, false, true));
+
+ GET(router, new CurrentJobIdsHandler(DEFAULT_REQUEST_TIMEOUT));
+
+ GET(router, new JobDetailsHandler(currentGraphs,
metricFetcher));
+
+ GET(router, new JobVertexDetailsHandler(currentGraphs,
metricFetcher));
+ GET(router, new SubtasksTimesHandler(currentGraphs));
+ GET(router, new JobVertexTaskManagersHandler(currentGraphs,
metricFetcher));
+ GET(router, new JobVertexAccumulatorsHandler(currentGraphs));
+ GET(router, new JobVertexBackPressureHandler(currentGraphs,
backPressureStatsTracker, refreshInterval));
+ GET(router, new JobVertexMetricsHandler(metricFetcher));
+ GET(router, new SubtasksAllAccumulatorsHandler(currentGraphs));
+ GET(router, new
SubtaskCurrentAttemptDetailsHandler(currentGraphs, metricFetcher));
+ GET(router, new
SubtaskExecutionAttemptDetailsHandler(currentGraphs, metricFetcher));
+ GET(router, new
SubtaskExecutionAttemptAccumulatorsHandler(currentGraphs));
+
+ GET(router, new JobPlanHandler(currentGraphs));
+ GET(router, new JobConfigHandler(currentGraphs));
+ GET(router, new JobExceptionsHandler(currentGraphs));
+ GET(router, new JobAccumulatorsHandler(currentGraphs));
+ GET(router, new JobMetricsHandler(metricFetcher));
+
+ GET(router, new TaskManagersHandler(DEFAULT_REQUEST_TIMEOUT,
metricFetcher));
+ GET(router, new TaskManagerLogHandler(retriever, context,
jobManagerAddressPromise.future(), timeout,
+ TaskManagerLogHandler.FileMode.LOG, config,
enableSSL));
+ GET(router, new TaskManagerLogHandler(retriever, context,
jobManagerAddressPromise.future(), timeout,
+ TaskManagerLogHandler.FileMode.STDOUT, config,
enableSSL));
+ GET(router, new TaskManagerMetricsHandler(metricFetcher));
+ router
// log and stdout
.GET("/jobmanager/log", logFiles.logFile == null ? new
ConstantTextHandler("(log file unavailable)") :
new StaticFileServerHandler(retriever,
jobManagerAddressPromise.future(), timeout, logFiles.logFile,
enableSSL))
.GET("/jobmanager/stdout", logFiles.stdOutFile == null
? new ConstantTextHandler("(stdout file unavailable)") :
new StaticFileServerHandler(retriever,
jobManagerAddressPromise.future(), timeout, logFiles.stdOutFile,
- enableSSL))
-
- .GET("/jobmanager/metrics", handler(new
JobManagerMetricsHandler(metricFetcher)))
+ enableSSL));
- // Cancel a job via GET (for proper integration with
YARN this has to be performed via GET)
- .GET("/jobs/:jobid/yarn-cancel", handler(new
JobCancellationHandler()))
+ GET(router, new JobManagerMetricsHandler(metricFetcher));
- // DELETE is the preferred way of canceling a job
(Rest-conform)
- .DELETE("/jobs/:jobid/cancel", handler(new
JobCancellationHandler()))
+ // Cancel a job via GET (for proper integration with YARN this
has to be performed via GET)
+ GET(router, new JobCancellationHandler());
+ // DELETE is the preferred way of canceling a job (Rest-conform)
+ DELETE(router, new JobCancellationHandler());
- .GET("/jobs/:jobid/cancel-with-savepoint",
triggerHandler)
-
.GET("/jobs/:jobid/cancel-with-savepoint/target-directory/:targetDirectory",
triggerHandler)
-
.GET(JobCancellationWithSavepointHandlers.IN_PROGRESS_URL, inProgressHandler)
+ GET(router, triggerHandler);
+ GET(router, inProgressHandler);
- // stop a job via GET (for proper integration with YARN
this has to be performed via GET)
- .GET("/jobs/:jobid/yarn-stop", handler(new
JobStoppingHandler()))
-
- // DELETE is the preferred way of stopping a job
(Rest-conform)
- .DELETE("/jobs/:jobid/stop", handler(new
JobStoppingHandler()));
+ // stop a job via GET (for proper integration with YARN this
has to be performed via GET)
+ GET(router, new JobStoppingHandler());
+ // DELETE is the preferred way of stopping a job (Rest-conform)
+ DELETE(router, new JobStoppingHandler());
int maxCachedEntries = config.getInteger(
ConfigConstants.JOB_MANAGER_WEB_CHECKPOINTS_HISTORY_SIZE,
ConfigConstants.DEFAULT_JOB_MANAGER_WEB_CHECKPOINTS_HISTORY_SIZE);
CheckpointStatsCache cache = new
CheckpointStatsCache(maxCachedEntries);
// Register the checkpoint stats handlers
- router
- .GET("/jobs/:jobid/checkpoints", handler(new
CheckpointStatsHandler(currentGraphs)))
- .GET("/jobs/:jobid/checkpoints/config", handler(new
CheckpointConfigHandler(currentGraphs)))
- .GET("/jobs/:jobid/checkpoints/details/:checkpointid",
handler(new CheckpointStatsDetailsHandler(currentGraphs, cache)))
-
.GET("/jobs/:jobid/checkpoints/details/:checkpointid/subtasks/:vertexid",
handler(new CheckpointStatsDetailsSubtasksHandler(currentGraphs, cache)));
+ GET(router, new CheckpointStatsHandler(currentGraphs));
+ GET(router, new CheckpointConfigHandler(currentGraphs));
+ GET(router, new CheckpointStatsDetailsHandler(currentGraphs,
cache));
+ GET(router, new
CheckpointStatsDetailsSubtasksHandler(currentGraphs, cache));
if (webSubmitAllow) {
- router
- // fetch the list of uploaded jars.
- .GET("/jars", handler(new
JarListHandler(uploadDir)))
+ // fetch the list of uploaded jars.
+ GET(router, new JarListHandler(uploadDir));
- // get plan for an uploaded jar
- .GET("/jars/:jarid/plan", handler(new
JarPlanHandler(uploadDir)))
+ // get plan for an uploaded jar
+ GET(router, new JarPlanHandler(uploadDir));
- // run a jar
- .POST("/jars/:jarid/run", handler(new
JarRunHandler(uploadDir, timeout, config)))
+ // run a jar
+ POST(router, new JarRunHandler(uploadDir, timeout,
config));
- // upload a jar
- .POST("/jars/upload", handler(new
JarUploadHandler(uploadDir)))
+ // upload a jar
+ POST(router, new JarUploadHandler(uploadDir));
- // delete an uploaded jar from submission
interface
- .DELETE("/jars/:jarid", handler(new
JarDeleteHandler(uploadDir)));
+ // delete an uploaded jar from submission interface
+ DELETE(router, new JarDeleteHandler(uploadDir));
} else {
- router
- // send an Access Denied message (sort of)
- // Every other GET request will go to the File
Server, which will not provide
- // access to the jar directory anyway, because
it doesn't exist in webRootDir.
- .GET("/jars", handler(new
JarAccessDeniedHandler()));
+ // send an Access Denied message
+ JarAccessDeniedHandler jad = new
JarAccessDeniedHandler();
+ GET(router, jad);
+ POST(router, jad);
--- End diff --
OK I thought that they are automatically rejected because we did not
register a route for them (only for GET before)
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---