Skip to content

Commit da8b9c6

Browse files
authored
[ML] Skip dataframes when disabled (#137220)
When Dataframes are disabled, do not try to call the Action and instead assume there are no trained models associated with a dataframe job. This avoids a transport exception for the disabled action.
1 parent 846593c commit da8b9c6

File tree

4 files changed

+42
-20
lines changed

4 files changed

+42
-20
lines changed

docs/changelog/137220.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 137220
2+
summary: Skip dataframes when disabled
3+
area: Machine Learning
4+
type: bug
5+
issues: []

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1527,7 +1527,7 @@ public List<RestHandler> getRestHandlers(
15271527
restHandlers.add(new RestDeleteTrainedModelAliasAction());
15281528
restHandlers.add(new RestPutTrainedModelDefinitionPartAction());
15291529
restHandlers.add(new RestInferTrainedModelAction());
1530-
restHandlers.add(new RestCatTrainedModelsAction());
1530+
restHandlers.add(new RestCatTrainedModelsAction(machineLearningExtension.get().isDataFrameAnalyticsEnabled()));
15311531
if (machineLearningExtension.get().isDataFrameAnalyticsEnabled()) {
15321532
restHandlers.add(new RestGetDataFrameAnalyticsAction());
15331533
restHandlers.add(new RestGetDataFrameAnalyticsStatsAction());

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsAction.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@
4949
@ServerlessScope(Scope.PUBLIC)
5050
public class RestCatTrainedModelsAction extends AbstractCatAction {
5151

52+
private final boolean areDataFrameAnalyticsEnabled;
53+
54+
public RestCatTrainedModelsAction(boolean areDataFrameAnalyticsEnabled) {
55+
this.areDataFrameAnalyticsEnabled = areDataFrameAnalyticsEnabled;
56+
}
57+
5258
@Override
5359
public List<Route> routes() {
5460
return List.of(
@@ -122,14 +128,18 @@ private void getDerivedData(
122128
listeners.acquire(response -> trainedModelsStats = response.getResources().results())
123129
);
124130

125-
final var dataFrameAnalyticsRequest = new GetDataFrameAnalyticsAction.Request(requestIdPattern);
126-
dataFrameAnalyticsRequest.setAllowNoResources(true);
127-
dataFrameAnalyticsRequest.setPageParams(new PageParams(0, potentialAnalyticsIds.size()));
128-
client.execute(
129-
GetDataFrameAnalyticsAction.INSTANCE,
130-
dataFrameAnalyticsRequest,
131-
listeners.acquire(response -> dataFrameAnalytics = response.getResources().results())
132-
);
131+
if (areDataFrameAnalyticsEnabled) {
132+
final var dataFrameAnalyticsRequest = new GetDataFrameAnalyticsAction.Request(requestIdPattern);
133+
dataFrameAnalyticsRequest.setAllowNoResources(true);
134+
dataFrameAnalyticsRequest.setPageParams(new PageParams(0, potentialAnalyticsIds.size()));
135+
client.execute(
136+
GetDataFrameAnalyticsAction.INSTANCE,
137+
dataFrameAnalyticsRequest,
138+
listeners.acquire(response -> dataFrameAnalytics = response.getResources().results())
139+
);
140+
} else {
141+
dataFrameAnalytics = List.of();
142+
}
133143
}
134144
}
135145

x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/rest/cat/RestCatTrainedModelsActionTests.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,25 @@
77

88
package org.elasticsearch.xpack.ml.rest.cat;
99

10+
import org.elasticsearch.common.Strings;
1011
import org.elasticsearch.test.ESTestCase;
1112
import org.elasticsearch.test.rest.FakeRestRequest;
1213
import org.elasticsearch.xpack.core.ml.action.GetTrainedModelsStatsAction;
1314
import org.elasticsearch.xpack.core.ml.action.GetTrainedModelsStatsActionResponseTests;
15+
import org.elasticsearch.xpack.core.ml.dataframe.DataFrameAnalyticsConfigTests;
1416
import org.elasticsearch.xpack.core.ml.inference.TrainedModelConfigTests;
1517
import org.elasticsearch.xpack.core.ml.inference.trainedmodel.TrainedModelSizeStats;
16-
import org.junit.Before;
1718

1819
import java.util.List;
1920

2021
import static org.hamcrest.Matchers.is;
22+
import static org.hamcrest.Matchers.nullValue;
2123

2224
public class RestCatTrainedModelsActionTests extends ESTestCase {
2325

24-
private RestCatTrainedModelsAction action;
25-
26-
@Before
27-
public void setUpAction() {
28-
action = new RestCatTrainedModelsAction();
29-
}
30-
3126
public void testBuildTableAccumulatedStats() {
27+
var action = new RestCatTrainedModelsAction(true);
28+
3229
// GetTrainedModelsStatsActionResponseTests
3330
var deployment1 = new GetTrainedModelsStatsAction.Response.TrainedModelStats(
3431
"id1",
@@ -48,10 +45,13 @@ public void testBuildTableAccumulatedStats() {
4845
null
4946
);
5047

51-
var configs = List.of(TrainedModelConfigTests.createTestInstance("id1").build());
48+
var dataframeConfig = DataFrameAnalyticsConfigTests.createRandom("dataframe1");
49+
var configs = List.of(
50+
TrainedModelConfigTests.createTestInstance(deployment1.getModelId()).setTags(List.of(dataframeConfig.getId())).build()
51+
);
5252

53-
var table = action.buildTable(new FakeRestRequest(), List.of(deployment1, deployment2), configs, List.of());
54-
assertThat(table.getRows().get(0).get(0).value, is("id1"));
53+
var table = action.buildTable(new FakeRestRequest(), List.of(deployment1, deployment2), configs, List.of(dataframeConfig));
54+
assertThat(table.getRows().get(0).get(0).value, is(deployment1.getModelId()));
5555
// pipeline count
5656
assertThat(table.getRows().get(0).get(9).value, is(4));
5757
// ingest count
@@ -82,5 +82,12 @@ public void testBuildTableAccumulatedStats() {
8282
.ingestFailedCount()
8383
)
8484
);
85+
assertThat(table.getRows().get(0).get(14).value, is(dataframeConfig.getId()));
86+
assertThat(table.getRows().get(0).get(15).value, is(dataframeConfig.getCreateTime()));
87+
assertThat(table.getRows().get(0).get(16).value, is(Strings.arrayToCommaDelimitedString(dataframeConfig.getSource().getIndex())));
88+
assertThat(
89+
table.getRows().get(0).get(17).value,
90+
dataframeConfig.getAnalysis() == null ? nullValue() : is(dataframeConfig.getAnalysis().getWriteableName())
91+
);
8592
}
8693
}

0 commit comments

Comments
 (0)