You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by mx...@apache.org on 2015/11/02 23:55:50 UTC
[6/7] flink git commit: [FLINK-2939] add cancel button to web frontend
[FLINK-2939] add cancel button to web frontend
Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/8a4f6f05
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/8a4f6f05
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/8a4f6f05
Branch: refs/heads/release-0.10
Commit: 8a4f6f05cd1481531f5c54f5136f1e2d9b669c7e
Parents: 2009ca1
Author: Sachin Goel <sa...@gmail.com>
Authored: Sun Nov 1 15:54:13 2015 +0530
Committer: Maximilian Michels <mx...@apache.org>
Committed: Mon Nov 2 22:41:18 2015 +0100
----------------------------------------------------------------------
.../runtime/webmonitor/WebRuntimeMonitor.java | 6 ++-
.../handlers/JobCancellationHandler.java | 46 ++++++++++++++++++++
.../web-dashboard/app/partials/jobs/job.jade | 6 ++-
.../app/scripts/modules/jobs/jobs.ctrl.coffee | 4 ++
.../app/scripts/modules/jobs/jobs.svc.coffee | 3 ++
.../web-dashboard/app/styles/index.styl | 5 +--
.../web-dashboard/web/css/index.css | 2 +-
flink-runtime-web/web-dashboard/web/js/index.js | 13 +++++-
.../web-dashboard/web/partials/jobs/job.html | 1 +
9 files changed, 77 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/8a4f6f05/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitor.java
----------------------------------------------------------------------
diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitor.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitor.java
index e69165d..eed781e 100644
--- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitor.java
+++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/WebRuntimeMonitor.java
@@ -36,6 +36,7 @@ import org.apache.flink.runtime.akka.AkkaUtils;
import org.apache.flink.runtime.leaderretrieval.LeaderRetrievalService;
import org.apache.flink.runtime.webmonitor.files.StaticFileServerHandler;
import org.apache.flink.runtime.webmonitor.handlers.JobAccumulatorsHandler;
+import org.apache.flink.runtime.webmonitor.handlers.JobCancellationHandler;
import org.apache.flink.runtime.webmonitor.handlers.JobManagerConfigHandler;
import org.apache.flink.runtime.webmonitor.handlers.JobPlanHandler;
import org.apache.flink.runtime.webmonitor.handlers.JobConfigHandler;
@@ -186,7 +187,10 @@ public class WebRuntimeMonitor implements WebMonitor {
.GET("/jobmanager/stdout", new StaticFileServerHandler(retriever, jobManagerAddressPromise.future(), timeout, logFiles.stdOutFile))
// this handler serves all the static contents
- .GET("/:*", new StaticFileServerHandler(retriever, jobManagerAddressPromise.future(), timeout, webRootDir));
+ .GET("/:*", new StaticFileServerHandler(retriever, jobManagerAddressPromise.future(), timeout, webRootDir))
+
+ // cancel a job
+ .DELETE("/jobs/:jobid", handler(new JobCancellationHandler()));
synchronized (startupShutdownLock) {
http://git-wip-us.apache.org/repos/asf/flink/blob/8a4f6f05/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/JobCancellationHandler.java
----------------------------------------------------------------------
diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/JobCancellationHandler.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/JobCancellationHandler.java
new file mode 100644
index 0000000..20f28bb
--- /dev/null
+++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/JobCancellationHandler.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.flink.runtime.webmonitor.handlers;
+
+import org.apache.flink.api.common.JobID;
+import org.apache.flink.runtime.instance.ActorGateway;
+import org.apache.flink.runtime.messages.JobManagerMessages;
+import org.apache.flink.util.StringUtils;
+
+import java.util.Map;
+
+public class JobCancellationHandler implements RequestHandler, RequestHandler.JsonResponse {
+
+ @Override
+ public String handleRequest(Map<String, String> params, ActorGateway jobManager) throws Exception {
+ try {
+ JobID jobid = new JobID(StringUtils.hexStringToByte(params.get("jobid")));
+ if (jobManager != null) {
+ jobManager.tell(new JobManagerMessages.CancelJob(jobid));
+ return "";
+ }
+ else {
+ throw new Exception("No connection to the leading JobManager.");
+ }
+ }
+ catch (Exception e) {
+ throw new RuntimeException("Failed to cancel the job with id: " + params.get("jobid") + e.getMessage(), e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flink/blob/8a4f6f05/flink-runtime-web/web-dashboard/app/partials/jobs/job.jade
----------------------------------------------------------------------
diff --git a/flink-runtime-web/web-dashboard/app/partials/jobs/job.jade b/flink-runtime-web/web-dashboard/app/partials/jobs/job.jade
index d0291a4..bdfd7ea 100644
--- a/flink-runtime-web/web-dashboard/app/partials/jobs/job.jade
+++ b/flink-runtime-web/web-dashboard/app/partials/jobs/job.jade
@@ -35,10 +35,14 @@ nav.navbar.navbar-default.navbar-fixed-top.navbar-main(ng-if="job")
span(ng-if="job['end-time'] > -1")
| -
| {{ job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}
-
+
.navbar-info.last.first(ng-if="job.duration > -1")
| {{job.duration}} ms
+ .navbar-info.last.first(ng-if="job.state=='RUNNING' || job.state=='CREATED'")
+ span.show-pointer.label.label-danger(ng-click="cancelJob($event)")
+ | Cancel
+
nav.navbar.navbar-default.navbar-fixed-top.navbar-main-additional(ng-if="job")
ul.nav.nav-tabs
li(ui-sref-active='active')
http://git-wip-us.apache.org/repos/asf/flink/blob/8a4f6f05/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.ctrl.coffee
----------------------------------------------------------------------
diff --git a/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.ctrl.coffee b/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.ctrl.coffee
index 037a7e8..e18a5fc 100644
--- a/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.ctrl.coffee
+++ b/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.ctrl.coffee
@@ -70,6 +70,10 @@ angular.module('flinkApp')
$interval.cancel(refresher)
+ $scope.cancelJob = (cancelEvent) ->
+ angular.element(cancelEvent.currentTarget).removeClass('label-danger').addClass('label-info').html('Cancelling...')
+ JobsService.cancelJob($stateParams.jobid).then (data) ->
+ {}
# --------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/8a4f6f05/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.svc.coffee
----------------------------------------------------------------------
diff --git a/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.svc.coffee b/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.svc.coffee
index 2e45cd9..698437f 100644
--- a/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.svc.coffee
+++ b/flink-runtime-web/web-dashboard/app/scripts/modules/jobs/jobs.svc.coffee
@@ -211,4 +211,7 @@ angular.module('flinkApp')
deferred.promise
+ @cancelJob = (jobid) ->
+ $http.delete "jobs/" + jobid
+
@
http://git-wip-us.apache.org/repos/asf/flink/blob/8a4f6f05/flink-runtime-web/web-dashboard/app/styles/index.styl
----------------------------------------------------------------------
diff --git a/flink-runtime-web/web-dashboard/app/styles/index.styl b/flink-runtime-web/web-dashboard/app/styles/index.styl
index 25e1170..7d97efc 100644
--- a/flink-runtime-web/web-dashboard/app/styles/index.styl
+++ b/flink-runtime-web/web-dashboard/app/styles/index.styl
@@ -420,8 +420,5 @@ livechart
#non-heap-mem
background-color: #90ed7d
-a.show-pointer
+.show-pointer
cursor: pointer
-
-
-
http://git-wip-us.apache.org/repos/asf/flink/blob/8a4f6f05/flink-runtime-web/web-dashboard/web/css/index.css
----------------------------------------------------------------------
diff --git a/flink-runtime-web/web-dashboard/web/css/index.css b/flink-runtime-web/web-dashboard/web/css/index.css
index 43f7d98..101f4cb 100644
--- a/flink-runtime-web/web-dashboard/web/css/index.css
+++ b/flink-runtime-web/web-dashboard/web/css/index.css
@@ -591,6 +591,6 @@ svg.graph .node-label {
#non-heap-mem {
background-color: #90ed7d;
}
-a.show-pointer {
+.show-pointer {
cursor: pointer;
}