Skip to content

Commit 3df6e34

Browse files
demjenedelasticsearchmachine
andauthored
[ML] Remove Elastic Inference Service feature flag and deprecated setting (#120842)
* Remove EIS feature flag * Remove Inference Service feature flag and deprecated setting * Put back FF temporarily * Fix after rebasing * [CI] Auto commit changes from spotless * Update docs/changelog/120842.yaml --------- Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
1 parent 325000d commit 3df6e34

File tree

8 files changed

+67
-218
lines changed

8 files changed

+67
-218
lines changed

docs/changelog/120842.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 120842
2+
summary: Remove Elastic Inference Service feature flag and deprecated setting
3+
area: Inference
4+
type: enhancement
5+
issues: []

x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/BaseMockEISAuthServerTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ public class BaseMockEISAuthServerTest extends ESRestTestCase {
3939
.setting("xpack.security.enabled", "true")
4040
// Adding both settings unless one feature flag is disabled in a particular environment
4141
.setting("xpack.inference.elastic.url", mockEISServer::getUrl)
42-
// TODO remove this once we've removed DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG and EIS_GATEWAY_URL
43-
.setting("xpack.inference.eis.gateway.url", mockEISServer::getUrl)
4442
// This plugin is located in the inference/qa/test-service-plugin package, look for TestInferenceServicePlugin
4543
.plugin("inference-service-test")
4644
.user("x_pack_rest_user", "x-pack-test-password")

x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceGetModelsWithElasticInferenceServiceIT.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
package org.elasticsearch.xpack.inference;
1111

1212
import org.elasticsearch.inference.TaskType;
13-
import org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceFeature;
1413

1514
import java.io.IOException;
1615

@@ -24,17 +23,11 @@ public void testGetDefaultEndpoints() throws IOException {
2423
var allModels = getAllModels();
2524
var chatCompletionModels = getModels("_all", TaskType.CHAT_COMPLETION);
2625

27-
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
28-
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
29-
assertThat(allModels, hasSize(4));
30-
assertThat(chatCompletionModels, hasSize(1));
31-
32-
for (var model : chatCompletionModels) {
33-
assertEquals("chat_completion", model.get("task_type"));
34-
}
35-
} else {
36-
assertThat(allModels, hasSize(3));
37-
assertThat(chatCompletionModels, hasSize(0));
26+
assertThat(allModels, hasSize(4));
27+
assertThat(chatCompletionModels, hasSize(1));
28+
29+
for (var model : chatCompletionModels) {
30+
assertEquals("chat_completion", model.get("task_type"));
3831
}
3932

4033
}

x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceGetServicesIT.java

Lines changed: 16 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@
1212
import org.elasticsearch.client.Request;
1313
import org.elasticsearch.common.Strings;
1414
import org.elasticsearch.inference.TaskType;
15-
import org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceFeature;
1615

1716
import java.io.IOException;
18-
import java.util.ArrayList;
19-
import java.util.Arrays;
2017
import java.util.List;
2118
import java.util.Map;
2219

@@ -28,27 +25,23 @@ public class InferenceGetServicesIT extends BaseMockEISAuthServerTest {
2825
@SuppressWarnings("unchecked")
2926
public void testGetServicesWithoutTaskType() throws IOException {
3027
List<Object> services = getAllServices();
31-
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
32-
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
33-
assertThat(services.size(), equalTo(19));
34-
} else {
35-
assertThat(services.size(), equalTo(18));
36-
}
28+
assertThat(services.size(), equalTo(19));
3729

3830
String[] providers = new String[services.size()];
3931
for (int i = 0; i < services.size(); i++) {
4032
Map<String, Object> serviceConfig = (Map<String, Object>) services.get(i);
4133
providers[i] = (String) serviceConfig.get("service");
4234
}
4335

44-
var providerList = new ArrayList<>(
45-
Arrays.asList(
36+
assertArrayEquals(
37+
List.of(
4638
"alibabacloud-ai-search",
4739
"amazonbedrock",
4840
"anthropic",
4941
"azureaistudio",
5042
"azureopenai",
5143
"cohere",
44+
"elastic",
5245
"elasticsearch",
5346
"googleaistudio",
5447
"googlevertexai",
@@ -61,13 +54,9 @@ public void testGetServicesWithoutTaskType() throws IOException {
6154
"test_service",
6255
"text_embedding_test_service",
6356
"watsonxai"
64-
)
57+
).toArray(),
58+
providers
6559
);
66-
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
67-
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
68-
providerList.add(6, "elastic");
69-
}
70-
assertArrayEquals(providerList.toArray(), providers);
7160
}
7261

7362
@SuppressWarnings("unchecked")
@@ -130,7 +119,7 @@ public void testGetServicesWithCompletionTaskType() throws IOException {
130119
providers[i] = (String) serviceConfig.get("service");
131120
}
132121

133-
var providerList = new ArrayList<>(
122+
assertArrayEquals(
134123
List.of(
135124
"alibabacloud-ai-search",
136125
"amazonbedrock",
@@ -141,61 +130,40 @@ public void testGetServicesWithCompletionTaskType() throws IOException {
141130
"googleaistudio",
142131
"openai",
143132
"streaming_completion_test_service"
144-
)
133+
).toArray(),
134+
providers
145135
);
146-
147-
assertArrayEquals(providers, providerList.toArray());
148136
}
149137

150138
@SuppressWarnings("unchecked")
151139
public void testGetServicesWithChatCompletionTaskType() throws IOException {
152140
List<Object> services = getServices(TaskType.CHAT_COMPLETION);
153-
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
154-
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
155-
assertThat(services.size(), equalTo(3));
156-
} else {
157-
assertThat(services.size(), equalTo(2));
158-
}
141+
assertThat(services.size(), equalTo(3));
159142

160143
String[] providers = new String[services.size()];
161144
for (int i = 0; i < services.size(); i++) {
162145
Map<String, Object> serviceConfig = (Map<String, Object>) services.get(i);
163146
providers[i] = (String) serviceConfig.get("service");
164147
}
165148

166-
var providerList = new ArrayList<>(List.of("openai", "streaming_completion_test_service"));
167-
168-
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
169-
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
170-
providerList.addFirst("elastic");
171-
}
172-
173-
assertArrayEquals(providers, providerList.toArray());
149+
assertArrayEquals(List.of("elastic", "openai", "streaming_completion_test_service").toArray(), providers);
174150
}
175151

176152
@SuppressWarnings("unchecked")
177153
public void testGetServicesWithSparseEmbeddingTaskType() throws IOException {
178154
List<Object> services = getServices(TaskType.SPARSE_EMBEDDING);
179-
180-
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
181-
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
182-
assertThat(services.size(), equalTo(5));
183-
} else {
184-
assertThat(services.size(), equalTo(4));
185-
}
155+
assertThat(services.size(), equalTo(5));
186156

187157
String[] providers = new String[services.size()];
188158
for (int i = 0; i < services.size(); i++) {
189159
Map<String, Object> serviceConfig = (Map<String, Object>) services.get(i);
190160
providers[i] = (String) serviceConfig.get("service");
191161
}
192162

193-
var providerList = new ArrayList<>(Arrays.asList("alibabacloud-ai-search", "elasticsearch", "hugging_face", "test_service"));
194-
if ((ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()
195-
|| ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled())) {
196-
providerList.add(1, "elastic");
197-
}
198-
assertArrayEquals(providers, providerList.toArray());
163+
assertArrayEquals(
164+
List.of("alibabacloud-ai-search", "elastic", "elasticsearch", "hugging_face", "test_service").toArray(),
165+
providers
166+
);
199167
}
200168

