You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tez.apache.org by zj...@apache.org on 2015/02/16 13:03:33 UTC
tez git commit: TEZ-2038. TEZ-UI DAG is always running in tez-ui when
the app is failed but no DAGFinishedEvent is logged (Prakash Ramachandran via
zjffdu)
Repository: tez
Updated Branches:
refs/heads/master a5a566591 -> b6cb7f81c
TEZ-2038. TEZ-UI DAG is always running in tez-ui when the app is failed but no DAGFinishedEvent is logged (Prakash Ramachandran via zjffdu)
Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/b6cb7f81
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/b6cb7f81
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/b6cb7f81
Branch: refs/heads/master
Commit: b6cb7f81c8944e2948195c1fbb9b95faaa257f06
Parents: a5a5665
Author: Jeff Zhang <zj...@apache.org>
Authored: Mon Feb 16 20:03:18 2015 +0800
Committer: Jeff Zhang <zj...@apache.org>
Committed: Mon Feb 16 20:03:18 2015 +0800
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../app/scripts/controllers/dag_controller.js | 34 +++++++++++---------
.../app/scripts/controllers/dag_vertices.js | 9 ++++++
.../app/scripts/controllers/dags_controller.js | 4 +++
.../controllers/tez-app-dags-controller.js | 19 +++++++++--
.../scripts/controllers/vertex_controller.js | 2 ++
.../src/main/webapp/app/scripts/helpers/misc.js | 18 +++++++++++
tez-ui/src/main/webapp/app/scripts/router.js | 3 ++
tez-ui/src/main/webapp/app/styles/colors.less | 3 +-
tez-ui/src/main/webapp/app/styles/main.less | 7 +++-
10 files changed, 80 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index fd20d20..6638e55 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -64,6 +64,7 @@ Release 0.6.1: Unreleased
INCOMPATIBLE CHANGES
ALL CHANGES:
+ TEZ-2038. TEZ-UI DAG is always running in tez-ui when the app is failed but no DAGFinishedEvent is logged.
TEZ-2102. Tez UI: DAG view has hidden edges, dragging DAG by holding vertex causes unintended click.
TEZ-2101. Tez UI: Issues on displaying a table.
TEZ-2092. Tez UI history url handler injects spurious trailing slash.
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/scripts/controllers/dag_controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/dag_controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/dag_controller.js
index b488841..210e673 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/dag_controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/dag_controller.js
@@ -21,17 +21,17 @@ App.DagController = Em.ObjectController.extend(App.Helpers.DisplayHelper, {
pageTitle: 'Dag',
loading: true,
- updateLoading: function() {
+ loadAdditional: function(dag) {
var that = this;
var loaders = [];
- var applicationId = this.get('applicationId');
- if (this.get('status') === 'RUNNING') {
+ var applicationId = dag.get('applicationId');
+ if (dag.get('status') === 'RUNNING') {
// update the progress info if available. this need not block the UI
- var aminfoLoader = that.store.find('dagProgress', that.get('id'), {
+ var aminfoLoader = that.store.find('dagProgress', dag.get('id'), {
appId: applicationId,
- dagIdx: that.get('idx')
+ dagIdx: dag.get('idx')
}).then(function(dagProgressInfo) {
- that.set('progress', dagProgressInfo.get('progress'));
+ dag.set('progress', dagProgressInfo.get('progress'));
}).catch(function (error) {
Em.Logger.error("Failed to fetch dagProgress")
});
@@ -39,24 +39,26 @@ App.DagController = Em.ObjectController.extend(App.Helpers.DisplayHelper, {
}
var appDetailLoader = this.store.find('appDetail', applicationId)
.then(function(app){
- that.set('appDetail', app);
+ dag.set('appDetail', app);
+ var appState = app.get('appState');
+ if (appState) {
+ dag.set('yarnAppState', appState);
+ }
+ dag.set('status', App.Helpers.misc.getRealStatus(dag.get('status'), app.get('appState'), app.get('finalAppStatus')));
});
var tezAppLoader = this.store.find('tezApp', 'tez_' + applicationId)
.then(function(app){
- that.set('tezApp', app);
+ dag.set('tezApp', app);
});
- var appDetailFetcher = that.store.find('appDetail', applicationId).then(function(appDetail) {
- var appState = appDetail.get('appState');
- if (appState) {
- that.set('yarnAppState', appState);
- }
- });
- loaders.push(appDetailFetcher);
+ loaders.push(appDetailLoader);
+
Em.RSVP.allSettled(loaders).then(function(){
that.set('loading', false);
});
- }.observes('content'),
+
+ return Em.RSVP.all(loaders);
+ },
enableAppIdLink: function() {
return !!(this.get('tezApp') && this.get('appDetail'));
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js b/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js
index c26f83e..a373220 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/dag_vertices.js
@@ -49,6 +49,15 @@ App.DagVerticesController = Em.ObjectController.extend(App.PaginatedContentMixin
var that = this;
vertices = this.get('entities');
+
+ var dagStatus = this.get('controllers.dag.status');
+ if (App.Helpers.misc.isStatusInUnsuccessful(dagStatus)) {
+ vertices.filterBy('status', 'RUNNING')
+ .forEach(function(item) {
+ item.set('status', 'KILLED');
+ });
+ }
+
var runningVerticesIdx = vertices
.filterBy('status', 'RUNNING')
.map(function(item) {
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js
index fbe49ef..53d9eeb 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/dags_controller.js
@@ -79,6 +79,10 @@ App.DagsController = Em.ObjectController.extend(App.PaginatedContentMixin, App.C
fetcher = store.find('appDetail', appId);
fetcher.then(function (app) {
dag.set('appDetail', app);
+ if (dag.get('status') === 'RUNNING') {
+ dag.set('status', App.Helpers.misc.getRealStatus(dag.get('status'), app.get('appState'),
+ app.get('finalAppStatus')));
+ }
});
loaders.push(fetcher);
//Load tezApp details
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/scripts/controllers/tez-app-dags-controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/tez-app-dags-controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/tez-app-dags-controller.js
index 438ec29..79ae56b 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/tez-app-dags-controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/tez-app-dags-controller.js
@@ -57,14 +57,17 @@ App.TezAppDagsController = Em.ObjectController.extend(App.PaginatedContentMixin,
that.set('loading', true);
this.get('store').unloadAll(childEntityType);
- this.get('store').findQuery(childEntityType, this.getFilterProperties()).then(function(entities){
+ this.get('store').findQuery(childEntityType, this.getFilterProperties())
+ .then(function(entities){
+
that.set('entities', entities);
var loaders = [];
entities.forEach(function (dag) {
+ var applicationId = dag.get('applicationId');
if (dag.get('status') === 'RUNNING') {
amInfoFetcher = that.store.find('dagProgress', dag.get('id'), {
- appId: dag.get('applicationId'),
+ appId: applicationId,
dagIdx: dag.get('idx')
}).then(function(dagProgressInfo) {
dag.set('progress', dagProgressInfo.get('progress'));
@@ -73,7 +76,19 @@ App.TezAppDagsController = Em.ObjectController.extend(App.PaginatedContentMixin,
});
loaders.push(amInfoFetcher);
}
+
+ var appDetailLoader = that.store.find('appDetail', applicationId)
+ .then(function(app){
+ dag.set('appDetail', app);
+ var appState = app.get('appState');
+ if (appState) {
+ dag.set('yarnAppState', appState);
+ }
+ dag.set('status', App.Helpers.misc.getRealStatus(dag.get('status'),
+ app.get('appState'), app.get('finalAppStatus')));
+ });
});
+
Em.RSVP.allSettled(loaders).then(function(){
that.set('loading', false);
});
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/scripts/controllers/vertex_controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_controller.js
index 3c56690..f6893b9 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_controller.js
@@ -48,6 +48,8 @@ App.VertexController = Em.ObjectController.extend(App.Helpers.DisplayHelper, {
if (appState) {
that.set('yarnAppState', appState);
}
+ that.set('status', App.Helpers.misc.getRealStatus(that.get('status'), appDetail.get('appState'),
+ appDetail.get('finalAppStatus')));
});
loaders.push(appDetailFetcher);
Em.RSVP.allSettled(loaders).then(function(){
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/helpers/misc.js b/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
index 50663a8..4872881 100644
--- a/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
+++ b/tez-ui/src/main/webapp/app/scripts/helpers/misc.js
@@ -41,11 +41,25 @@ App.Helpers.misc = {
}
return 'success';
+ case 'UNDEFINED':
+ return 'unknown';
default:
return 'submitted';
}
},
+ getRealStatus: function(entityState, yarnAppState, yarnAppFinalState) {
+ if (entityState != 'RUNNING' || (yarnAppState != 'FINISHED' && yarnAppState != 'KILLED' && yarnAppState != 'FAILED')) {
+ return entityState;
+ }
+
+ if (yarnAppState == 'KILLED' || yarnAppState == 'FAILED') {
+ return yarnAppState;
+ }
+
+ return yarnFinalState;
+ },
+
getCounterValueForDag: function(counterGroups, dagID, counterGroupName, counterName) {
if (!counterGroups) {
return 0;
@@ -76,6 +90,10 @@ App.Helpers.misc = {
return $.inArray(status, ['RUNNING', 'SUCCEEDED', 'FAILED', 'KILLED']) != -1;
},
+ isStatusInUnsuccessful: function(status) {
+ return $.inArray(status, ['FAILED', 'KILLED', 'UNDEFINED']) != -1;
+ },
+
/**
* To trim a complete class path with namespace to the class name.
*/
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/scripts/router.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/router.js b/tez-ui/src/main/webapp/app/scripts/router.js
index b1f750b..efb52d7 100644
--- a/tez-ui/src/main/webapp/app/scripts/router.js
+++ b/tez-ui/src/main/webapp/app/scripts/router.js
@@ -141,6 +141,9 @@ App.DagRoute = Em.Route.extend({
model: function(params) {
return this.store.find('dag', params.dag_id);
},
+ afterModel: function(model) {
+ return this.controllerFor('dag').loadAdditional(model);
+ },
setupController: setupControllerFactory('Dag: %@ (%@)', 'name', 'id')
});
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/styles/colors.less
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/styles/colors.less b/tez-ui/src/main/webapp/app/styles/colors.less
index b8e3b6e..0fee7c0 100644
--- a/tez-ui/src/main/webapp/app/styles/colors.less
+++ b/tez-ui/src/main/webapp/app/styles/colors.less
@@ -33,4 +33,5 @@
@success-color: limegreen;
@error-color: crimson;
-@warning-color: orange;
\ No newline at end of file
+@warning-color: orange;
+@unknown-color: crimson;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tez/blob/b6cb7f81/tez-ui/src/main/webapp/app/styles/main.less
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/styles/main.less b/tez-ui/src/main/webapp/app/styles/main.less
index 161c8f3..fef8c00 100644
--- a/tez-ui/src/main/webapp/app/styles/main.less
+++ b/tez-ui/src/main/webapp/app/styles/main.less
@@ -338,13 +338,18 @@ body, html, body > .ember-view {
&.killed {
.fa-icon(exclamation-circle);
- color: @warning-color;
+ color: @error-color;
}
&.warning {
.fa-icon(exclamation-triangle);
color: @warning-color;
}
+
+ &.unknown {
+ .fa-icon(exclamation);
+ color: @unknown-color;
+ }
}
.fa-action {