|
14 | 14 | import org.elasticsearch.client.Client; |
15 | 15 | import org.elasticsearch.cluster.service.ClusterService; |
16 | 16 | import org.elasticsearch.xpack.core.ml.MlMetadata; |
| 17 | +import org.elasticsearch.xpack.core.ml.job.config.Job; |
17 | 18 | import org.elasticsearch.xpack.core.ml.job.persistence.AnomalyDetectorsIndex; |
18 | 19 | import org.elasticsearch.xpack.core.ml.job.persistence.ElasticsearchMappings; |
19 | 20 | import org.elasticsearch.xpack.core.ml.job.process.autodetect.state.CategorizerState; |
20 | 21 | import org.elasticsearch.xpack.core.ml.job.process.autodetect.state.ModelState; |
21 | 22 | import org.elasticsearch.xpack.core.ml.job.process.autodetect.state.Quantiles; |
| 23 | +import org.elasticsearch.xpack.ml.job.persistence.BatchedJobsIterator; |
22 | 24 | import org.elasticsearch.xpack.ml.job.persistence.BatchedStateDocIdsIterator; |
23 | 25 |
|
24 | 26 | import java.util.Arrays; |
25 | 27 | import java.util.Deque; |
| 28 | +import java.util.HashSet; |
26 | 29 | import java.util.List; |
27 | 30 | import java.util.Objects; |
28 | 31 | import java.util.Set; |
@@ -81,7 +84,18 @@ private BulkRequestBuilder findUnusedStateDocs() { |
81 | 84 | } |
82 | 85 |
|
83 | 86 | private Set<String> getJobIds() { |
84 | | - return MlMetadata.getMlMetadata(clusterService.state()).getJobs().keySet(); |
| 87 | + Set<String> jobIds = new HashSet<>(); |
| 88 | + |
| 89 | + // TODO Once at 8.0, we can stop searching for jobs in cluster state |
| 90 | + // and remove cluster service as a member all together. |
| 91 | + jobIds.addAll(MlMetadata.getMlMetadata(clusterService.state()).getJobs().keySet()); |
| 92 | + |
| 93 | + BatchedJobsIterator jobsIterator = new BatchedJobsIterator(client, AnomalyDetectorsIndex.configIndexName()); |
| 94 | + while (jobsIterator.hasNext()) { |
| 95 | + Deque<Job.Builder> jobs = jobsIterator.next(); |
| 96 | + jobs.stream().map(Job.Builder::getId).forEach(jobIds::add); |
| 97 | + } |
| 98 | + return jobIds; |
85 | 99 | } |
86 | 100 |
|
87 | 101 | private void executeDeleteUnusedStateDocs(BulkRequestBuilder deleteUnusedStateRequestBuilder, ActionListener<Boolean> listener) { |
|
0 commit comments