http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobmanager/config.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobmanager/config.html b/flink-runtime-web/web-dashboard/web/partials/jobmanager/config.html deleted file mode 100644 index da6b75b..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobmanager/config.html +++ /dev/null @@ -1,33 +0,0 @@ - -<!-- -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. - ---> -<table class="table table-properties"> - <thead> - <tr> - <th>Key</th> - <th>Value</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="entry in jobmanager.config | orderBy: 'key'"> - <td>{{entry.key}}</td> - <td>{{entry.value}}</td> - </tr> - </tbody> -</table> \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobmanager/index.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobmanager/index.html b/flink-runtime-web/web-dashboard/web/partials/jobmanager/index.html deleted file mode 100644 index 02c2f47..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobmanager/index.html +++ /dev/null @@ -1,33 +0,0 @@ - -<!-- -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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Job Manager</div> -</nav> -<nav class="navbar navbar-default navbar-fixed-top navbar-main-additional"> - <ul class="nav nav-tabs"> - <li ui-sref-active="active"><a ui-sref=".config">Configuration</a></li> - <li ui-sref-active="active"><a ui-sref=".log">Logs</a></li> - <li ui-sref-active="active"><a ui-sref=".stdout">Stdout</a></li> - </ul> -</nav> -<div id="content-inner" class="has-navbar-main-additional"> - <div ui-view="details"></div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobmanager/stdout.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobmanager/stdout.html b/flink-runtime-web/web-dashboard/web/partials/jobmanager/stdout.html deleted file mode 100644 index df6a817..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobmanager/stdout.html +++ /dev/null @@ -1,40 +0,0 @@ - -<!-- -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. - - ---> -<table class="table table-properties"> - <thead> - <tr> - <th colspan="2"> - <div class="row"> - <div class="col-xs-10">Job Manager Output</div> - <div class="col-xs-1 text-right"><a ng-click="reloadData()" class="show-pointer"><i class="fa fa-refresh"></i></a></div> - <div class="col-xs-1 text-left"><a href="jobmanager/stdout"><i class="fa fa-download"></i></a></div> - </div> - </th> - </tr> - </thead> - <tbody> - <tr> - <td colspan="2"> - <pre>{{jobmanager.stdout}}</pre> - </td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/completed-jobs.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/completed-jobs.html b/flink-runtime-web/web-dashboard/web/partials/jobs/completed-jobs.html deleted file mode 100644 index b76278d..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/completed-jobs.html +++ /dev/null @@ -1,53 +0,0 @@ - -<!-- -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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Completed Jobs</div> -</nav> -<div id="content-inner"> - <table class="table table-hover table-clickable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Job Name</th> - <th>Job ID</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="job in jobs" ui-sref="single-job.plan.overview({ jobid: job.jid })"> - <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job.duration}} ms</td> - <td>{{job.name}}</td> - <td>{{job.jid}}</td> - <td class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> - </td> - <td> - <bs-label status="{{job.state}}">{{job.state}}</bs-label> - </td> - </tr> - </tbody> - </table> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.config.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.config.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.config.html deleted file mode 100644 index a7a5d9d..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.config.html +++ /dev/null @@ -1,57 +0,0 @@ - -<!-- -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. - ---> -<table ng-if="job['execution-config']" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Execution configuration</th> - </tr> - </thead> - <tbody> - <tr> - <td>Execution mode</td> - <td>{{ job['execution-config']['execution-mode'] }}</td> - </tr> - <tr> - <td>Max. number of execution retries</td> - <td>{{ job['execution-config']['max-execution-retries'] === -1 ? 'deactivated' : job['execution-config']['max-execution-retries'] }}</td> - </tr> - <tr> - <td>Job parallelism</td> - <td>{{ job['execution-config']['job-parallelism'] === -1 ? 'auto' : job['execution-config']['job-parallelism'] }}</td> - </tr> - <tr> - <td>Object reuse mode</td> - <td>{{ job['execution-config']['object-reuse-mode'] }}</td> - </tr> - </tbody> -</table> -<table ng-if="job['execution-config']['user-config']" class="table table-properties"> - <thead> - <tr> - <th colspan="2">User configuration</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in job['execution-config']['user-config']"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.exceptions.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.exceptions.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.exceptions.html deleted file mode 100644 index a5f6676..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.exceptions.html +++ /dev/null @@ -1,38 +0,0 @@ - -<!-- -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. - ---> -<div ng-if="exceptions['root-exception']" class="panel panel-default panel-multi"> - <div class="panel-heading clearfix"> - <div class="panel-title">Root exception</div> - </div> - <div class="panel-body"> - <pre class="exception">{{ exceptions['root-exception'] }}</pre> - </div> -</div> -<div ng-repeat="exception in exceptions['all-exceptions']" class="panel panel-default panel-multi"> - <div class="panel-heading clearfix"> - <div class="panel-title">{{ exception.task }}</div> - </div> - <div class="panel-heading clearfix"> - <div class="panel-info thin last"><span>{{ exception.location }}</span></div> - </div> - <div class="panel-body"> - <pre class="exception">{{ exception.exception }}</pre> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.html deleted file mode 100644 index 9d3e171..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.html +++ /dev/null @@ -1,48 +0,0 @@ - -<!-- -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. - ---> -<nav ng-if="job" class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title"> - <indicator-primary status="{{job.state}}"></indicator-primary>{{ job.name }} - </div> - <div class="navbar-info first last hidden-xs hidden-sm">{{ job.jid }}</div> - <div class="navbar-info first last"> - <div class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job['status-counts']">{{value}}</bs-label> - </div> - </div> - <div class="navbar-info first last hidden-xs hidden-sm">{{ job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}<span ng-if="job['end-time'] > -1"> - - - {{ job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></div> - <div ng-if="job.duration > -1" class="navbar-info last first">{{job.duration}} ms</div> -</nav> -<nav ng-if="job" class="navbar navbar-default navbar-fixed-top navbar-main-additional"> - <ul class="nav nav-tabs"> - <li ui-sref-active="active"><a ui-sref=".plan.overview">Plan</a></li> - <li ui-sref-active="active"><a ui-sref=".statistics">Job Accumulators / Statistics</a></li> - <li ui-sref-active="active"><a ui-sref=".timeline">Timeline</a></li> - <li ui-sref-active="active"><a ui-sref=".exceptions">Exceptions</a></li> - <li ui-sref-active="active"><a ui-sref=".properties">Properties</a></li> - <li ui-sref-active="active"><a ui-sref=".config">Configuration</a></li> - </ul> -</nav> -<div id="content-inner" class="has-navbar-main-additional"> - <div ui-view="details"></div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.html deleted file mode 100644 index f2c4143..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.html +++ /dev/null @@ -1,31 +0,0 @@ - -<!-- -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. - ---> -<div class="canvas-wrapper"> - <div job-plan="job-plan" plan="plan" jobid="{{jobid}}" set-node="changeNode(nodeid)" class="main-canvas"></div> -</div> -<div ng-if="plan" class="panel panel-default panel-multi"> - <nav class="navbar navbar-default navbar-secondary-additional"> - <ul class="nav nav-tabs"> - <li ui-sref-active="active"><a ui-sref=".overview({nodeid: nodeid})">Overview</a></li> - <li ui-sref-active="active"><a ui-sref=".accumulators({nodeid: nodeid})">Accumulators</a></li> - </ul> - </nav> - <div ui-view="node-details" class="panel-body clean"></div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node-list.accumulators.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node-list.accumulators.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node-list.accumulators.html deleted file mode 100644 index 8de3921..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node-list.accumulators.html +++ /dev/null @@ -1,40 +0,0 @@ - -<!-- -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. - ---> -<table class="table table-body-hover table-clickable table-activable"> - <thead> - <tr> - <th>Name</th> - <th>Status</th> - </tr> - </thead> - <tbody ng-repeat="v in job.vertices" ng-class="{ active: v.id == nodeid }" ng-click="v.id == nodeid || changeNode(v.id)"> - <tr ng-if="v.type == 'regular'"> - <td>{{ v.name | humanizeText }}</td> - <td> - <bs-label status="{{v.status}}">{{v.status}}</bs-label> - </td> - </tr> - <tr ng-if="nodeid && v.id == nodeid"> - <td colspan="10"> - <div ng-include=" 'partials/jobs/job.plan.node.accumulators.html' "></div> - </td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node-list.overview.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node-list.overview.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node-list.overview.html deleted file mode 100644 index 1706d3e..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node-list.overview.html +++ /dev/null @@ -1,60 +0,0 @@ - -<!-- -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. - ---> -<table class="table table-body-hover table-clickable table-activable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Name</th> - <th>Bytes read</th> - <th>Records read</th> - <th>Bytes written</th> - <th>Records written</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody ng-repeat="v in job.vertices" ng-class="{ active: v.id == nodeid }" ng-click="changeNode(v.id)"> - <tr ng-if="v.type == 'regular'"> - <td><span ng-if="v['start-time'] > -1">{{ v['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></td> - <td><span ng-if="v['end-time'] > -1">{{ v['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></td> - <td><span ng-if="v.duration > -1">{{ v.duration }} ms</span></td> - <td class="td-long">{{ v.name | humanizeText }}</td> - <td>{{ v.metrics['read-bytes'] }}</td> - <td>{{ v.metrics['read-records'] }}</td> - <td>{{ v.metrics['write-bytes'] }}</td> - <td>{{ v.metrics['write-records'] }}</td> - <td> - <div class="label-group"> - <bs-label status="{{status}}" ng-repeat="(index, status) in stateList">{{v.tasks[status]}}</bs-label> - </div> - </td> - <td> - <bs-label status="{{v.status}}">{{v.status}}</bs-label> - </td> - </tr> - <tr ng-if="nodeid && v.id == nodeid"> - <td colspan="10"> - <div ng-include=" 'partials/jobs/job.plan.node.subtasks.html' "></div> - </td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node.accumulators.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node.accumulators.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node.accumulators.html deleted file mode 100644 index e7dcf2c..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node.accumulators.html +++ /dev/null @@ -1,68 +0,0 @@ - -<!-- -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. - ---> -<div ng-if="accumulators.length == 0"> - <p><i>No accumulators</i></p> -</div> -<div ng-if="accumulators && accumulators.length > 0"> - <table class="table table-hover table-clickable table-activable table-inner"> - <thead> - <tr> - <th>Name</th> - <th>Type</th> - <th>Value</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="accumulator in accumulators"> - <td width="30%">{{ accumulator.name }}</td> - <td width="30%">{{ accumulator.type }}</td> - <td width="30%">{{ accumulator.value }}</td> - </tr> - </tbody> - </table> - <div ng-if="!nodeUnfolded"><a ng-click="toggleFold()" class="btn btn-default"> - Show subtasks - <i class="fa fa-chevron-down"></i></a><a ng-click="deactivateNode(); $event.stopPropagation()" title="Fold" class="btn btn-default pull-right"><i class="fa fa-chevron-up"></i></a></div> - <div ng-if="nodeUnfolded && subtaskAccumulators && subtaskAccumulators.length > 0"><a ng-click="toggleFold()" class="btn btn-default"> - Hide subtasks - <i class="fa fa-chevron-up"></i></a> - <table class="table table-hover table-clickable table-activable table-inner"> - <thead> - <tr> - <th>Name</th> - <th>Type</th> - <th>Value</th> - </tr> - </thead> - <tbody ng-if="subtask['user-accumulators'] && subtask['user-accumulators'].length > 0" ng-repeat="subtask in subtaskAccumulators"> - <tr> - <td colwidth="3"> - <div class="small-label">({{ subtask.subtask }}) {{ subtask.host }}, attempt: {{ subtask.attempt + 1 }}</div> - </td> - </tr> - <tr ng-repeat="accumulator in subtask['user-accumulators']"> - <td width="30%">{{ accumulator.name }}</td> - <td width="30%">{{ accumulator.type }}</td> - <td width="30%">{{ accumulator.value }}</td> - </tr> - </tbody> - </table> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node.subtasks.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node.subtasks.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node.subtasks.html deleted file mode 100644 index 40b16bc..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.plan.node.subtasks.html +++ /dev/null @@ -1,52 +0,0 @@ - -<!-- -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. - - ---> -<table ng-if="subtasks" class="table table-hover table-clickable table-activable table-inner"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Bytes read</th> - <th>Records read</th> - <th>Bytes written</th> - <th>Records written</th> - <th>Attempt</th> - <th>Host</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="subtask in subtasks"> - <td><span ng-if="subtask['start-time'] > -1">{{ subtask['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></td> - <td><span ng-if="subtask['end-time'] > -1">{{ subtask['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</span></td> - <td><span ng-if="subtask.duration > -1">{{ subtask.duration }} ms</span></td> - <td><span ng-if="subtask.metrics['read-bytes'] > -1">{{ subtask.metrics['read-bytes'] }}</span></td> - <td><span ng-if="subtask.metrics['read-records'] > -1">{{ subtask.metrics['read-records'] }}</span></td> - <td><span ng-if="subtask.metrics['write-bytes'] > -1">{{ subtask.metrics['write-bytes'] }}</span></td> - <td><span ng-if="subtask.metrics['write-records'] > -1">{{ subtask.metrics['write-records'] }}</span></td> - <td>{{ subtask.attempt + 1 }}</td> - <td>{{ subtask.host }}</td> - <td> - <bs-label status="{{subtask.status}}">{{subtask.status}}</bs-label> - </td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.properties.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.properties.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.properties.html deleted file mode 100644 index 907afd3..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.properties.html +++ /dev/null @@ -1,140 +0,0 @@ - -<!-- -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. - ---> -<div class="canvas-wrapper"> - <div job-plan="job-plan" plan="plan" jobid="{{jobid}}" set-node="changeNode(nodeid)" class="main-canvas"></div> -</div> -<div ng-if="node" class="panel panel-default"> - <div class="panel-heading clearfix"> - <div class="panel-title">{{ node.description | humanizeText }}</div> - </div> - <div class="panel-body clean"> - <div class="row"> - <div class="col-sm-6 col-md-4"> - <table ng-if="node.optimizer_properties.global_properties" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Global Data Properties</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.global_properties"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - <table ng-if="node.optimizer_properties.local_properties" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Local Data Properties</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.local_properties"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - <div class="visible-xs visible-sm"> - <table class="table table-properties"> - <thead> - <tr> - <th colspan="2">Properties</th> - </tr> - </thead> - <tbody> - <tr> - <td>Operator</td> - <td table-property="table-property" value="node.operator_strategy"></td> - </tr> - <tr> - <td>Parallelism</td> - <td table-property="table-property" value="node.parallelism"></td> - </tr> - </tbody> - </table> - </div> - </div> - <div class="hidden-sm col-md-4"> - <table class="table table-properties"> - <thead> - <tr> - <th colspan="2">Properties</th> - </tr> - </thead> - <tbody> - <tr> - <td>Operator</td> - <td table-property="table-property" value="node.operator_strategy"></td> - </tr> - <tr> - <td>Parallelism</td> - <td table-property="table-property" value="node.parallelism"></td> - </tr> - </tbody> - </table> - <table ng-if="node.optimizer_properties.estimates" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Size Estimates</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.estimates"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - </div> - <div class="col-sm-6 col-md-4"> - <div class="visible-xs visible-sm"> - <table ng-if="node.optimizer_properties.estimates" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Size Estimates</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.estimates"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - </div> - <table ng-if="node.optimizer_properties.costs" class="table table-properties"> - <thead> - <tr> - <th colspan="2">Cost Estimates</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="property in node.optimizer_properties.costs"> - <td>{{property.name}}</td> - <td table-property="table-property" value="property.value"></td> - </tr> - </tbody> - </table> - </div> - </div> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.statistics.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.statistics.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.statistics.html deleted file mode 100644 index 951cc1c..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.statistics.html +++ /dev/null @@ -1,40 +0,0 @@ - -<!-- -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. - ---> -<table class="table table-properties"> - <thead> - <tr> - <th colspan="2">Some statistics</th> - </tr> - </thead> - <tbody> - <tr> - <td>Operator</td> - <td>1</td> - </tr> - <tr> - <td>Parallelism</td> - <td>2</td> - </tr> - <tr> - <td>Subtasks-per-instance</td> - <td>3</td> - </tr> - </tbody> -</table> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.timeline.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.timeline.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.timeline.html deleted file mode 100644 index 2f22576..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.timeline.html +++ /dev/null @@ -1,23 +0,0 @@ - -<!-- -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. - ---> -<div class="canvas-wrapper"> - <div timeline="timeline" vertices="vertices" jobid="jobid" class="timeline-canvas"></div> -</div> -<div ui-view="vertex"></div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/job.timeline.vertex.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/job.timeline.vertex.html b/flink-runtime-web/web-dashboard/web/partials/jobs/job.timeline.vertex.html deleted file mode 100644 index 1a4bd06..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/job.timeline.vertex.html +++ /dev/null @@ -1,30 +0,0 @@ - -<!-- -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. - ---> -<div ng-if="vertex" class="panel panel-default panel-multi"> - <div class="panel-heading clearfix"> - <div class="panel-title">{{ vertex.groupvertex.groupvertexname | humanizeText }}</div> - </div> - <div class="panel-body"> - <div class="canvas-wrapper"> - <div vertex="vertex" data="vertex" class="timeline-canvas"></div> - </div> - <div id="timeline1"></div> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/jobs/running-jobs.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/jobs/running-jobs.html b/flink-runtime-web/web-dashboard/web/partials/jobs/running-jobs.html deleted file mode 100644 index e175d07..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/jobs/running-jobs.html +++ /dev/null @@ -1,53 +0,0 @@ - -<!-- -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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Running Jobs</div> -</nav> -<div id="content-inner"> - <table class="table table-hover table-clickable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Job Name</th> - <th>Job ID</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="job in jobs" ui-sref="single-job.plan.overview({ jobid: job.jid })"> - <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job.duration}} ms</td> - <td>{{job.name}}</td> - <td>{{job.jid}}</td> - <td class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> - </td> - <td> - <bs-label status="{{job.state}}">{{job.state}}</bs-label> - </td> - </tr> - </tbody> - </table> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/overview.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/overview.html b/flink-runtime-web/web-dashboard/web/partials/overview.html deleted file mode 100644 index ec3c580..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/overview.html +++ /dev/null @@ -1,147 +0,0 @@ - -<!-- -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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Overview</div> -</nav> -<div id="content-inner"> - <div class="row"> - <div class="col-md-6"> - <div class="panel panel-default panel-dashboard"> - <div class="panel-heading"> - <div class="row"> - <div class="col-xs-3"><i class="fa fa-tasks fa-3x"></i></div> - <div class="col-xs-9 text-right"> - <div class="huge">{{overview.taskmanagers}}</div> - <div>Task Managers</div> - </div> - </div> - </div> - <div class="panel-heading"> - <div class="row"> - <div class="col-xs-3"><i class="fa fa-folder fa-3x"></i></div> - <div class="col-xs-9 text-right"> - <div class="huge">{{overview["slots-total"]}}</div> - <div>Task Slots</div> - </div> - </div> - </div> - <div class="panel-heading"> - <div class="row"> - <div class="col-xs-3"><i class="fa fa-folder-o fa-3x"></i></div> - <div class="col-xs-9 text-right"> - <div class="huge">{{overview["slots-available"]}}</div> - <div>Available Task Slots</div> - </div> - </div> - </div> - </div> - </div> - <div class="col-md-6"> - <div class="panel panel-default panel-lg"> - <div class="panel-heading">Total Jobs</div> - <div class="list-group"> - <div class="list-group-item"> - <div class="badge badge-primary">{{overview["jobs-running"]}}</div>Running - </div> - <div class="list-group-item"> - <div class="badge badge-success">{{overview["jobs-finished"]}}</div>Finished - </div> - <div class="list-group-item"> - <div class="badge badge-info">{{overview["jobs-cancelled"]}}</div>Canceled - </div> - <div class="list-group-item"> - <div class="badge badge-danger">{{overview["jobs-failed"]}}</div>Failed - </div> - </div> - </div> - </div> - </div> - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Running Jobs</h3> - </div> - <div class="panel-body"> - <table class="table table-hover table-clickable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Job Name</th> - <th>Job ID</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="job in runningJobs" ui-sref="single-job.plan.overview({ jobid: job.jid })"> - <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job.duration}} ms</td> - <td>{{job.name}}</td> - <td>{{job.jid}}</td> - <td class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> - </td> - <td> - <bs-label status="{{job.state}}">{{job.state}}</bs-label> - </td> - </tr> - </tbody> - </table> - </div> - </div> - <div class="panel panel-default"> - <div class="panel-heading"> - <h3 class="panel-title">Completed Jobs</h3> - </div> - <div class="panel-body"> - <table class="table table-hover table-clickable"> - <thead> - <tr> - <th>Start Time</th> - <th>End Time</th> - <th>Duration</th> - <th>Job Name</th> - <th>Job ID</th> - <th>Tasks</th> - <th>Status</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="job in finishedJobs" ui-sref="single-job.plan.overview({ jobid: job.jid })"> - <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> - <td>{{job.duration}} ms</td> - <td>{{job.name}}</td> - <td>{{job.jid}}</td> - <td class="label-group"> - <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> - </td> - <td> - <bs-label status="{{job.state}}">{{job.state}}</bs-label> - </td> - </tr> - </tbody> - </table> - </div> - </div> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime-web/web-dashboard/web/partials/taskmanager/index.html ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/web/partials/taskmanager/index.html b/flink-runtime-web/web-dashboard/web/partials/taskmanager/index.html deleted file mode 100644 index bf37409..0000000 --- a/flink-runtime-web/web-dashboard/web/partials/taskmanager/index.html +++ /dev/null @@ -1,57 +0,0 @@ - -<!-- -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. - ---> -<nav class="navbar navbar-default navbar-fixed-top navbar-main"> - <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> - <div class="navbar-title">Task Managers</div> -</nav> -<div id="content-inner"> - <table class="table table-clickable table-hover"> - <thead> - <tr> - <th>Path, ID</th> - <th>Data Port</th> - <th>Last Heartbeat</th> - <th>All Slots</th> - <th>Free Slots</th> - <th>CPU Cores</th> - <th>Physical Memory</th> - <th>Free Memory</th> - <th>Flink Managed Memory</th> - </tr> - </thead> - <tbody> - <tr ng-repeat="manager in managers" ui-sref="single-manager.metrics({taskmanagerid: manager.id})"> - <td> - {{ manager.path }} - - <div class="small-label">{{ manager.id }}</div> - </td> - <td>{{ manager.dataPort }}</td> - <td>{{ manager.timeSinceLastHeartbeat | amDateFormat:'YYYY-MM-DD, H:mm:ss' }}</td> - <td>{{ manager.slotsNumber }}</td> - <td>{{ manager.freeSlots }}</td> - <td>{{ manager.cpuCores }}</td> - <td>{{ manager.physicalMemory | bytes:MB }}</td> - <td>{{ manager.freeMemory | bytes:MB }}</td> - <td>{{ manager.managedMemory | bytes:MB }}</td> - </tr> - </tbody> - </table> -</div> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime/src/main/java/org/apache/flink/runtime/instance/AkkaActorGateway.java ---------------------------------------------------------------------- diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/instance/AkkaActorGateway.java b/flink-runtime/src/main/java/org/apache/flink/runtime/instance/AkkaActorGateway.java index c00e7fe..a2b0183 100644 --- a/flink-runtime/src/main/java/org/apache/flink/runtime/instance/AkkaActorGateway.java +++ b/flink-runtime/src/main/java/org/apache/flink/runtime/instance/AkkaActorGateway.java @@ -156,4 +156,9 @@ public class AkkaActorGateway implements ActorGateway, Serializable { public UUID leaderSessionID() { return leaderSessionID; } + + @Override + public String toString() { + return String.format("AkkaActorGateway(%s, %s)", actor.path(), leaderSessionID); + } } http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime/src/main/java/org/apache/flink/runtime/util/StandaloneUtils.java ---------------------------------------------------------------------- diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/util/StandaloneUtils.java b/flink-runtime/src/main/java/org/apache/flink/runtime/util/StandaloneUtils.java index 4cdc4f8..460f10e 100644 --- a/flink-runtime/src/main/java/org/apache/flink/runtime/util/StandaloneUtils.java +++ b/flink-runtime/src/main/java/org/apache/flink/runtime/util/StandaloneUtils.java @@ -63,6 +63,8 @@ public final class StandaloneUtils { Configuration configuration, String jobManagerName) throws UnknownHostException { + + Tuple2<String, Object> stringIntPair = TaskManager.getAndCheckJobManagerAddress(configuration); String jobManagerHostname = stringIntPair._1(); http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime/src/main/java/org/apache/flink/runtime/webmonitor/WebMonitor.java ---------------------------------------------------------------------- diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/webmonitor/WebMonitor.java b/flink-runtime/src/main/java/org/apache/flink/runtime/webmonitor/WebMonitor.java index c2e2b0d..63e2cc8 100644 --- a/flink-runtime/src/main/java/org/apache/flink/runtime/webmonitor/WebMonitor.java +++ b/flink-runtime/src/main/java/org/apache/flink/runtime/webmonitor/WebMonitor.java @@ -28,7 +28,7 @@ public interface WebMonitor { * * @throws Exception This method may forward exceptions, if it cannot bring up the web monitor. */ - void start() throws Exception; + void start(String jobManagerAkkaUrl) throws Exception; /** * Stops the web server. http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime/src/main/scala/org/apache/flink/runtime/jobmanager/JobManager.scala ---------------------------------------------------------------------- diff --git a/flink-runtime/src/main/scala/org/apache/flink/runtime/jobmanager/JobManager.scala b/flink-runtime/src/main/scala/org/apache/flink/runtime/jobmanager/JobManager.scala index 055274d..161e8de 100644 --- a/flink-runtime/src/main/scala/org/apache/flink/runtime/jobmanager/JobManager.scala +++ b/flink-runtime/src/main/scala/org/apache/flink/runtime/jobmanager/JobManager.scala @@ -20,7 +20,7 @@ package org.apache.flink.runtime.jobmanager import java.io.{File, IOException} import java.lang.reflect.{Constructor, InvocationTargetException} -import java.net.InetSocketAddress +import java.net.{UnknownHostException, InetAddress, InetSocketAddress} import java.util.UUID import akka.actor.Status.Failure @@ -43,7 +43,7 @@ import org.apache.flink.runtime.jobgraph.{JobGraph, JobStatus, JobVertexID} import org.apache.flink.runtime.jobmanager.SubmittedJobGraphStore.SubmittedJobGraphListener import org.apache.flink.runtime.jobmanager.scheduler.{Scheduler => FlinkScheduler} import org.apache.flink.runtime.leaderelection.{LeaderContender, LeaderElectionService, StandaloneLeaderElectionService} -import org.apache.flink.runtime.leaderretrieval.LeaderRetrievalService +import org.apache.flink.runtime.leaderretrieval.{StandaloneLeaderRetrievalService, LeaderRetrievalService} import org.apache.flink.runtime.messages.ArchiveMessages.ArchiveExecutionGraph import org.apache.flink.runtime.messages.ExecutionGraphMessages.JobStatusChanged import org.apache.flink.runtime.messages.JobManagerMessages._ @@ -130,6 +130,16 @@ class JobManager( var futuresToComplete: Option[Seq[Future[Unit]]] = None /** + * The port of the web monitor as configured. Make sure that it is actually configured before + * starting the JobManager. This tightly couples the web monitor with the job manager. It is a + * temporary workaround until all execution graph components are properly serializable and all + * web monitors can transparently interact with each job manager. Currently each web server has + * to run in the actor system of the associated job manager. + */ + val webMonitorPort : Int = flinkConfiguration.getInteger( + ConfigConstants.JOB_MANAGER_WEB_PORT_KEY, -1) + + /** * Run when the job manager is started. Simply logs an informational message. * The method also starts the leader election service. */ @@ -729,6 +739,9 @@ class JobManager( case RequestLeaderSessionID => sender() ! ResponseLeaderSessionID(leaderSessionID.orNull) + + case RequestWebMonitorPort => + sender() ! ResponseWebMonitorPort(webMonitorPort) } /** @@ -1529,6 +1542,39 @@ object JobManager { } } + val webMonitor: Option[WebMonitor] = + if (configuration.getInteger(ConfigConstants.JOB_MANAGER_WEB_PORT_KEY, 0) >= 0) { + val address = AkkaUtils.getAddress(jobManagerSystem) + + configuration.setString(ConfigConstants.JOB_MANAGER_IPC_ADDRESS_KEY, address.host.get) + configuration.setInteger(ConfigConstants.JOB_MANAGER_IPC_PORT_KEY, address.port.get) + + // start the job manager web frontend + if (configuration.getBoolean(ConfigConstants.JOB_MANAGER_NEW_WEB_FRONTEND_KEY, false)) { + val leaderRetrievalService = LeaderRetrievalUtils + .createLeaderRetrievalService(configuration) + + LOG.info("Starting NEW JobManger web frontend") + // start the new web frontend. we need to load this dynamically + // because it is not in the same project/dependencies + Some(startWebRuntimeMonitor(configuration, leaderRetrievalService, jobManagerSystem)) + } + else { + LOG.info("Starting JobManger web frontend") + + // The old web frontend does not work with recovery mode + val leaderRetrievalService = StandaloneUtils.createLeaderRetrievalService(configuration) + Some(new WebInfoServer(configuration, leaderRetrievalService, jobManagerSystem)) + } + } + else { + None + } + + // Reset the port (necessary in case of automatic port selection) + webMonitor.foreach{ monitor => configuration.setInteger( + ConfigConstants.JOB_MANAGER_WEB_PORT_KEY, monitor.getServerPort) } + try { // bring up the job manager actor LOG.info("Starting JobManager actor") @@ -1574,19 +1620,10 @@ object JobManager { "TaskManager_Process_Reaper") } - val webMonitor = if ( - configuration.getInteger( - ConfigConstants.JOB_MANAGER_WEB_PORT_KEY, - 0) >= 0) { - - // TODO: Add support for HA. Webserver has to work in dedicated mode. All transferred - // information has to be made serializable - val address = AkkaUtils.getAddress(jobManagerSystem) - - configuration.setString(ConfigConstants.JOB_MANAGER_IPC_ADDRESS_KEY, address.host.get) - configuration.setInteger(ConfigConstants.JOB_MANAGER_IPC_PORT_KEY, address.port.get) - - val leaderRetrievalService = StandaloneUtils.createLeaderRetrievalService(configuration) + webMonitor.foreach { + monitor => + val jobManagerAkkaUrl = JobManager.getRemoteJobManagerAkkaURL(configuration) + monitor.start(jobManagerAkkaUrl) LOG.info("Starting JobManger web frontend") // start the web frontend. we need to load this dynamically @@ -1595,11 +1632,6 @@ object JobManager { configuration, leaderRetrievalService, jobManagerSystem) - - if(webServer != null) { - webServer.start() - } - Option(webServer) } else { None @@ -1978,6 +2010,31 @@ object JobManager { } /** + * Returns the JobManager actor's remote Akka URL, given the configured hostname and port. + * + * @param config The configuration to parse + * @return JobManager actor remote Akka URL + */ + def getRemoteJobManagerAkkaURL(config: Configuration) : String = { + val (hostname, port) = TaskManager.getAndCheckJobManagerAddress(config) + + var hostPort: InetSocketAddress = null + + try { + val inetAddress: InetAddress = InetAddress.getByName(hostname) + hostPort = new InetSocketAddress(inetAddress, port) + } + catch { + case e: UnknownHostException => { + throw new UnknownHostException(s"Cannot resolve the JobManager hostname '$hostname' " + + s"specified in the configuration") + } + } + + JobManager.getRemoteJobManagerAkkaURL(hostPort, Option.empty) + } + + /** * Builds the akka actor path for the JobManager actor to address the actor within * its own actor system. * http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime/src/main/scala/org/apache/flink/runtime/messages/JobManagerMessages.scala ---------------------------------------------------------------------- diff --git a/flink-runtime/src/main/scala/org/apache/flink/runtime/messages/JobManagerMessages.scala b/flink-runtime/src/main/scala/org/apache/flink/runtime/messages/JobManagerMessages.scala index 8a4d27b..bb5f598 100644 --- a/flink-runtime/src/main/scala/org/apache/flink/runtime/messages/JobManagerMessages.scala +++ b/flink-runtime/src/main/scala/org/apache/flink/runtime/messages/JobManagerMessages.scala @@ -380,6 +380,16 @@ object JobManagerMessages { /** Response containing the ActorRef of the archiver */ case class ResponseArchive(actor: ActorRef) + /** Request for the [[org.apache.flink.runtime.webmonitor.WebMonitor]] port. */ + case object RequestWebMonitorPort + + /** + * Response containing the [[org.apache.flink.runtime.webmonitor.WebMonitor]] port. + * + * -1 indicates that there is no web monitor running. + */ + case class ResponseWebMonitorPort(port: Integer) + // -------------------------------------------------------------------------- // Utility methods to allow simpler case object access from Java // -------------------------------------------------------------------------- @@ -431,4 +441,8 @@ object JobManagerMessages { def getRecoverAllJobs: AnyRef = { RecoverAllJobs } + + def getRequestWebMonitorPort: AnyRef = { + RequestWebMonitorPort + } } http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-runtime/src/main/scala/org/apache/flink/runtime/minicluster/FlinkMiniCluster.scala ---------------------------------------------------------------------- diff --git a/flink-runtime/src/main/scala/org/apache/flink/runtime/minicluster/FlinkMiniCluster.scala b/flink-runtime/src/main/scala/org/apache/flink/runtime/minicluster/FlinkMiniCluster.scala index 9c4381e..cefb462 100644 --- a/flink-runtime/src/main/scala/org/apache/flink/runtime/minicluster/FlinkMiniCluster.scala +++ b/flink-runtime/src/main/scala/org/apache/flink/runtime/minicluster/FlinkMiniCluster.scala @@ -292,7 +292,7 @@ abstract class FlinkMiniCluster( val webServer = WebMonitorUtils.startWebRuntimeMonitor( config, leaderRetrievalService, actorSystem) - webServer.start() + webServer.start(jobManagerAkkaURL) Option(webServer) } else { http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/flink-yarn/src/main/scala/org/apache/flink/yarn/ApplicationMaster.scala ---------------------------------------------------------------------- diff --git a/flink-yarn/src/main/scala/org/apache/flink/yarn/ApplicationMaster.scala b/flink-yarn/src/main/scala/org/apache/flink/yarn/ApplicationMaster.scala index ad162fe..6fcbcef 100644 --- a/flink-yarn/src/main/scala/org/apache/flink/yarn/ApplicationMaster.scala +++ b/flink-yarn/src/main/scala/org/apache/flink/yarn/ApplicationMaster.scala @@ -19,6 +19,7 @@ package org.apache.flink.yarn import org.apache.flink.runtime.jobmanager.{MemoryArchivist, JobManager} + /** Default implemenation of the [[ApplicationMasterBase]] which starts a [[YarnJobManager]] and a * [[MemoryArchivist]]. */ http://git-wip-us.apache.org/repos/asf/flink/blob/77fc0cc4/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index efe2101..47c47c5 100644 --- a/pom.xml +++ b/pom.xml @@ -735,7 +735,7 @@ under the License. <exclude>flink-runtime-web/web-dashboard/assets/fonts/fontawesome*</exclude> <!-- generated contents --> - <exclude>flink-runtime-web/web-dashboard/web/**</exclude> + <exclude>flink-runtime-web/src/main/resources/web/**</exclude> <!-- downloaded and generated web libraries. --> <exclude>flink-runtime-web/web-dashboard/node_modules/**</exclude>
