> On May 14, 2014, 4:26 a.m., Suman Karumuri wrote:
> > src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js,
> > line 386
> > <https://reviews.apache.org/r/21247/diff/5/?file=581259#file581259line386>
> >
> > I see this function call (function definition itself is good) as a
> > potential land mine. For example, moving this function from line 358 to
> > 356, would cause buildGroupSummary to break and this error will be very
> > hard to debug. Your comment here is an indication that this needs special
> > attention.
> >
> > Moving this function call into the getTasksForJob(line 398) function
> > will obviate the need for this comment and will also make the code flow
> > more straightforward.
> >
> > I agree that this controller code can use some refactoring, but I think
> > this is a potential land mine and there is nothing to be gained from
> > calling it outside the normal call path.
> >
> > Please feel free to leave a TODO to refactor getTasksForJob.
>
> David McLaughlin wrote:
> buildGroupSummary needs $scope.taskSummary to be defined. If I move it to
> line 398, then every reason for this being 'a land mine' still exists. This
> is synchronous, imperative code. Why would it be surprising that you can't
> just move code around without breaking stuff?
>
> Also, it's not going to be hard to debug. The error will say "Cannot call
> map on undefined" and
>
> TypeError: Cannot read property 'map' of undefined
> at buildGroupSummary (http://localhost:8081/js/controllers.js:372:47)
> at new <anonymous> (http://localhost:8081/js/controllers.js:356:5)
> at invoke (http://localhost:8081/js/angular.js:3697:17)
> at Object.instantiate (http://localhost:8081/js/angular.js:3708:23)
> at http://localhost:8081/js/angular.js:6758:28
> at link (http://localhost:8081/js/angular-route.js:906:26)
> at nodeLinkFn (http://localhost:8081/js/angular.js:6212:13)
> at compositeLinkFn (http://localhost:8081/js/angular.js:5622:15)
> at publicLinkFn (http://localhost:8081/js/angular.js:5527:30)
> at boundTranscludeFn (http://localhost:8081/js/angular.js:5641:21)
> <ng-view class="ng-scope">
The code is breaks the linear control flow for no good reason. I fail to
understand the benefit of doing it the way you did it. The fact that you added
a comment indicates a code smell.
If it helps, please rewrite getTasksForJob as follows:
$scope.activeTasks = [];
getTasksForJob($scope, auroraClient);
function getTasksForJob($scope, auroraClient) {
var response = auroraClient.getTasks($scope.role, $scope.environment,
$scope.job);
if (response.error) {
$scope.error = 'Error fetching tasks: ' + response.error;
return [];
}
$scope.jobDashboardUrl = getJobDashboardUrl(response.statsUrlPrefix);
$scope.taskSummary = taskUtil.summarizeActiveTaskConfigs(response.tasks);
buildGroupSummary($scope);
var tasks = _.map(response.tasks, function (task) {
return summarizeTask(task);
});
var activeTaskPredicate = function (task) {
return task.isActive;
};
$scope.completedTasks = _.chain(tasks)
.reject(activeTaskPredicate)
.sortBy(function (task) {
return -task.latestActivity; //sort in descending order
})
.value();
$scope.activeTasks = _.chain(tasks)
.filter(activeTaskPredicate)
.sortBy(function (task) {
return task.instanceId;
})
.value();
}
This is just a 4 line change and gets rid of the side-effects you don't like.
Further refactoring can be performed in future reviews.
- Suman
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21247/#review42937
-----------------------------------------------------------
On May 14, 2014, 1:30 a.m., David McLaughlin wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21247/
> -----------------------------------------------------------
>
> (Updated May 14, 2014, 1:30 a.m.)
>
>
> Review request for Aurora, Suman Karumuri and Bill Farner.
>
>
> Bugs: AURORA-378
> https://issues.apache.org/jira/browse/AURORA-378
>
>
> Repository: aurora
>
>
> Description
> -------
>
> Replace the button to show/hide configs with a bar when there are multiple.
> Tidied up the display of the configuration data.
>
>
> Diffs
> -----
>
> src/main/java/org/apache/aurora/scheduler/http/ServletModule.java
> 983101277ffbd1c4017b29f4c86e61315f1bcc78
> src/main/resources/org/apache/aurora/scheduler/http/ui/configSummary.html
> PRE-CREATION
> src/main/resources/org/apache/aurora/scheduler/http/ui/css/app.css
> dc515ac818a9af36522bb07a125cd92ff9230fa2
> src/main/resources/org/apache/aurora/scheduler/http/ui/groupSummary.html
> PRE-CREATION
> src/main/resources/org/apache/aurora/scheduler/http/ui/job.html
> cd78c20bee7891a6cdfd19943a6f7e8a9dce33df
> src/main/resources/org/apache/aurora/scheduler/http/ui/js/controllers.js
> 7c80bd769b7e80bef0822846166959925b1bf7f8
> src/main/resources/org/apache/aurora/scheduler/http/ui/js/directives.js
> a79276d2486fc1122a8b084ea0614cdae759f88c
>
> Diff: https://reviews.apache.org/r/21247/diff/
>
>
> Testing
> -------
>
>
> File Attachments
> ----------------
>
> Job page with only one config group
>
> https://reviews.apache.org/media/uploaded/files/2014/05/08/908570f2-bef2-4370-bf08-1b5c7400c3c6__Screen_Shot_2014-05-08_at_4.26.02_PM.png
> Showing config for only one config group
>
> https://reviews.apache.org/media/uploaded/files/2014/05/08/1424f2c3-cf66-4ce4-a595-dc3f7647d6d2__Screen_Shot_2014-05-08_at_4.26.12_PM.png
> Job page with multiple config groups
>
> https://reviews.apache.org/media/uploaded/files/2014/05/08/bc9c1616-3c71-4bcc-ab40-fefc56d5e19a__Screen_Shot_2014-05-08_at_4.25.21_PM.png
> Viewing one of the groups from config bar
>
> https://reviews.apache.org/media/uploaded/files/2014/05/08/6b8e6077-c8c8-48c9-94e9-732e782204b6__Screen_Shot_2014-05-08_at_4.25.36_PM.png
> Viewing multiple configs at the same time
>
> https://reviews.apache.org/media/uploaded/files/2014/05/08/b7b2cba1-034b-43e6-9eaa-3ba1a78f87f5__Screen_Shot_2014-05-08_at_4.25.42_PM.png
> screenshot of really small group
>
> https://reviews.apache.org/media/uploaded/files/2014/05/12/2d7999ac-ba1f-45b0-bf9e-99f9c7a10009__Screen_Shot_2014-05-12_at_1.27.59_PM.png
>
>
> Thanks,
>
> David McLaughlin
>
>