201169
private List<Object> getAllServices() throws IOException {

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java

Lines changed: 38 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,6 @@
133133
import java.util.function.Supplier;
134134

135135
import static java.util.Collections.singletonList;
136-
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceService.ELASTIC_INFERENCE_SERVICE_IDENTIFIER;
137-
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG;
138-
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG;
139136

140137
public class InferencePlugin extends Plugin
141138
implements
@@ -252,46 +249,44 @@ public Collection<?> createComponents(PluginServices services) {
252249
var inferenceServices = new ArrayList<>(inferenceServiceExtensions);
253250
inferenceServices.add(this::getInferenceServiceFactories);
254251

255-
if (isElasticInferenceServiceEnabled()) {
256-
// Create a separate instance of HTTPClientManager with its own SSL configuration (`xpack.inference.elastic.http.ssl.*`).
257-
var elasticInferenceServiceHttpClientManager = HttpClientManager.create(
258-
settings,
259-
services.threadPool(),
260-
services.clusterService(),
261-
throttlerManager,
262-
getSslService()
263-
);
264-
265-
var elasticInferenceServiceRequestSenderFactory = new HttpRequestSender.Factory(
266-
serviceComponents.get(),
267-
elasticInferenceServiceHttpClientManager,
268-
services.clusterService()
269-
);
270-
elasicInferenceServiceFactory.set(elasticInferenceServiceRequestSenderFactory);
271-
272-
ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings(settings);
273-
String elasticInferenceUrl = this.getElasticInferenceServiceUrl(inferenceServiceSettings);
274-
275-
var elasticInferenceServiceComponentsInstance = new ElasticInferenceServiceComponents(elasticInferenceUrl);
276-
elasticInferenceServiceComponents.set(elasticInferenceServiceComponentsInstance);
277-
278-
var authorizationHandler = new ElasticInferenceServiceAuthorizationHandler(
279-
elasticInferenceServiceComponentsInstance.elasticInferenceServiceUrl(),
280-
services.threadPool()
281-
);
282-
283-
inferenceServices.add(
284-
() -> List.of(
285-
context -> new ElasticInferenceService(
286-
elasicInferenceServiceFactory.get(),
287-
serviceComponents.get(),
288-
elasticInferenceServiceComponentsInstance,
289-
modelRegistry,
290-
authorizationHandler
291-
)
252+
// Create a separate instance of HTTPClientManager with its own SSL configuration (`xpack.inference.elastic.http.ssl.*`).
253+
var elasticInferenceServiceHttpClientManager = HttpClientManager.create(
254+
settings,
255+
services.threadPool(),
256+
services.clusterService(),
257+
throttlerManager,
258+
getSslService()
259+
);
260+
261+
var elasticInferenceServiceRequestSenderFactory = new HttpRequestSender.Factory(
262+
serviceComponents.get(),
263+
elasticInferenceServiceHttpClientManager,
264+
services.clusterService()
265+
);
266+
elasicInferenceServiceFactory.set(elasticInferenceServiceRequestSenderFactory);
267+
268+
ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings(settings);
269+
String elasticInferenceUrl = inferenceServiceSettings.getElasticInferenceServiceUrl();
270+
271+
var elasticInferenceServiceComponentsInstance = new ElasticInferenceServiceComponents(elasticInferenceUrl);
272+
elasticInferenceServiceComponents.set(elasticInferenceServiceComponentsInstance);
273+
274+
var authorizationHandler = new ElasticInferenceServiceAuthorizationHandler(
275+
elasticInferenceServiceComponentsInstance.elasticInferenceServiceUrl(),
276+
services.threadPool()
277+
);
278+
279+
inferenceServices.add(
280+
() -> List.of(
281+
context -> new ElasticInferenceService(
282+
elasicInferenceServiceFactory.get(),
283+
serviceComponents.get(),
284+
elasticInferenceServiceComponentsInstance,
285+
modelRegistry,
286+
authorizationHandler
292287
)
293-
);
294-
}
288+
)
289+
);
295290

296291
var factoryContext = new InferenceServiceExtension.InferenceServiceFactoryContext(
297292
services.client(),
@@ -417,11 +412,7 @@ public List<Setting<?>> getSettings() {
417412
settings.addAll(Truncator.getSettingsDefinitions());
418413
settings.addAll(RequestExecutorServiceSettings.getSettingsDefinitions());
419414
settings.add(SKIP_VALIDATE_AND_START);
420-
421-
// Register Elastic Inference Service settings definitions if the corresponding feature flag is enabled.
422-
if (isElasticInferenceServiceEnabled()) {
423-
settings.addAll(ElasticInferenceServiceSettings.getSettingsDefinitions());
424-
}
415+
settings.addAll(ElasticInferenceServiceSettings.getSettingsDefinitions());
425416

426417
return settings;
427418
}
@@ -493,30 +484,6 @@ public Map<String, Highlighter> getHighlighters() {
493484
return Map.of(SemanticTextHighlighter.NAME, new SemanticTextHighlighter());
494485
}
495486

496-
// Get Elastic Inference service URL based on feature flags to support transitioning
497-
// to the new Elastic Inference Service URL.
498-
private String getElasticInferenceServiceUrl(ElasticInferenceServiceSettings settings) {
499-
String elasticInferenceUrl = null;
500-
501-
if (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()) {
502-
elasticInferenceUrl = settings.getElasticInferenceServiceUrl();
503-
} else if (DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()) {
504-
log.warn(
505-
"Deprecated flag {} detected for enabling {}. Please use {}.",
506-
ELASTIC_INFERENCE_SERVICE_IDENTIFIER,
507-
DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG,
508-
ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG
509-
);
510-
elasticInferenceUrl = settings.getEisGatewayUrl();
511-
}
512-
513-
return elasticInferenceUrl;
514-
}
515-
516-
protected Boolean isElasticInferenceServiceEnabled() {
517-
return (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled() || DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled());
518-
}
519-
520487
protected SSLService getSslService() {
521488
return XPackPlugin.getSharedSslService();
522489
}

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/ElasticInferenceServiceFeature.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@
1010
import org.elasticsearch.common.util.FeatureFlag;
1111

1212
/**
13-
* Elastic Inference Service (EIS) feature flag. When the feature is complete, this flag will be removed.
14-
* Enable feature via JVM option: `-Des.elastic_inference_service_feature_flag_enabled=true`.
13+
* Elastic Inference Service feature flag. Not being used anymore, but we'll keep it until the controller is no longer
14+
* passing -Des.elastic_inference_service_feature_flag_enabled=true at startup.
1515
*/
1616
public class ElasticInferenceServiceFeature {
1717

18-
// TODO when we remove this also look in InferenceGetServicesIT and remove references to the deprecated URL setting
1918
@Deprecated
20-
public static final FeatureFlag DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG = new FeatureFlag("eis");
21-
2219
public static final FeatureFlag ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG = new FeatureFlag("elastic_inference_service");
20+
2321
}

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/ElasticInferenceServiceSettings.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,16 @@
2020
*/
2121
public class ElasticInferenceServiceSettings {
2222

23-
// TODO when we remove this look at InferenceGetServicesIT and remove the setting there as well
24-
@Deprecated
25-
static final Setting<String> EIS_GATEWAY_URL = Setting.simpleString("xpack.inference.eis.gateway.url", Setting.Property.NodeScope);
26-
2723
public static final String ELASTIC_INFERENCE_SERVICE_SSL_CONFIGURATION_PREFIX = "xpack.inference.elastic.http.ssl.";
2824

2925
static final Setting<String> ELASTIC_INFERENCE_SERVICE_URL = Setting.simpleString(
3026
"xpack.inference.elastic.url",
3127
Setting.Property.NodeScope
3228
);
3329

34-
// Adjust this variable to be volatile, if the setting can be updated at some point in time
35-
@Deprecated
36-
private final String eisGatewayUrl;
37-
3830
private final String elasticInferenceServiceUrl;
3931

4032
public ElasticInferenceServiceSettings(Settings settings) {
41-
eisGatewayUrl = EIS_GATEWAY_URL.get(settings);
4233
elasticInferenceServiceUrl = ELASTIC_INFERENCE_SERVICE_URL.get(settings);
4334
}
4435

@@ -55,19 +46,13 @@ public ElasticInferenceServiceSettings(Settings settings) {
5546

5647
public static List<Setting<?>> getSettingsDefinitions() {
5748
ArrayList<Setting<?>> settings = new ArrayList<>();
58-
settings.add(EIS_GATEWAY_URL);
5949
settings.add(ELASTIC_INFERENCE_SERVICE_URL);
6050
settings.add(ELASTIC_INFERENCE_SERVICE_SSL_ENABLED);
6151
settings.addAll(ELASTIC_INFERENCE_SERVICE_SSL_CONFIGURATION_SETTINGS.getEnabledSettings());
6252

6353
return settings;
6454
}
6555

66-
@Deprecated
67-
public String getEisGatewayUrl() {
68-
return eisGatewayUrl;
69-
}
70-
7156
public String getElasticInferenceServiceUrl() {
7257
return elasticInferenceServiceUrl;
7358
}

0 commit comments

Comments
 (0)