Skip to content

Commit 6e90fd4

Browse files
[8.x] Remove all mentions of eis and gateway and deprecate flags that do (#116692) (#119943)
* Remove all mentions of eis and gateway and deprecate flags that do (#116692) (cherry picked from commit 0410229) # Conflicts: # x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceCrudIT.java # x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferencePlugin.java # x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/elastic/ElasticInferenceServiceSparseEmbeddingsModel.java * Fixing tests * Removing service api in 8.18 --------- Co-authored-by: Jason Botzas-Coluni <[email protected]>
1 parent 68c9309 commit 6e90fd4

File tree

10 files changed

+84
-16
lines changed

10 files changed

+84
-16
lines changed

docs/changelog/116692.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 116692
2+
summary: Remove all mentions of eis and gateway and deprecate flags that do
3+
area: Machine Learning
4+
type: enhancement
5+
issues: []

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

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
package org.elasticsearch.xpack.inference;
99

10+
import org.apache.logging.log4j.LogManager;
11+
import org.apache.logging.log4j.Logger;
1012
import org.apache.lucene.util.SetOnce;
1113
import org.elasticsearch.action.ActionRequest;
1214
import org.elasticsearch.action.ActionResponse;
@@ -103,7 +105,6 @@
103105
import org.elasticsearch.xpack.inference.services.cohere.CohereService;
104106
import org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceService;
105107
import org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceComponents;
106-
import org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceFeature;
107108
import org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceSettings;
108109
import org.elasticsearch.xpack.inference.services.elasticsearch.ElasticsearchInternalService;
109110
import org.elasticsearch.xpack.inference.services.googleaistudio.GoogleAiStudioService;
@@ -126,6 +127,9 @@
126127
import java.util.stream.Stream;
127128

128129
import static java.util.Collections.singletonList;
130+
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceService.ELASTIC_INFERENCE_SERVICE_IDENTIFIER;
131+
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceFeature.DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG;
132+
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG;
129133

130134
public class InferencePlugin extends Plugin implements ActionPlugin, ExtensiblePlugin, SystemIndexPlugin, MapperPlugin, SearchPlugin {
131135

@@ -148,14 +152,16 @@ public class InferencePlugin extends Plugin implements ActionPlugin, ExtensibleP
148152
public static final String NAME = "inference";
149153
public static final String UTILITY_THREAD_POOL_NAME = "inference_utility";
150154

155+
private static final Logger log = LogManager.getLogger(InferencePlugin.class);
156+
151157
private final Settings settings;
152158
private final SetOnce<HttpRequestSender.Factory> httpFactory = new SetOnce<>();
153159
private final SetOnce<AmazonBedrockRequestSender.Factory> amazonBedrockFactory = new SetOnce<>();
154160
private final SetOnce<ServiceComponents> serviceComponents = new SetOnce<>();
155-
private final SetOnce<ElasticInferenceServiceComponents> eisComponents = new SetOnce<>();
156161
// This is mainly so that the rest handlers can access the ThreadPool in a way that avoids potential null pointers from it
157162
// not being initialized yet
158163
private final SetOnce<ThreadPool> threadPoolSetOnce = new SetOnce<>();
164+
private final SetOnce<ElasticInferenceServiceComponents> elasticInferenceServiceComponents = new SetOnce<>();
159165
private final SetOnce<InferenceServiceRegistry> inferenceServiceRegistry = new SetOnce<>();
160166
private final SetOnce<ShardBulkInferenceActionFilter> shardBulkInferenceActionFilter = new SetOnce<>();
161167
private List<InferenceServiceExtension> inferenceServiceExtensions;
@@ -236,12 +242,35 @@ public Collection<?> createComponents(PluginServices services) {
236242
var inferenceServices = new ArrayList<>(inferenceServiceExtensions);
237243
inferenceServices.add(this::getInferenceServiceFactories);
238244

239-
if (ElasticInferenceServiceFeature.ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()) {
240-
ElasticInferenceServiceSettings eisSettings = new ElasticInferenceServiceSettings(settings);
241-
eisComponents.set(new ElasticInferenceServiceComponents(eisSettings.getEisGatewayUrl()));
245+
// Set elasticInferenceUrl based on feature flags to support transitioning to the new Elastic Inference Service URL without exposing
246+
// internal names like "eis" or "gateway".
247+
ElasticInferenceServiceSettings inferenceServiceSettings = new ElasticInferenceServiceSettings(settings);
248+
249+
String elasticInferenceUrl = null;
250+
251+
if (ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()) {
252+
elasticInferenceUrl = inferenceServiceSettings.getElasticInferenceServiceUrl();
253+
} else if (DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG.isEnabled()) {
254+
log.warn(
255+
"Deprecated flag {} detected for enabling {}. Please use {}.",
256+
ELASTIC_INFERENCE_SERVICE_IDENTIFIER,
257+
DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG,
258+
ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG
259+
);
260+
elasticInferenceUrl = inferenceServiceSettings.getEisGatewayUrl();
261+
}
262+
263+
if (elasticInferenceUrl != null) {
264+
elasticInferenceServiceComponents.set(new ElasticInferenceServiceComponents(elasticInferenceUrl));
242265

243266
inferenceServices.add(
244-
() -> List.of(context -> new ElasticInferenceService(httpFactory.get(), serviceComponents.get(), eisComponents.get()))
267+
() -> List.of(
268+
context -> new ElasticInferenceService(
269+
httpFactory.get(),
270+
serviceComponents.get(),
271+
elasticInferenceServiceComponents.get()
272+
)
273+
)
245274
);
246275
}
247276

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/action/elastic/ElasticInferenceServiceActionCreator.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
import org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceServiceSparseEmbeddingsModel;
1616
import org.elasticsearch.xpack.inference.telemetry.TraceContext;
1717

18+
import java.util.Locale;
1819
import java.util.Objects;
1920

2021
import static org.elasticsearch.xpack.inference.external.action.ActionUtils.constructFailedToSendRequestMessage;
22+
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceService.ELASTIC_INFERENCE_SERVICE_IDENTIFIER;
2123

2224
public class ElasticInferenceServiceActionCreator implements ElasticInferenceServiceActionVisitor {
2325

@@ -36,7 +38,10 @@ public ElasticInferenceServiceActionCreator(Sender sender, ServiceComponents ser
3638
@Override
3739
public ExecutableAction create(ElasticInferenceServiceSparseEmbeddingsModel model) {
3840
var requestManager = new ElasticInferenceServiceSparseEmbeddingsRequestManager(model, serviceComponents, traceContext);
39-
var errorMessage = constructFailedToSendRequestMessage(model.uri(), "Elastic Inference Service sparse embeddings");
41+
var errorMessage = constructFailedToSendRequestMessage(
42+
model.uri(),
43+
String.format(Locale.ROOT, "%s sparse embeddings", ELASTIC_INFERENCE_SERVICE_IDENTIFIER)
44+
);
4045
return new SenderExecutableAction(sender, requestManager, errorMessage);
4146
}
4247
}

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/sender/ElasticInferenceServiceSparseEmbeddingsRequestManager.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@
2222
import org.elasticsearch.xpack.inference.telemetry.TraceContext;
2323

2424
import java.util.List;
25+
import java.util.Locale;
2526
import java.util.function.Supplier;
2627

2728
import static org.elasticsearch.xpack.inference.common.Truncator.truncate;
29+
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceService.ELASTIC_INFERENCE_SERVICE_IDENTIFIER;
2830

2931
public class ElasticInferenceServiceSparseEmbeddingsRequestManager extends ElasticInferenceServiceRequestManager {
3032

@@ -40,7 +42,7 @@ public class ElasticInferenceServiceSparseEmbeddingsRequestManager extends Elast
4042

4143
private static ResponseHandler createSparseEmbeddingsHandler() {
4244
return new ElasticInferenceServiceResponseHandler(
43-
"Elastic Inference Service sparse embeddings",
45+
String.format(Locale.ROOT, "%s sparse embeddings", ELASTIC_INFERENCE_SERVICE_IDENTIFIER),
4446
ElasticInferenceServiceSparseEmbeddingsResponseEntity::fromResponse
4547
);
4648
}

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/response/elastic/ElasticInferenceServiceSparseEmbeddingsResponseEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class ElasticInferenceServiceSparseEmbeddingsResponseEntity {
3333
"Failed to find required field [%s] in Elastic Inference Service embeddings response";
3434

3535
/**
36-
* Parses the EIS json response.
36+
* Parses the Elastic Inference Service json response.
3737
*
3838
* For a request like:
3939
*

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
public class ElasticInferenceService extends SenderService {
6464

6565
public static final String NAME = "elastic";
66+
public static final String ELASTIC_INFERENCE_SERVICE_IDENTIFIER = "Elastic Inference Service";
6667

6768
private final ElasticInferenceServiceComponents elasticInferenceServiceComponents;
6869

@@ -71,10 +72,10 @@ public class ElasticInferenceService extends SenderService {
7172
public ElasticInferenceService(
7273
HttpRequestSender.Factory factory,
7374
ServiceComponents serviceComponents,
74-
ElasticInferenceServiceComponents eisComponents
75+
ElasticInferenceServiceComponents elasticInferenceServiceComponents
7576
) {
7677
super(factory, serviceComponents);
77-
this.elasticInferenceServiceComponents = eisComponents;
78+
this.elasticInferenceServiceComponents = elasticInferenceServiceComponents;
7879
}
7980

8081
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77

88
package org.elasticsearch.xpack.inference.services.elastic;
99

10-
public record ElasticInferenceServiceComponents(String eisGatewayUrl) {}
10+
public record ElasticInferenceServiceComponents(String elasticInferenceServiceUrl) {}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
public class ElasticInferenceServiceFeature {
1717

18-
public static final FeatureFlag ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG = new FeatureFlag("eis");
18+
@Deprecated
19+
public static final FeatureFlag DEPRECATED_ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG = new FeatureFlag("eis");
1920

21+
public static final FeatureFlag ELASTIC_INFERENCE_SERVICE_FEATURE_FLAG = new FeatureFlag("elastic_inference_service");
2022
}

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,37 @@
1414

1515
public class ElasticInferenceServiceSettings {
1616

17+
@Deprecated
1718
static final Setting<String> EIS_GATEWAY_URL = Setting.simpleString("xpack.inference.eis.gateway.url", Setting.Property.NodeScope);
1819

20+
static final Setting<String> ELASTIC_INFERENCE_SERVICE_URL = Setting.simpleString(
21+
"xpack.inference.elastic.url",
22+
Setting.Property.NodeScope
23+
);
24+
1925
// Adjust this variable to be volatile, if the setting can be updated at some point in time
26+
@Deprecated
2027
private final String eisGatewayUrl;
2128

29+
private final String elasticInferenceServiceUrl;
30+
2231
public ElasticInferenceServiceSettings(Settings settings) {
2332
eisGatewayUrl = EIS_GATEWAY_URL.get(settings);
33+
elasticInferenceServiceUrl = ELASTIC_INFERENCE_SERVICE_URL.get(settings);
34+
2435
}
2536

2637
public static List<Setting<?>> getSettingsDefinitions() {
27-
return List.of(EIS_GATEWAY_URL);
38+
return List.of(EIS_GATEWAY_URL, ELASTIC_INFERENCE_SERVICE_URL);
2839
}
2940

41+
@Deprecated
3042
public String getEisGatewayUrl() {
3143
return eisGatewayUrl;
3244
}
45+
46+
public String getElasticInferenceServiceUrl() {
47+
return elasticInferenceServiceUrl;
48+
}
49+
3350
}

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222

2323
import java.net.URI;
2424
import java.net.URISyntaxException;
25+
import java.util.Locale;
2526
import java.util.Map;
2627

28+
import static org.elasticsearch.xpack.inference.services.elastic.ElasticInferenceService.ELASTIC_INFERENCE_SERVICE_IDENTIFIER;
29+
2730
public class ElasticInferenceServiceSparseEmbeddingsModel extends ElasticInferenceServiceModel {
2831

2932
private final URI uri;
@@ -105,9 +108,13 @@ private URI createUri() throws URISyntaxException {
105108

106109
switch (modelId) {
107110
case ElserModels.ELSER_V2_MODEL -> modelIdUriPath = "ELSERv2";
108-
default -> throw new IllegalArgumentException("Unsupported model for EIS [" + modelId + "]");
111+
default -> throw new IllegalArgumentException(
112+
String.format(Locale.ROOT, "Unsupported model for %s [%s]", ELASTIC_INFERENCE_SERVICE_IDENTIFIER, modelId)
113+
);
109114
}
110115

111-
return new URI(elasticInferenceServiceComponents().eisGatewayUrl() + "/api/v1/sparse-text-embeddings/" + modelIdUriPath);
116+
return new URI(
117+
elasticInferenceServiceComponents().elasticInferenceServiceUrl() + "/api/v1/sparse-text-embedding/" + modelIdUriPath
118+
);
112119
}
113120
}

0 commit comments

Comments
 (0)