Repository: tez
Updated Branches:
refs/heads/branch-0.7 d2d5f7eb5 -> 0c519d172
TEZ-2812. Tez UI: Update task & attempt tables while in progress. (Sreenath
Somarajapuram via hitesh)
(cherry picked from commit ffa3d5208dcd37f990273799d1dd60176e303568)
Conflicts:
CHANGES.txt
Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/0c519d17
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/0c519d17
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/0c519d17
Branch: refs/heads/branch-0.7
Commit: 0c519d1721f0148b426ada9045e799ec68cb6149
Parents: d2d5f7e
Author: Hitesh Shah <[email protected]>
Authored: Mon Sep 14 18:20:53 2015 -0700
Committer: Hitesh Shah <[email protected]>
Committed: Mon Sep 14 18:21:48 2015 -0700
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../controllers/dag-task-attempts-controller.js | 53 +++++++++++++++++++
.../task_task_attempts_controller.js | 54 ++++++++++++++++++++
.../vertex_task_attempts_controller.js | 53 +++++++++++++++++++
.../controllers/vertex_tasks_controller.js | 51 ++++++++++++++++++
5 files changed, 212 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tez/blob/0c519d17/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0e90920..1537d4e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -6,6 +6,7 @@ Release 0.7.1: Unreleased
INCOMPATIBLE CHANGES
ALL CHANGES:
+ TEZ-2812. Tez UI: Update task & attempt tables while in progress.
TEZ-2786. Tez UI: Update vertex, task & attempt details page while in
progress.
TEZ-2817. Tez UI: update in progress counter data for the dag vertices and
tasks table
TEZ-2813. Tez UI: add counter data for rest api calls to AM Web Services v2
http://git-wip-us.apache.org/repos/asf/tez/blob/0c519d17/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
----------------------------------------------------------------------
diff --git
a/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
b/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
index 9c3301f..eeddcb0 100644
---
a/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
+++
b/tez-ui/src/main/webapp/app/scripts/controllers/dag-task-attempts-controller.js
@@ -27,6 +27,51 @@ App.DagTaskAttemptsController =
App.TablePageController.extend({
cacheDomain: Ember.computed.alias('controllers.dag.id'),
+ pollster: App.Helpers.EntityArrayPollster.create(),
+
+ init: function () {
+ this._super();
+ this.get('pollster').setProperties({
+ entityType: 'attemptInfo',
+ mergeProperties: ['status', 'progress'],
+ store: this.get('store')
+ });
+ },
+
+ pollsterControl: function () {
+ if(this.get('status') == 'RUNNING' &&
+ this.get('amWebServiceVersion') != '1' &&
+ !this.get('loading') &&
+ this.get('isActive') &&
+ this. get('rowsDisplayed.length') > 0) {
+ this.get('pollster').start();
+ }
+ else {
+ this.get('pollster').stop();
+ }
+ }.observes('status', 'amWebServiceVersion', 'rowsDisplayed', 'loading',
'isActive'),
+
+ pollsterOptionsObserver: function () {
+ var rows = this.get('rowsDisplayed');
+ this.set('pollster.targetRecords', rows);
+
+ this.set('pollster.options', (rows && rows.length) ? {
+ appID: this.get('applicationId'),
+ dagID: this.get('idx'),
+ counters: this.get('countersDisplayed'),
+ attemptID: rows.map(function (row) {
+ var attemptIndex = App.Helpers.misc.getIndexFromId(row.get('id')),
+ taskIndex = App.Helpers.misc.getIndexFromId(row.get('taskID')),
+ vertexIndex =
App.Helpers.misc.getIndexFromId(row.get('vertexID'));
+ return '%@_%@_%@'.fmt(vertexIndex, taskIndex, attemptIndex);
+ }).join(',')
+ } : null);
+ }.observes('applicationId', 'idx', 'rowsDisplayed', 'counters'),
+
+ countersDisplayed: function () {
+ return App.Helpers.misc.getCounterQueryParam(this.get('columns'));
+ }.property('columns'),
+
beforeLoad: function () {
var dagController = this.get('controllers.dag'),
model = dagController.get('model');
@@ -106,6 +151,7 @@ App.DagTaskAttemptsController =
App.TablePageController.extend({
headerCellName: 'Status',
templateName: 'components/basic-table/status-cell',
contentPath: 'status',
+ observePath: true,
getCellContent: function(row) {
var status =
App.Helpers.misc.getFixedupDisplayStatus(row.get('status'));
return {
@@ -115,6 +161,13 @@ App.DagTaskAttemptsController =
App.TablePageController.extend({
}
},
{
+ id: 'progress',
+ headerCellName: 'Progress',
+ contentPath: 'progress',
+ observePath: true,
+ templateName: 'components/basic-table/progress-cell'
+ },
+ {
id: 'vertexName',
headerCellName: 'Vertex Name',
contentPath: 'vertexID',
http://git-wip-us.apache.org/repos/asf/tez/blob/0c519d17/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
----------------------------------------------------------------------
diff --git
a/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
b/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
index b3c8c76..a0eab4d 100644
---
a/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
+++
b/tez-ui/src/main/webapp/app/scripts/controllers/task_task_attempts_controller.js
@@ -28,6 +28,52 @@ App.TaskAttemptsController =
App.TablePageController.extend(App.AutoCounterColum
cacheDomain: Ember.computed.alias('controllers.task.dagID'),
+ pollster: App.Helpers.EntityArrayPollster.create(),
+
+ init: function () {
+ this._super();
+ this.get('pollster').setProperties({
+ entityType: 'attemptInfo',
+ mergeProperties: ['status', 'progress'],
+ store: this.get('store')
+ });
+ },
+
+ pollsterControl: function () {
+ if(this.get('vertex.dag.status') == 'RUNNING' &&
+ this.get('vertex.dag.amWebServiceVersion') != '1' &&
+ !this.get('loading') &&
+ this.get('isActive') &&
+ this. get('rowsDisplayed.length') > 0) {
+ this.get('pollster').start();
+ }
+ else {
+ this.get('pollster').stop();
+ }
+ }.observes('vertex.dag.status',
+ 'vertex.dag.amWebServiceVersion', 'rowsDisplayed', 'loading', 'isActive'),
+
+ pollsterOptionsObserver: function () {
+ var rows = this.get('rowsDisplayed');
+ this.set('pollster.targetRecords', rows);
+
+ this.set('pollster.options', (rows && rows.length) ? {
+ appID: this.get('vertex.dag.applicationId'),
+ dagID: this.get('vertex.dag.idx'),
+ counters: this.get('countersDisplayed'),
+ attemptID: rows.map(function (row) {
+ var attemptIndex = App.Helpers.misc.getIndexFromId(row.get('id')),
+ taskIndex = App.Helpers.misc.getIndexFromId(row.get('taskID')),
+ vertexIndex =
App.Helpers.misc.getIndexFromId(row.get('vertexID'));
+ return '%@_%@_%@'.fmt(vertexIndex, taskIndex, attemptIndex);
+ }).join(',')
+ } : null);
+ }.observes('vertex.dag.applicationId', 'vertex.dag.idx', 'rowsDisplayed',
'counters'),
+
+ countersDisplayed: function () {
+ return App.Helpers.misc.getCounterQueryParam(this.get('columns'));
+ }.property('columns'),
+
beforeLoad: function () {
var taskController = this.get('controllers.task'),
model = taskController.get('model');
@@ -88,6 +134,7 @@ App.TaskAttemptsController =
App.TablePageController.extend(App.AutoCounterColum
headerCellName: 'Status',
templateName: 'components/basic-table/status-cell',
contentPath: 'status',
+ observePath: true,
getCellContent: function(row) {
var status =
App.Helpers.misc.getFixedupDisplayStatus(row.get('status'));
return {
@@ -97,6 +144,13 @@ App.TaskAttemptsController =
App.TablePageController.extend(App.AutoCounterColum
}
},
{
+ id: 'progress',
+ headerCellName: 'Progress',
+ contentPath: 'progress',
+ observePath: true,
+ templateName: 'components/basic-table/progress-cell'
+ },
+ {
id: 'startTime',
headerCellName: 'Start Time',
contentPath: 'startTime',
http://git-wip-us.apache.org/repos/asf/tez/blob/0c519d17/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
----------------------------------------------------------------------
diff --git
a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
index 914cf6a..b6d659d 100644
---
a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
+++
b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_task_attempts_controller.js
@@ -28,6 +28,51 @@ App.VertexTaskAttemptsController =
App.TablePageController.extend(App.AutoCounte
cacheDomain: Ember.computed.alias('controllers.vertex.dagID'),
+ pollster: App.Helpers.EntityArrayPollster.create(),
+
+ init: function () {
+ this._super();
+ this.get('pollster').setProperties({
+ entityType: 'attemptInfo',
+ mergeProperties: ['status', 'progress'],
+ store: this.get('store')
+ });
+ },
+
+ pollsterControl: function () {
+ if(this.get('dag.status') == 'RUNNING' &&
+ this.get('dag.amWebServiceVersion') != '1' &&
+ !this.get('loading') &&
+ this.get('isActive') &&
+ this. get('rowsDisplayed.length') > 0) {
+ this.get('pollster').start();
+ }
+ else {
+ this.get('pollster').stop();
+ }
+ }.observes('dag.status', 'dag.amWebServiceVersion', 'rowsDisplayed',
'loading', 'isActive'),
+
+ pollsterOptionsObserver: function () {
+ var rows = this.get('rowsDisplayed');
+ this.set('pollster.targetRecords', rows);
+
+ this.set('pollster.options', (rows && rows.length) ? {
+ appID: this.get('dag.applicationId'),
+ dagID: this.get('dag.idx'),
+ counters: this.get('countersDisplayed'),
+ attemptID: rows.map(function (row) {
+ var attemptIndex = App.Helpers.misc.getIndexFromId(row.get('id')),
+ taskIndex = App.Helpers.misc.getIndexFromId(row.get('taskID')),
+ vertexIndex =
App.Helpers.misc.getIndexFromId(row.get('vertexID'));
+ return '%@_%@_%@'.fmt(vertexIndex, taskIndex, attemptIndex);
+ }).join(',')
+ } : null);
+ }.observes('dag.applicationId', 'dag.idx', 'rowsDisplayed', 'counters'),
+
+ countersDisplayed: function () {
+ return App.Helpers.misc.getCounterQueryParam(this.get('columns'));
+ }.property('columns'),
+
beforeLoad: function () {
var controller = this.get('controllers.vertex'),
model = controller.get('model');
@@ -106,6 +151,7 @@ App.VertexTaskAttemptsController =
App.TablePageController.extend(App.AutoCounte
headerCellName: 'Status',
templateName: 'components/basic-table/status-cell',
contentPath: 'status',
+ observePath: true,
getCellContent: function(row) {
var status =
App.Helpers.misc.getFixedupDisplayStatus(row.get('status'));
return {
@@ -115,6 +161,13 @@ App.VertexTaskAttemptsController =
App.TablePageController.extend(App.AutoCounte
}
},
{
+ id: 'progress',
+ headerCellName: 'Progress',
+ contentPath: 'progress',
+ observePath: true,
+ templateName: 'components/basic-table/progress-cell'
+ },
+ {
id: 'startTime',
headerCellName: 'Start Time',
contentPath: 'startTime',
http://git-wip-us.apache.org/repos/asf/tez/blob/0c519d17/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
----------------------------------------------------------------------
diff --git
a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
index 2709d64..c4d09f4 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/vertex_tasks_controller.js
@@ -28,6 +28,49 @@ App.VertexTasksController =
App.TablePageController.extend(App.AutoCounterColumn
cacheDomain: Ember.computed.alias('controllers.vertex.dagID'),
+ pollster: App.Helpers.EntityArrayPollster.create(),
+
+ init: function () {
+ this._super();
+ this.get('pollster').setProperties({
+ entityType: 'taskInfo',
+ mergeProperties: ['status', 'progress'],
+ store: this.get('store')
+ });
+ },
+
+ pollsterControl: function () {
+ if(this.get('dag.status') == 'RUNNING' &&
+ this.get('dag.amWebServiceVersion') != '1' &&
+ !this.get('loading') && this.get('isActive') &&
+ this. get('rowsDisplayed.length') > 0) {
+ this.get('pollster').start();
+ }
+ else {
+ this.get('pollster').stop();
+ }
+ }.observes('dag.status', 'dag.amWebServiceVersion', 'rowsDisplayed',
'loading', 'isActive'),
+
+ pollsterOptionsObserver: function () {
+ var rows = this.get('rowsDisplayed');
+ this.set('pollster.targetRecords', rows);
+
+ this.set('pollster.options', (rows && rows.length) ? {
+ appID: this.get('dag.applicationId'),
+ dagID: this.get('dag.idx'),
+ counters: this.get('countersDisplayed'),
+ taskID: rows.map(function (row) {
+ var taskIndex = App.Helpers.misc.getIndexFromId(row.get('id')),
+ vertexIndex = App.Helpers.misc.getIndexFromId(row.get('vertexID'));
+ return '%@_%@'.fmt(vertexIndex, taskIndex);
+ }).join(',')
+ } : null);
+ }.observes('dag.applicationId', 'dag.idx', 'rowsDisplayed', 'counters'),
+
+ countersDisplayed: function () {
+ return App.Helpers.misc.getCounterQueryParam(this.get('columns'));
+ }.property('columns'),
+
beforeLoad: function () {
var controller = this.get('controllers.vertex'),
model = controller.get('model');
@@ -96,6 +139,7 @@ App.VertexTasksController =
App.TablePageController.extend(App.AutoCounterColumn
headerCellName: 'Status',
templateName: 'components/basic-table/status-cell',
contentPath: 'status',
+ observePath: true,
getCellContent: function(row) {
var status = row.get('status');
return {
@@ -106,6 +150,13 @@ App.VertexTasksController =
App.TablePageController.extend(App.AutoCounterColumn
}
},
{
+ id: 'progress',
+ headerCellName: 'Progress',
+ contentPath: 'progress',
+ observePath: true,
+ templateName: 'components/basic-table/progress-cell'
+ },
+ {
id: 'startTime',
headerCellName: 'Start Time',
contentPath: 'startTime',