Skip to content

Commit 9e0209b

Browse files
committed
Merge remote-tracking branch 'upstream/main' into entitlements/missing-url-connection
2 parents 7376a85 + 731a412 commit 9e0209b

File tree

9 files changed

+61
-48
lines changed

9 files changed

+61
-48
lines changed

.github/workflows/comment-on-asciidoc-changes.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.

.github/workflows/docs-build.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: docs-build
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request_target: ~
8+
merge_group: ~
9+
10+
jobs:
11+
docs-preview:
12+
uses: elastic/docs-builder/.github/workflows/preview-build.yml@main
13+
with:
14+
path-pattern: docs/**
15+
permissions:
16+
deployments: write
17+
id-token: write
18+
contents: read
19+
pull-requests: read

.github/workflows/docs-cleanup.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: docs-cleanup
2+
3+
on:
4+
pull_request_target:
5+
types:
6+
- closed
7+
8+
jobs:
9+
docs-preview:
10+
uses: elastic/docs-builder/.github/workflows/preview-cleanup.yml@main
11+
permissions:
12+
contents: none
13+
id-token: write
14+
deployments: write

docs/changelog/123492.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 123492
2+
summary: Fix function registry concurrency issues on constructor
3+
area: ES|QL
4+
type: bug
5+
issues:
6+
- 123430

libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.elasticsearch.entitlement.runtime.policy.entitlements.ManageThreadsEntitlement;
3434
import org.elasticsearch.entitlement.runtime.policy.entitlements.OutboundNetworkEntitlement;
3535
import org.elasticsearch.entitlement.runtime.policy.entitlements.ReadStoreAttributesEntitlement;
36+
import org.elasticsearch.entitlement.runtime.policy.entitlements.SetHttpsConnectionPropertiesEntitlement;
3637

3738
import java.lang.instrument.Instrumentation;
3839
import java.lang.reflect.Constructor;
@@ -265,6 +266,8 @@ private static PolicyManager createPolicyManager() {
265266
List<Entitlement> agentEntitlements = List.of(
266267
new CreateClassLoaderEntitlement(),
267268
new ManageThreadsEntitlement(),
269+
new SetHttpsConnectionPropertiesEntitlement(),
270+
new OutboundNetworkEntitlement(),
268271
new FilesEntitlement(
269272
List.of(
270273
FileData.ofPath(Path.of("/co/elastic/apm/agent/"), READ),

server/src/main/java/org/elasticsearch/TransportVersions.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
package org.elasticsearch;
1111

1212
import org.elasticsearch.core.Assertions;
13-
import org.elasticsearch.core.FixForMultiProject;
1413
import org.elasticsearch.core.UpdateForV9;
1514

1615
import java.lang.reflect.Field;
@@ -206,16 +205,7 @@ static TransportVersion def(int id) {
206205
public static final TransportVersion BYTE_SIZE_VALUE_ALWAYS_USES_BYTES = def(9_015_0_00);
207206
public static final TransportVersion ESQL_SERIALIZE_SOURCE_FUNCTIONS_WARNINGS = def(9_016_0_00);
208207
public static final TransportVersion ESQL_DRIVER_NODE_DESCRIPTION = def(9_017_0_00);
209-
210-
/*
211-
* WARNING: DO NOT MERGE INTO MAIN!
212-
* This is the transport version used for all multi-project changes.
213-
* This is above any possible transport version that could exist on main during multi-project branch development.
214-
* We don't care about BwC during initial development. Before this code is merged into main,
215-
* this variable needs to be changed to a regular transport version following the same rules as above.
216-
*/
217-
@FixForMultiProject
218-
public static final TransportVersion MULTI_PROJECT = def(9_999_990);
208+
public static final TransportVersion MULTI_PROJECT = def(9_018_0_00);
219209

