You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tez.apache.org by pr...@apache.org on 2015/05/18 13:01:33 UTC
tez git commit: TEZ-2455. Tez UI: Dag view caching,
error handling and minor layout changes (Sreenath Somarajapuram via
pramachandran)
Repository: tez
Updated Branches:
refs/heads/master b59b6a9b6 -> 12fc2c708
TEZ-2455. Tez UI: Dag view caching, error handling and minor layout changes (Sreenath Somarajapuram via pramachandran)
Project: http://git-wip-us.apache.org/repos/asf/tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/tez/commit/12fc2c70
Tree: http://git-wip-us.apache.org/repos/asf/tez/tree/12fc2c70
Diff: http://git-wip-us.apache.org/repos/asf/tez/diff/12fc2c70
Branch: refs/heads/master
Commit: 12fc2c70858ac88459436334a34bc69f7ddf9589
Parents: b59b6a9
Author: Prakash Ramachandran <pr...@hortonworks.com>
Authored: Mon May 18 16:30:21 2015 +0530
Committer: Prakash Ramachandran <pr...@hortonworks.com>
Committed: Mon May 18 16:30:21 2015 +0530
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../components/dag-view/data-processor.js | 9 +++
.../scripts/components/dag-view/graph-view.js | 11 ++++
.../app/scripts/components/dag-view/tip.js | 1 +
.../scripts/controllers/dag-view-controller.js | 63 ++++++++++----------
.../main/webapp/app/scripts/helpers/number.js | 2 +
.../scripts/mixins/data-array-loader-minxin.js | 2 +-
.../app/scripts/mixins/paginated_content.js | 5 +-
.../src/main/webapp/app/templates/dag/view.hbs | 2 +-
9 files changed, 60 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 8697dc9..21ae041 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -18,6 +18,7 @@ Release 0.7.1: Unreleased
INCOMPATIBLE CHANGES
ALL CHANGES:
+ TEZ-2455. Tez UI: Dag view caching, error handling and minor layout changes
TEZ-2453. Tez UI: show the dagInfo is the application has set the same.
TEZ-2447. Tez UI: Generic changes based on feedbacks.
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/tez-ui/src/main/webapp/app/scripts/components/dag-view/data-processor.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/components/dag-view/data-processor.js b/tez-ui/src/main/webapp/app/scripts/components/dag-view/data-processor.js
index 53bb7c9..e145fc1 100644
--- a/tez-ui/src/main/webapp/app/scripts/components/dag-view/data-processor.js
+++ b/tez-ui/src/main/webapp/app/scripts/components/dag-view/data-processor.js
@@ -482,6 +482,15 @@ App.DagViewComponent.dataProcessor = (function (){
});
vertex.setDepth(depth);
+
+ // Adds a dummy child to intermediate inputs so that they
+ // gets equal relevance as adjacent nodes on plotting the tree!
+ if(children.length) {
+ vertex.ifForEach('inputs', function (input) {
+ input._setChildren([DataNode.create()]);
+ });
+ }
+
children.push.apply(children, vertex.get('inputs'));
vertex._setChildren(children);
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/tez-ui/src/main/webapp/app/scripts/components/dag-view/graph-view.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/components/dag-view/graph-view.js b/tez-ui/src/main/webapp/app/scripts/components/dag-view/graph-view.js
index f3a87fd..1f8504b 100644
--- a/tez-ui/src/main/webapp/app/scripts/components/dag-view/graph-view.js
+++ b/tez-ui/src/main/webapp/app/scripts/components/dag-view/graph-view.js
@@ -344,6 +344,17 @@ App.DagViewComponent.graphView = (function (){
}
}
}
+
+ // Put all single vertex outputs in-line with the vertex node
+ // So that they are directly below the respective vertex in vertical layout
+ nodes.forEach(function (node) {
+ if(node.type == App.DagViewComponent.dataProcessor.types.OUTPUT &&
+ node.get('vertex.outputs.length') == 1 &&
+ node.get('treeParent.x') != node.get('x')
+ ) {
+ node.x = node.get('vertex.x');
+ }
+ });
}
function _getType(node) {
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/tez-ui/src/main/webapp/app/scripts/components/dag-view/tip.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/components/dag-view/tip.js b/tez-ui/src/main/webapp/app/scripts/components/dag-view/tip.js
index e26223d..44c8bb5 100644
--- a/tez-ui/src/main/webapp/app/scripts/components/dag-view/tip.js
+++ b/tez-ui/src/main/webapp/app/scripts/components/dag-view/tip.js
@@ -78,6 +78,7 @@ App.DagViewComponent.tip = (function () {
function _setData(data) {
_element.find('.tip-title').html(data.title || "");
_element.find('.tip-text').html(data.text || "");
+ _element.find('.tip-text')[data.text ? 'show' : 'hide']();
_element.find('.tip-list').html(_createList(data.kvList) || "");
}
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/tez-ui/src/main/webapp/app/scripts/controllers/dag-view-controller.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/controllers/dag-view-controller.js b/tez-ui/src/main/webapp/app/scripts/controllers/dag-view-controller.js
index a748cdf..5241060 100644
--- a/tez-ui/src/main/webapp/app/scripts/controllers/dag-view-controller.js
+++ b/tez-ui/src/main/webapp/app/scripts/controllers/dag-view-controller.js
@@ -16,43 +16,40 @@
* limitations under the License.
*/
-App.DagViewController = Em.ObjectController.extend(App.PaginatedContentMixin, App.ColumnSelectorMixin, {
+App.DagViewController = App.TablePageController.extend({
controllerName: 'DagViewController',
+ needs: ["dag", "dagVertices"],
- childEntityType: 'vertex',
+ entityType: 'dagVertex',
+ filterEntityType: 'dag',
+ filterEntityId: Ember.computed.alias('controllers.dag.id'),
- needs: ["dag", "dagVertices"],
- pageTitle: 'Dag View',
+ cacheDomain: Ember.computed.alias('controllers.dag.id'),
columnSelectorTitle: 'Customize vertex tooltip',
- count: Number.MAX_SAFE_INTEGER - 1,
+ beforeLoad: function () {
+ var dagController = this.get('controllers.dag'),
+ model = dagController.get('model');
+ return model.reload().then(function () {
+ return dagController.loadAdditional(model);
+ });
+ },
+
+ afterLoad: function () {
+ var data = this.get('data'),
+ runningVerticesIdx,
+ isUnsuccessfulDag = App.Helpers.misc.isStatusInUnsuccessful(
+ this.get('controllers.dag.status')
+ );
- loadData: function() {
- var filters = {
- primary: {
- TEZ_DAG_ID: this.get('controllers.dag.id')
- }
+ if(isUnsuccessfulDag) {
+ data.filterBy('status', 'RUNNING').forEach(function (vertex) {
+ vertex.set('status', 'KILLED');
+ });
}
- this.setFiltersAndLoadEntities(filters);
- },
- load: function () {
- var dag = this.get('controllers.dag.model'),
- controller = this.get('controllers.dag'),
- t = this;
- t.set('loading', true);
- dag.reload().then(function () {
- return controller.loadAdditional(dag);
- }).then(function () {
- t.resetNavigation();
- t.loadEntities();
- }).catch(function(error){
- Em.Logger.error(error);
- var err = App.Helpers.misc.formatError(error, defaultErrMsg);
- var msg = 'error code: %@, message: %@'.fmt(err.errCode, err.msg);
- App.Helpers.ErrorBar.getInstance().show(msg, err.details);
- });
+ return this._super();
},
actions: {
@@ -85,13 +82,13 @@ App.DagViewController = Em.ObjectController.extend(App.PaginatedContentMixin, Ap
var configs = this.get('controllers.dagVertices.columnConfigs');
return configs.filter(function (config) {
return (config.contentPath) ||
- (config.getCellContent && !config.tableCellViewClass);
+ (config.getCellContent && config.searchAndSortable != false);
});
}.property(),
viewData: function () {
- var vertices = this.get('controllers.dag.vertices'),
- entities = this.get('entities'),
+ var vertices = this.get('controllers.dag.vertices') || [],
+ entities = this.get('data') || [],
finalVertex,
dagStatus = this.get('controllers.dag.status'),
needsStatusFixup = App.Helpers.misc.isStatusInUnsuccessful(dagStatus);
@@ -103,7 +100,7 @@ App.DagViewController = Em.ObjectController.extend(App.PaginatedContentMixin, Ap
vertices.forEach(function (vertex) {
vertex.data = entities[vertex.vertexName];
- if (needsStatusFixup && vertex.data.get('status') == 'RUNNING') {
+ if (needsStatusFixup && vertex.data && vertex.data.get('status') == 'RUNNING') {
vertex.data.set('status', 'KILLED');
}
});
@@ -113,5 +110,5 @@ App.DagViewController = Em.ObjectController.extend(App.PaginatedContentMixin, Ap
edges: this.get('controllers.dag.edges'),
vertexGroups: this.get('controllers.dag.vertexGroups')
};
- }.property('entities')
+ }.property('data', 'controllers.dag.vertices', 'controllers.dag')
});
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/tez-ui/src/main/webapp/app/scripts/helpers/number.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/helpers/number.js b/tez-ui/src/main/webapp/app/scripts/helpers/number.js
index 912e8f5..3e5b3d3 100644
--- a/tez-ui/src/main/webapp/app/scripts/helpers/number.js
+++ b/tez-ui/src/main/webapp/app/scripts/helpers/number.js
@@ -17,6 +17,8 @@
App.Helpers.number = {
+ MAX_SAFE_INTEGER: 9007199254740991,
+
/**
* Convert byte size to other metrics.
*
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/tez-ui/src/main/webapp/app/scripts/mixins/data-array-loader-minxin.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/mixins/data-array-loader-minxin.js b/tez-ui/src/main/webapp/app/scripts/mixins/data-array-loader-minxin.js
index e5dbbf9..ce9831c 100644
--- a/tez-ui/src/main/webapp/app/scripts/mixins/data-array-loader-minxin.js
+++ b/tez-ui/src/main/webapp/app/scripts/mixins/data-array-loader-minxin.js
@@ -41,7 +41,7 @@ App.DataArrayLoaderMixin = Em.Mixin.create({
getFilter: function (limit) {
return {
- limit: limit || Number.MAX_SAFE_INTEGER - 1,
+ limit: limit || App.Helpers.number.MAX_SAFE_INTEGER,
primaryFilter: '%@:%@'.fmt(
App.Helpers.misc.getTimelineFilterForType(this.get('filterEntityType')),
this.get('filterEntityId')
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/tez-ui/src/main/webapp/app/scripts/mixins/paginated_content.js
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/scripts/mixins/paginated_content.js b/tez-ui/src/main/webapp/app/scripts/mixins/paginated_content.js
index 13e27cc..3acce39 100644
--- a/tez-ui/src/main/webapp/app/scripts/mixins/paginated_content.js
+++ b/tez-ui/src/main/webapp/app/scripts/mixins/paginated_content.js
@@ -26,6 +26,9 @@ App.PaginatedContentMixin = Em.Mixin.create({
// The dropdown contents for number of items to show.
rowCountOptions: [5, 10, 25, 50, 100],
+ maxRowCount: function () {
+ return Math.max.apply(null, this.get('rowCountOptions'));
+ }.property('rowCountOptions'),
isRefreshable: true,
@@ -148,7 +151,7 @@ App.PaginatedContentMixin = Em.Mixin.create({
getFilterProperties: function() {
var params = {
- limit: this.rowCount + 1
+ limit: Math.min(this.rowCount, this.get('maxRowCount')) + 1
};
var f = this._paginationFilters;
http://git-wip-us.apache.org/repos/asf/tez/blob/12fc2c70/tez-ui/src/main/webapp/app/templates/dag/view.hbs
----------------------------------------------------------------------
diff --git a/tez-ui/src/main/webapp/app/templates/dag/view.hbs b/tez-ui/src/main/webapp/app/templates/dag/view.hbs
index 3ea27c7..9c5e2e4 100644
--- a/tez-ui/src/main/webapp/app/templates/dag/view.hbs
+++ b/tez-ui/src/main/webapp/app/templates/dag/view.hbs
@@ -19,7 +19,7 @@
<div {{bind-attr class=":margin-small-vertical loading:no-visible"}}>
{{load-time-component
isRefreshable=isRefreshable
- time=entities.content.0.timeStamp
+ time=data.content.0.timeStamp
refresh='refresh'
}}
</div>