Skip to content

Commit 924253a

Browse files
authored
Merge branch 'main' into inference/openai-error-2
2 parents 564fd3c + 3444f91 commit 924253a

File tree

20 files changed

+391
-192
lines changed

20 files changed

+391
-192
lines changed

libs/entitlement/src/main/java/org/elasticsearch/entitlement/bootstrap/EntitlementBootstrap.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,22 @@
3131

3232
public class EntitlementBootstrap {
3333

34-
public record BootstrapArgs(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver) {
34+
public record BootstrapArgs(
35+
Map<String, Policy> pluginPolicies,
36+
Function<Class<?>, String> pluginResolver,
37+
Path[] dataDirs,
38+
Path configDir,
39+
Path tempDir
40+
) {
3541
public BootstrapArgs {
3642
requireNonNull(pluginPolicies);
3743
requireNonNull(pluginResolver);
44+
requireNonNull(dataDirs);
45+
if (dataDirs.length == 0) {
46+
throw new IllegalArgumentException("must provide at least one data directory");
47+
}
48+
requireNonNull(configDir);
49+
requireNonNull(tempDir);
3850
}
3951
}
4052

@@ -50,13 +62,22 @@ public static BootstrapArgs bootstrapArgs() {
5062
*
5163
* @param pluginPolicies a map holding policies for plugins (and modules), by plugin (or module) name.
5264
* @param pluginResolver a functor to map a Java Class to the plugin it belongs to (the plugin name).
65+
* @param dataDirs data directories for Elasticsearch
66+
* @param configDir the config directory for Elasticsearch
67+
* @param tempDir the temp directory for Elasticsearch
5368
*/
54-
public static void bootstrap(Map<String, Policy> pluginPolicies, Function<Class<?>, String> pluginResolver) {
69+
public static void bootstrap(
70+
Map<String, Policy> pluginPolicies,
71+
Function<Class<?>, String> pluginResolver,
72+
Path[] dataDirs,
73+
Path configDir,
74+
Path tempDir
75+
) {
5576
logger.debug("Loading entitlement agent");
5677
if (EntitlementBootstrap.bootstrapArgs != null) {
5778
throw new IllegalStateException("plugin data is already set");
5879
}
59-
EntitlementBootstrap.bootstrapArgs = new BootstrapArgs(pluginPolicies, pluginResolver);
80+
EntitlementBootstrap.bootstrapArgs = new BootstrapArgs(pluginPolicies, pluginResolver, dataDirs, configDir, tempDir);
6081
exportInitializationToAgent();
6182
loadAgent(findAgentJar());
6283
selfTest();

muted-tests.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,8 +360,6 @@ tests:
360360
- class: org.elasticsearch.xpack.security.CoreWithSecurityClientYamlTestSuiteIT
361361
method: test {yaml=indices.get_alias/10_basic/Get aliases via /*/_alias/}
362362
issue: https://github.com/elastic/elasticsearch/issues/121290
363-
- class: org.elasticsearch.xpack.inference.common.InferenceServiceNodeLocalRateLimitCalculatorTests
364-
issue: https://github.com/elastic/elasticsearch/issues/121294
365363
- class: org.elasticsearch.env.NodeEnvironmentTests
366364
method: testGetBestDowngradeVersion
367365
issue: https://github.com/elastic/elasticsearch/issues/121316
@@ -386,6 +384,14 @@ tests:
386384
- class: org.elasticsearch.smoketest.SmokeTestMultiNodeClientYamlTestSuiteIT
387385
method: test {yaml=search.vectors/42_knn_search_int4_flat/Vector similarity with filter only}
388386
issue: https://github.com/elastic/elasticsearch/issues/121350
387+
- class: org.elasticsearch.test.rest.yaml.RcsCcsCommonYamlTestSuiteIT
388+
method: test {p0=search.vectors/42_knn_search_int4_flat/KNN Vector similarity search only}
389+
issue: https://github.com/elastic/elasticsearch/issues/121395
390+
- class: org.elasticsearch.test.rest.yaml.CcsCommonYamlTestSuiteIT
391+
issue: https://github.com/elastic/elasticsearch/issues/121407
392+
- class: org.elasticsearch.xpack.ml.integration.ClassificationIT
393+
method: testDependentVariableIsAliasToNested
394+
issue: https://github.com/elastic/elasticsearch/issues/121415
389395

390396
# Examples:
391397
#

server/src/main/java/org/elasticsearch/bootstrap/Elasticsearch.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,13 @@ private static void initPhase2(Bootstrap bootstrap) throws IOException {
242242
pluginsLoader = PluginsLoader.createPluginsLoader(modulesBundles, pluginsBundles, findPluginsWithNativeAccess(pluginPolicies));
243243

244244
var pluginsResolver = PluginsResolver.create(pluginsLoader);
245-
EntitlementBootstrap.bootstrap(pluginPolicies, pluginsResolver::resolveClassToPluginName);
245+
EntitlementBootstrap.bootstrap(
246+
pluginPolicies,
247+
pluginsResolver::resolveClassToPluginName,
248+
nodeEnv.dataFiles(),
249+
nodeEnv.configFile(),
250+
nodeEnv.tmpFile()
251+
);
246252
} else if (RuntimeVersionFeature.isSecurityManagerAvailable()) {
247253
// no need to explicitly enable native access for legacy code
248254
pluginsLoader = PluginsLoader.createPluginsLoader(modulesBundles, pluginsBundles, Map.of());

server/src/main/java/org/elasticsearch/common/logging/internal/LoggerFactoryImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ public Logger getLogger(String name) {
2222

2323
@Override
2424
public Logger getLogger(Class<?> clazz) {
25-
return new LoggerImpl(LogManager.getLogger(clazz));
25+
// Elasticsearch configures logging at the root level, it does not support
26+
// programmatic configuration at the logger level. Log4j's method for
27+
// getting a logger by Class doesn't just use the class name, but also
28+
// scans the classloader hierarchy for programmatic configuration. Here we
29+
// just delegate to use the String class name so that regardless of which
30+
// classloader a class comes from, we will use the root logging config.
31+
return getLogger(clazz.getName());
2632
}
2733
}

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/alibabacloudsearch/AlibabaCloudSearchService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ public static InferenceServiceConfiguration get() {
409409
HTTP_SCHEMA_NAME,
410410
new SettingsConfiguration.Builder(supportedTaskTypes).setDescription("")
411411
.setLabel("HTTP Schema")
412-
.setRequired(true)
412+
.setRequired(false)
413413
.setSensitive(false)
414414
.setUpdatable(false)
415415
.setType(SettingsConfigurationFieldType.STRING)

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import java.util.Map;
5555
import java.util.Set;
5656

57+
import static org.elasticsearch.xpack.inference.services.ServiceFields.DIMENSIONS;
5758
import static org.elasticsearch.xpack.inference.services.ServiceUtils.createInvalidModelException;
5859
import static org.elasticsearch.xpack.inference.services.ServiceUtils.parsePersistedConfigErrorMsg;
5960
import static org.elasticsearch.xpack.inference.services.ServiceUtils.removeFromMap;
@@ -413,6 +414,20 @@ public static InferenceServiceConfiguration get() {
413414
.build()
414415
);
415416

417+
configurationMap.put(
418+
DIMENSIONS,
419+
new SettingsConfiguration.Builder(EnumSet.of(TaskType.TEXT_EMBEDDING)).setDescription(
420+
"The number of dimensions the resulting embeddings should have. For more information refer to "
421+
+ "https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-titan-embed-text.html."
422+
)
423+
.setLabel("Dimensions")
424+
.setRequired(false)
425+
.setSensitive(false)
426+
.setUpdatable(false)
427+
.setType(SettingsConfigurationFieldType.INTEGER)
428+
.build()
429+
);
430+
416431
configurationMap.putAll(AmazonBedrockSecretSettings.Configuration.get());
417432
configurationMap.putAll(
418433
RateLimitSettings.toSettingsConfigurationWithDescription(

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureaistudio/AzureAiStudioService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import java.util.Map;
5454
import java.util.Set;
5555

56+
import static org.elasticsearch.xpack.inference.services.ServiceFields.DIMENSIONS;
5657
import static org.elasticsearch.xpack.inference.services.ServiceUtils.createInvalidModelException;
5758
import static org.elasticsearch.xpack.inference.services.ServiceUtils.parsePersistedConfigErrorMsg;
5859
import static org.elasticsearch.xpack.inference.services.ServiceUtils.removeFromMap;
@@ -441,6 +442,20 @@ public static InferenceServiceConfiguration get() {
441442
.build()
442443
);
443444

445+
configurationMap.put(
446+
DIMENSIONS,
447+
new SettingsConfiguration.Builder(EnumSet.of(TaskType.TEXT_EMBEDDING)).setDescription(
448+
"The number of dimensions the resulting embeddings should have. For more information refer to "
449+
+ "https://learn.microsoft.com/en-us/azure/ai-studio/reference/reference-model-inference-embeddings."
450+
)
451+
.setLabel("Dimensions")
452+
.setRequired(false)
453+
.setSensitive(false)
454+
.setUpdatable(false)
455+
.setType(SettingsConfigurationFieldType.INTEGER)
456+
.build()
457+
);
458+
444459
configurationMap.putAll(DefaultSecretSettings.toSettingsConfiguration(supportedTaskTypes));
445460
configurationMap.putAll(RateLimitSettings.toSettingsConfiguration(supportedTaskTypes));
446461

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/azureopenai/AzureOpenAiService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import java.util.Map;
5151
import java.util.Set;
5252

53+
import static org.elasticsearch.xpack.inference.services.ServiceFields.DIMENSIONS;
5354
import static org.elasticsearch.xpack.inference.services.ServiceUtils.createInvalidModelException;
5455
import static org.elasticsearch.xpack.inference.services.ServiceUtils.parsePersistedConfigErrorMsg;
5556
import static org.elasticsearch.xpack.inference.services.ServiceUtils.removeFromMap;
@@ -382,6 +383,20 @@ public static InferenceServiceConfiguration get() {
382383
.build()
383384
);
384385

386+
configurationMap.put(
387+
DIMENSIONS,
388+
new SettingsConfiguration.Builder(EnumSet.of(TaskType.TEXT_EMBEDDING)).setDescription(
389+
"The number of dimensions the resulting embeddings should have. For more information refer to "
390+
+ "https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#request-body-1."
391+
)
392+
.setLabel("Dimensions")
393+
.setRequired(false)
394+
.setSensitive(false)
395+
.setUpdatable(false)
396+
.setType(SettingsConfigurationFieldType.INTEGER)
397+
.build()
398+
);
399+
385400
configurationMap.putAll(AzureOpenAiSecretSettings.Configuration.get());
386401
configurationMap.putAll(
387402
RateLimitSettings.toSettingsConfigurationWithDescription(

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/cohere/CohereService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.elasticsearch.inference.SettingsConfiguration;
2626
import org.elasticsearch.inference.SimilarityMeasure;
2727
import org.elasticsearch.inference.TaskType;
28+
import org.elasticsearch.inference.configuration.SettingsConfigurationFieldType;
2829
import org.elasticsearch.rest.RestStatus;
2930
import org.elasticsearch.xpack.inference.chunking.ChunkingSettingsBuilder;
3031
import org.elasticsearch.xpack.inference.chunking.EmbeddingRequestChunker;
@@ -51,6 +52,7 @@
5152
import java.util.Map;
5253
import java.util.Set;
5354

55+
import static org.elasticsearch.xpack.inference.services.ServiceFields.MODEL_ID;
5456
import static org.elasticsearch.xpack.inference.services.ServiceUtils.createInvalidModelException;
5557
import static org.elasticsearch.xpack.inference.services.ServiceUtils.parsePersistedConfigErrorMsg;
5658
import static org.elasticsearch.xpack.inference.services.ServiceUtils.removeFromMap;
@@ -363,6 +365,19 @@ public static InferenceServiceConfiguration get() {
363365
() -> {
364366
var configurationMap = new HashMap<String, SettingsConfiguration>();
365367

368+
configurationMap.put(
369+
MODEL_ID,
370+
new SettingsConfiguration.Builder(supportedTaskTypes).setDescription(
371+
"The name of the model to use for the inference task."
372+
)
373+
.setLabel("Model ID")
374+
.setRequired(false)
375+
.setSensitive(false)
376+
.setUpdatable(false)
377+
.setType(SettingsConfigurationFieldType.STRING)
378+
.build()
379+
);
380+
366381
configurationMap.putAll(DefaultSecretSettings.toSettingsConfiguration(supportedTaskTypes));
367382
configurationMap.putAll(RateLimitSettings.toSettingsConfiguration(supportedTaskTypes));
368383

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/googlevertexai/GoogleVertexAiService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,8 @@ public static InferenceServiceConfiguration get() {
327327
() -> {
328328
var configurationMap = new HashMap<String, SettingsConfiguration>();
329329

330+
// TODO whether the model ID is required or not depends on the task type
331+
// For rerank it is optional, for text_embedding it is required
330332
configurationMap.put(
331333
MODEL_ID,
332334
new SettingsConfiguration.Builder(supportedTaskTypes).setDescription("ID of the LLM you're using.")

0 commit comments

Comments
 (0)