Skip to content

Commit e811735

Browse files
committed
Merge remote-tracking branch 'origin/main' into test-issue/131165-merge-conc-list
2 parents 070ce16 + f1ddd4c commit e811735

File tree

27 files changed

+995
-131
lines changed

27 files changed

+995
-131
lines changed

docs/reference/query-languages/esql/images/functions/v_cosine.svg

Lines changed: 1 addition & 0 deletions
Loading

docs/reference/query-languages/esql/kibana/definition/functions/v_cosine.json

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/query-languages/esql/kibana/docs/functions/v_cosine.md

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PolicyCheckerImpl.java

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ private void neverEntitled(Class<?> callerClass, Supplier<String> operationDescr
137137
requestingClass,
138138
operationDescription.get()
139139
),
140-
callerClass,
140+
requestingClass,
141141
entitlements
142142
);
143143
}
@@ -249,7 +249,7 @@ public void checkFileRead(Class<?> callerClass, Path path, boolean followLinks)
249249
requestingClass,
250250
realPath == null ? path : Strings.format("%s -> %s", path, realPath)
251251
),
252-
callerClass,
252+
requestingClass,
253253
entitlements
254254
);
255255
}
@@ -281,7 +281,7 @@ public void checkFileWrite(Class<?> callerClass, Path path) {
281281
requestingClass,
282282
path
283283
),
284-
callerClass,
284+
requestingClass,
285285
entitlements
286286
);
287287
}
@@ -358,8 +358,8 @@ public void checkAllNetworkAccess(Class<?> callerClass) {
358358
}
359359

360360
var classEntitlements = policyManager.getEntitlements(requestingClass);
361-
checkFlagEntitlement(classEntitlements, InboundNetworkEntitlement.class, requestingClass, callerClass);
362-
checkFlagEntitlement(classEntitlements, OutboundNetworkEntitlement.class, requestingClass, callerClass);
361+
checkFlagEntitlement(classEntitlements, InboundNetworkEntitlement.class, requestingClass);
362+
checkFlagEntitlement(classEntitlements, OutboundNetworkEntitlement.class, requestingClass);
363363
}
364364

