Github user tzulitai commented on a diff in the pull request: https://github.com/apache/flink/pull/4688#discussion_r140190681 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/dispatcher/Dispatcher.java --- @@ -258,6 +260,23 @@ public void start() throws Exception { 8)); } + @Override + public CompletableFuture<MultipleJobsDetails> requestJobDetails(Time timeout) { + final int numberJobsRunning = jobManagerRunners.size(); + + ArrayList<CompletableFuture<JobDetails>> individualJobDetails = new ArrayList<>(numberJobsRunning); + + for (JobManagerRunner jobManagerRunner : jobManagerRunners.values()) { + individualJobDetails.add(jobManagerRunner.getJobManagerGateway().requestJobDetails(timeout)); + } + + CompletableFuture<Collection<JobDetails>> combinedJobDetails = FutureUtils.combineAll(individualJobDetails); + + return combinedJobDetails.thenApply( + (Collection<JobDetails> jobDetails) -> + new MultipleJobsDetails(jobDetails.toArray(new JobDetails[numberJobsRunning]), null)); --- End diff -- Can we somehow lessen the array <-> collection conversions here? For example, I think in `FutureUtils.combineAll` the completed results were actually originally an array before they were returned as a collection, and then here we're converting it back to an array again.
---