Skip to content

Commit b09b33d

Browse files
committed
And for Job Stats
1 parent 1f49c57 commit b09b33d

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportGetJobsStatsAction.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import java.util.Optional;
4747
import java.util.Set;
4848
import java.util.concurrent.atomic.AtomicInteger;
49+
import java.util.concurrent.atomic.AtomicReference;
4950
import java.util.function.Consumer;
5051
import java.util.stream.Collectors;
5152

@@ -143,7 +144,17 @@ void gatherStatsForClosedJobs(GetJobsStatsAction.Request request, GetJobsStatsAc
143144
}
144145

145146
AtomicInteger counter = new AtomicInteger(closedJobIds.size());
147+
AtomicReference<Exception> searchException = new AtomicReference<>();
146148
AtomicArray<GetJobsStatsAction.Response.JobStats> jobStats = new AtomicArray<>(closedJobIds.size());
149+
150+
Consumer<Exception> errorHandler = e -> {
151+
// take the first error
152+
searchException.compareAndSet(null, e);
153+
if (counter.decrementAndGet() == 0) {
154+
listener.onFailure(e);
155+
}
156+
};
157+
147158
PersistentTasksCustomMetadata tasks = clusterService.state().getMetadata().custom(PersistentTasksCustomMetadata.TYPE);
148159
for (int i = 0; i < closedJobIds.size(); i++) {
149160
int slot = i;
@@ -159,14 +170,19 @@ void gatherStatsForClosedJobs(GetJobsStatsAction.Request request, GetJobsStatsAc
159170
jobStats.set(slot, new JobStats(jobId, dataCounts, modelSizeStats, forecastStats, jobState,
160171
null, assignmentExplanation, null, timingStats));
161172
if (counter.decrementAndGet() == 0) {
173+
if (searchException.get() != null) {
174+
// there was an error
175+
listener.onFailure(searchException.get());
176+
return;
177+
}
162178
List<JobStats> results = response.getResponse().results();
163179
results.addAll(jobStats.asList());
164180
Collections.sort(results, Comparator.comparing(GetJobsStatsAction.Response.JobStats::getJobId));
165181
listener.onResponse(new GetJobsStatsAction.Response(response.getTaskFailures(), response.getNodeFailures(),
166182
new QueryPage<>(results, results.size(), Job.RESULTS_FIELD)));
167183
}
168-
}, listener::onFailure);
169-
}, listener::onFailure);
184+
}, errorHandler);
185+
}, errorHandler);
170186
}
171187
}
172188

0 commit comments

Comments
 (0)