220210
/*
221211
* STOP! READ THIS FIRST! No, really,

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/analysis/Analyzer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1187,7 +1187,7 @@ private static class ImplicitCasting extends ParameterizedRule<LogicalPlan, Logi
11871187
public LogicalPlan apply(LogicalPlan plan, AnalyzerContext context) {
11881188
return plan.transformExpressionsUp(
11891189
org.elasticsearch.xpack.esql.core.expression.function.Function.class,
1190-
e -> ImplicitCasting.cast(e, context.functionRegistry())
1190+
e -> ImplicitCasting.cast(e, context.functionRegistry().snapshotRegistry())
11911191
);
11921192
}
11931193

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/EsqlFunctionRegistry.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,6 @@
188188

189189
public class EsqlFunctionRegistry {
190190

191-
private static final Map<Class<? extends Function>, List<DataType>> DATA_TYPES_FOR_STRING_LITERAL_CONVERSIONS = new LinkedHashMap<>();
192-
193191
private static final Map<DataType, Integer> DATA_TYPE_CASTING_PRIORITY;
194192

195193
static {
@@ -225,6 +223,7 @@ public class EsqlFunctionRegistry {
225223
private final Map<String, FunctionDefinition> defs = new LinkedHashMap<>();
226224
private final Map<String, String> aliases = new HashMap<>();
227225
private final Map<Class<? extends Function>, String> names = new HashMap<>();
226+
private final Map<Class<? extends Function>, List<DataType>> dataTypesForStringLiteralConversions = new LinkedHashMap<>();
228227

229228
private SnapshotFunctionRegistry snapshotRegistry = null;
230229

@@ -711,20 +710,8 @@ private static Constructor<?> constructorFor(Class<? extends Function> clazz) {
711710
return constructors[0];
712711
}
713712

714-
private void buildDataTypesForStringLiteralConversion(FunctionDefinition[]... groupFunctions) {
715-
for (FunctionDefinition[] group : groupFunctions) {
716-
for (FunctionDefinition def : group) {
717-
FunctionDescription signature = description(def);
718-
DATA_TYPES_FOR_STRING_LITERAL_CONVERSIONS.put(
719-
def.clazz(),
720-
signature.args().stream().map(EsqlFunctionRegistry.ArgSignature::targetDataType).collect(Collectors.toList())
721-
);
722-
}
723-
}
724-
}
725-
726713
public List<DataType> getDataTypeForStringLiteralConversion(Class<? extends Function> clazz) {
727-
return DATA_TYPES_FOR_STRING_LITERAL_CONVERSIONS.get(clazz);
714+
return dataTypesForStringLiteralConversions.get(clazz);
728715
}
729716

730717
private static class SnapshotFunctionRegistry extends EsqlFunctionRegistry {
@@ -733,6 +720,7 @@ private static class SnapshotFunctionRegistry extends EsqlFunctionRegistry {
733720
throw new IllegalStateException("build snapshot function registry for non-snapshot build");
734721
}
735722
register(snapshotFunctions());
723+
buildDataTypesForStringLiteralConversion(snapshotFunctions());
736724
}
737725

738726
}
@@ -793,6 +781,18 @@ void register(FunctionDefinition... functions) {
793781
);
794782
}
795783

784+
protected void buildDataTypesForStringLiteralConversion(FunctionDefinition[]... groupFunctions) {
785+
for (FunctionDefinition[] group : groupFunctions) {
786+
for (FunctionDefinition def : group) {
787+
FunctionDescription signature = description(def);
788+
dataTypesForStringLiteralConversions.put(
789+
def.clazz(),
790+
signature.args().stream().map(EsqlFunctionRegistry.ArgSignature::targetDataType).collect(Collectors.toList())
791+
);
792+
}
793+
}
794+
}
795+
796796
protected FunctionDefinition cloneDefinition(String name, FunctionDefinition definition) {
797797
return new FunctionDefinition(name, emptyList(), definition.clazz(), definition.builder());
798798
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/util/Delay.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.elasticsearch.xpack.esql.core.tree.Source;
2222
import org.elasticsearch.xpack.esql.core.type.DataType;
2323
import org.elasticsearch.xpack.esql.evaluator.mapper.EvaluatorMapper;
24+
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
2425
import org.elasticsearch.xpack.esql.expression.function.Param;
2526
import org.elasticsearch.xpack.esql.expression.function.scalar.UnaryScalarFunction;
2627

@@ -38,6 +39,7 @@
3839
public class Delay extends UnaryScalarFunction {
3940
public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(Expression.class, "Delay", Delay::new);
4041

42+
@FunctionInfo(returnType = { "boolean" }, description = "Sleeps for a duration for every row. For debug purposes only.")
4143
public Delay(Source source, @Param(name = "ms", type = { "time_duration" }, description = "For how long") Expression ms) {
4244
super(source, ms);
4345
}

0 commit comments

Comments
 (0)