mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-25 22:36:20 +00:00
[ML] Skip index health checks for remote indices on datafeed node sel (elastic/x-pack-elasticsearch#3301)
Upon selecting a node to run a datafeed we normally check that the data indices exists and their primaries are active. However, these checks cannot be applied for CCS to a remote cluster. This commit skips these checks for remote indices. This removes the last obstacle for running CCS datafeeds. Relates elastic/x-pack-elasticsearch#1071 Original commit: elastic/x-pack-elasticsearch@092f44feee
This commit is contained in:
parent
711254fd24
commit
92c40061c5
@ -89,6 +89,12 @@ public class DatafeedNodeSelector {
|
||||
private AssignmentFailure verifyIndicesActive(DatafeedConfig datafeed) {
|
||||
List<String> indices = datafeed.getIndices();
|
||||
for (String index : indices) {
|
||||
|
||||
if (isRemoteIndex(index)) {
|
||||
// We cannot verify remote indices
|
||||
continue;
|
||||
}
|
||||
|
||||
String[] concreteIndices;
|
||||
String reason = "cannot start datafeed [" + datafeed.getId() + "] because index ["
|
||||
+ index + "] does not exist, is closed, or is still initializing.";
|
||||
@ -115,6 +121,10 @@ public class DatafeedNodeSelector {
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean isRemoteIndex(String index) {
|
||||
return index.indexOf(':') != -1;
|
||||
}
|
||||
|
||||
private static class AssignmentFailure {
|
||||
private final String reason;
|
||||
private final boolean isCriticalForTaskCreation;
|
||||
|
@ -226,6 +226,23 @@ public class DatafeedNodeSelectorTests extends ESTestCase {
|
||||
+ "[cannot start datafeed [datafeed_id] because index [not_foo] does not exist, is closed, or is still initializing.]"));
|
||||
}
|
||||
|
||||
public void testRemoteIndex() {
|
||||
MlMetadata.Builder mlMetadataBuilder = new MlMetadata.Builder();
|
||||
Job job = createScheduledJob("job_id").build(new Date());
|
||||
mlMetadataBuilder.putJob(job, false);
|
||||
mlMetadataBuilder.putDatafeed(createDatafeed("datafeed_id", job.getId(), Collections.singletonList("remote:foo")), null);
|
||||
mlMetadata = mlMetadataBuilder.build();
|
||||
|
||||
PersistentTasksCustomMetaData.Builder tasksBuilder = PersistentTasksCustomMetaData.builder();
|
||||
addJobTask(job.getId(), "node_id", JobState.OPENED, tasksBuilder);
|
||||
tasks = tasksBuilder.build();
|
||||
|
||||
givenClusterState("foo", 1, 0);
|
||||
|
||||
PersistentTasksCustomMetaData.Assignment result = new DatafeedNodeSelector(clusterState, resolver, "datafeed_id").selectNode();
|
||||
assertNotNull(result.getExecutorNode());
|
||||
}
|
||||
|
||||
public void testSelectNode_jobTaskStale() {
|
||||
MlMetadata.Builder mlMetadataBuilder = new MlMetadata.Builder();
|
||||
Job job = createScheduledJob("job_id").build(new Date());
|
||||
|
Loading…
x
Reference in New Issue
Block a user