365365
@Override
@@ -376,16 +376,15 @@ public void checkWriteProperty(Class<?> callerClass, String property) {
376376

377377
ModuleEntitlements entitlements = policyManager.getEntitlements(requestingClass);
378378
if (entitlements.getEntitlements(WriteSystemPropertiesEntitlement.class).anyMatch(e -> e.properties().contains(property))) {
379-
entitlements.logger()
380-
.debug(
381-
() -> Strings.format(
382-
"Entitled: component [%s], module [%s], class [%s], entitlement [write_system_properties], property [%s]",
383-
entitlements.componentName(),
384-
entitlements.moduleName(),
385-
requestingClass,
386-
property
387-
)
388-
);
379+
PolicyManager.generalLogger.debug(
380+
() -> Strings.format(
381+
"Entitled: component [%s], module [%s], class [%s], entitlement [write_system_properties], property [%s]",
382+
entitlements.componentName(),
383+
entitlements.moduleName(),
384+
requestingClass,
385+
property
386+
)
387+
);
389388
return;
390389
}
391390
notEntitled(
@@ -396,7 +395,7 @@ public void checkWriteProperty(Class<?> callerClass, String property) {
396395
requestingClass,
397396
property
398397
),
399-
callerClass,
398+
requestingClass,
400399
entitlements
401400
);
402401
}
@@ -437,8 +436,7 @@ Optional<StackWalker.StackFrame> findRequestingFrame(Stream<StackWalker.StackFra
437436
private void checkFlagEntitlement(
438437
ModuleEntitlements classEntitlements,
439438
Class<? extends Entitlement> entitlementClass,
440-
Class<?> requestingClass,
441-
Class<?> callerClass
439+
Class<?> requestingClass
442440
) {
443441
if (classEntitlements.hasEntitlement(entitlementClass) == false) {
444442
notEntitled(
@@ -449,27 +447,26 @@ private void checkFlagEntitlement(
449447
requestingClass,
450448
PolicyParser.buildEntitlementNameFromClass(entitlementClass)
451449
),
452-
callerClass,
450+
requestingClass,
453451
classEntitlements
454452
);
455453
}
456-
classEntitlements.logger()
457-
.debug(
458-
() -> Strings.format(
459-
"Entitled: component [%s], module [%s], class [%s], entitlement [%s]",
460-
classEntitlements.componentName(),
461-
classEntitlements.moduleName(),
462-
requestingClass,
463-
PolicyParser.buildEntitlementNameFromClass(entitlementClass)
464-
)
465-
);
454+
PolicyManager.generalLogger.debug(
455+
() -> Strings.format(
456+
"Entitled: component [%s], module [%s], class [%s], entitlement [%s]",
457+
classEntitlements.componentName(),
458+
classEntitlements.moduleName(),
459+
requestingClass,
460+
PolicyParser.buildEntitlementNameFromClass(entitlementClass)
461+
)
462+
);
466463
}
467464

468-
private void notEntitled(String message, Class<?> callerClass, ModuleEntitlements entitlements) {
465+
private void notEntitled(String message, Class<?> requestingClass, ModuleEntitlements entitlements) {
469466
var exception = new NotEntitledException(message);
470467
// Don't emit a log for suppressed packages, e.g. packages containing self tests
471-
if (suppressFailureLogPackages.contains(callerClass.getPackage()) == false) {
472-
entitlements.logger().warn("Not entitled: {}", message, exception);
468+
if (suppressFailureLogPackages.contains(requestingClass.getPackage()) == false) {
469+
entitlements.logger(requestingClass).warn("Not entitled: {}", message, exception);
473470
}
474471
throw exception;
475472
}
@@ -480,7 +477,7 @@ public void checkEntitlementPresent(Class<?> callerClass, Class<? extends Entitl
480477
if (policyManager.isTriviallyAllowed(requestingClass)) {
481478
return;
482479
}
483-
checkFlagEntitlement(policyManager.getEntitlements(requestingClass), entitlementClass, requestingClass, callerClass);
480+
checkFlagEntitlement(policyManager.getEntitlements(requestingClass), entitlementClass, requestingClass);
484481
}
485482

486483
@Override

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/PolicyManager.java

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ protected record ModuleEntitlements(
124124
String componentName,
125125
String moduleName,
126126
Map<Class<? extends Entitlement>, List<Entitlement>> entitlementsByType,
127-
FileAccessTree fileAccess,
128-
Logger logger
127+
FileAccessTree fileAccess
129128
) {
130129

131130
public ModuleEntitlements {
@@ -143,6 +142,12 @@ public <E extends Entitlement> Stream<E> getEntitlements(Class<E> entitlementCla
143142
}
144143
return entitlements.stream().map(entitlementClass::cast);
145144
}
145+
146+
Logger logger(Class<?> requestingClass) {
147+
var packageName = requestingClass.getPackageName();
148+
var loggerSuffix = "." + componentName + "." + ((moduleName == null) ? ALL_UNNAMED : moduleName) + "." + packageName;
149+
return LogManager.getLogger(PolicyManager.class.getName() + loggerSuffix);
150+
}
146151
}
147152

148153
private FileAccessTree getDefaultFileAccess(Collection<Path> componentPaths) {
@@ -151,13 +156,7 @@ private FileAccessTree getDefaultFileAccess(Collection<Path> componentPaths) {
151156

152157
// pkg private for testing
153158
ModuleEntitlements defaultEntitlements(String componentName, Collection<Path> componentPaths, String moduleName) {
154-
return new ModuleEntitlements(
155-
componentName,
156-
moduleName,
157-
Map.of(),
158-
getDefaultFileAccess(componentPaths),
159-
getLogger(componentName, moduleName)
160-
);
159+
return new ModuleEntitlements(componentName, moduleName, Map.of(), getDefaultFileAccess(componentPaths));
161160
}
162161

163162
// pkg private for testing
@@ -177,8 +176,7 @@ ModuleEntitlements policyEntitlements(
177176
componentName,
178177
moduleName,
179178
entitlements.stream().collect(groupingBy(Entitlement::getClass)),
180-
FileAccessTree.of(componentName, moduleName, filesEntitlement, pathLookup, componentPaths, exclusivePaths),
181-
getLogger(componentName, moduleName)
179+
FileAccessTree.of(componentName, moduleName, filesEntitlement, pathLookup, componentPaths, exclusivePaths)
182180
);
183181
}
184182

@@ -288,21 +286,6 @@ private static void validateEntitlementsPerModule(
288286
}
289287
}
290288

291-
private static Logger getLogger(String componentName, String moduleName) {
292-
var loggerSuffix = "." + componentName + "." + ((moduleName == null) ? ALL_UNNAMED : moduleName);
293-
return MODULE_LOGGERS.computeIfAbsent(PolicyManager.class.getName() + loggerSuffix, LogManager::getLogger);
294-
}
295-
296-
/**
297-
* We want to use the same {@link Logger} object for a given name, because we want {@link ModuleEntitlements}
298-
* {@code equals} and {@code hashCode} to work.
299-
* <p>
300-
* This would not be required if LogManager
301-
* <a href="https://github.com/elastic/elasticsearch/issues/87511">memoized the loggers</a>,
302-
* but here we are.
303-
*/
304-
private static final ConcurrentHashMap<String, Logger> MODULE_LOGGERS = new ConcurrentHashMap<>();
305-
306289
protected ModuleEntitlements getEntitlements(Class<?> requestingClass) {
307290
return moduleEntitlementsMap.computeIfAbsent(requestingClass.getModule(), m -> computeEntitlements(requestingClass));
308291
}

muted-tests.yml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -484,9 +484,6 @@ tests:
484484
- class: org.elasticsearch.xpack.esql.action.EsqlActionBreakerIT
485485
method: testTopNPushedToLucene
486486
issue: https://github.com/elastic/elasticsearch/issues/130505
487-
- class: org.elasticsearch.xpack.esql.qa.multi_node.EsqlSpecIT
488-
method: test {match-operator.MatchWithMoreComplexDisjunctionAndConjunction SYNC}
489-
issue: https://github.com/elastic/elasticsearch/issues/130640
490487
- class: org.elasticsearch.gradle.LoggedExecFuncTest
491488
method: failed tasks output logged to console when spooling true
492489
issue: https://github.com/elastic/elasticsearch/issues/119509
@@ -523,9 +520,9 @@ tests:
523520
- class: org.elasticsearch.xpack.esql.qa.multi_node.EsqlSpecIT
524521
method: test {lookup-join.MvJoinKeyOnFromAfterStats ASYNC}
525522
issue: https://github.com/elastic/elasticsearch/issues/131148
526-
- class: org.elasticsearch.xpack.esql.qa.multi_node.GenerativeIT
527-
method: test
528-
issue: https://github.com/elastic/elasticsearch/issues/131154
523+
- class: org.elasticsearch.index.engine.ThreadPoolMergeExecutorServiceDiskSpaceTests
524+
method: testEnqueuedMergeTasksAreUnblockedWhenEstimatedMergeSizeChanges
525+
issue: https://github.com/elastic/elasticsearch/issues/131165
529526
- class: org.elasticsearch.xpack.esql.ccq.MultiClustersIT
530527
method: testLookupJoinAliases
531528
issue: https://github.com/elastic/elasticsearch/issues/131166
@@ -535,9 +532,6 @@ tests:
535532
- class: org.elasticsearch.packaging.test.DockerTests
536533
method: test090SecurityCliPackaging
537534
issue: https://github.com/elastic/elasticsearch/issues/131107
538-
- class: org.elasticsearch.xpack.esql.qa.single_node.GenerativeIT
539-
method: test
540-
issue: https://github.com/elastic/elasticsearch/issues/131154
541535

542536
# Examples:
543537
#

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/security/action/UpdateIndexMigrationVersionAction.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import org.elasticsearch.cluster.block.ClusterBlockException;
2020
import org.elasticsearch.cluster.block.ClusterBlockLevel;
2121
import org.elasticsearch.cluster.metadata.IndexMetadata;
22-
import org.elasticsearch.cluster.metadata.Metadata;
22+
import org.elasticsearch.cluster.metadata.ProjectMetadata;
2323
import org.elasticsearch.cluster.service.ClusterService;
2424
import org.elasticsearch.cluster.service.MasterServiceTaskQueue;
2525
import org.elasticsearch.common.Priority;
@@ -139,22 +139,19 @@ static class UpdateIndexMigrationVersionTask implements ClusterStateTaskListener
139139
}
140140

141141
ClusterState execute(ClusterState currentState) {
142-
IndexMetadata.Builder indexMetadataBuilder = IndexMetadata.builder(
143-
currentState.metadata().getProject().indices().get(indexName)
144-
);
142+
final var project = currentState.metadata().getProject();
143+
IndexMetadata.Builder indexMetadataBuilder = IndexMetadata.builder(project.indices().get(indexName));
145144
indexMetadataBuilder.putCustom(
146145
MIGRATION_VERSION_CUSTOM_KEY,
147146
Map.of(MIGRATION_VERSION_CUSTOM_DATA_KEY, Integer.toString(indexMigrationVersion))
148147
);
149148
indexMetadataBuilder.version(indexMetadataBuilder.version() + 1);
150149

151-
final ImmutableOpenMap.Builder<String, IndexMetadata> builder = ImmutableOpenMap.builder(
152-
currentState.metadata().getProject().indices()
153-
);
150+
final ImmutableOpenMap.Builder<String, IndexMetadata> builder = ImmutableOpenMap.builder(project.indices());
154151
builder.put(indexName, indexMetadataBuilder.build());
155152

156153
return ClusterState.builder(currentState)
157-
.metadata(Metadata.builder(currentState.metadata()).indices(builder.build()).build())
154+
.putProjectMetadata(ProjectMetadata.builder(project).indices(builder.build()).build())
158155
.build();
159156
}
160157

x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/generative/GenerativeRestTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public abstract class GenerativeRestTest extends ESRestTestCase {
4040
"Cannot use field \\[.*\\] due to ambiguities",
4141
"cannot sort on .*",
4242
"argument of \\[count.*\\] must",
43-
"Cannot use field \\[.*\\] with unsupported type \\[.*_range\\]",
43+
"Cannot use field \\[.*\\] with unsupported type \\[.*\\]",
4444
"Unbounded sort not supported yet",
4545
"The field names are too complex to process", // field_caps problem
4646
"must be \\[any type except counter types\\]", // TODO refine the generation of count()

0 commit comments

Comments
 (0)