Skip to content

Commit f58c914

Browse files
committed
Merge branch 'main' into register-agg-metric-literal
2 parents 5558b79 + 42b248e commit f58c914

File tree

891 files changed

+18993
-9226
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

891 files changed

+18993
-9226
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
package org.elasticsearch.benchmark.bytes;
10+
11+
import org.elasticsearch.common.bytes.BytesArray;
12+
import org.elasticsearch.common.logging.LogConfigurator;
13+
import org.openjdk.jmh.annotations.Benchmark;
14+
import org.openjdk.jmh.annotations.BenchmarkMode;
15+
import org.openjdk.jmh.annotations.Fork;
16+
import org.openjdk.jmh.annotations.Measurement;
17+
import org.openjdk.jmh.annotations.Mode;
18+
import org.openjdk.jmh.annotations.OutputTimeUnit;
19+
import org.openjdk.jmh.annotations.Param;
20+
import org.openjdk.jmh.annotations.Scope;
21+
import org.openjdk.jmh.annotations.Setup;
22+
import org.openjdk.jmh.annotations.State;
23+
import org.openjdk.jmh.annotations.Warmup;
24+
25+
import java.util.concurrent.TimeUnit;
26+
27+
@Warmup(iterations = 4, time = 1)
28+
@Measurement(iterations = 5, time = 1)
29+
@BenchmarkMode(Mode.Throughput)
30+
@OutputTimeUnit(TimeUnit.MILLISECONDS)
31+
@State(Scope.Thread)
32+
@Fork(value = 1)
33+
public class BytesArrayIndexOfBenchmark {
34+
35+
static {
36+
LogConfigurator.configureESLogging(); // native access requires logging to be initialized
37+
}
38+
39+
static final byte MARKER = (byte) '\n';
40+
41+
@Param(value = { "64", "127", "128", "4096", "16384", "65536", "1048576" })
42+
public int size;
43+
44+
BytesArray bytesArray;
45+
46+
@Setup
47+
public void setup() {
48+
byte[] bytes = new byte[size];
49+
bytes[bytes.length - 1] = MARKER;
50+
bytesArray = new BytesArray(bytes, 0, bytes.length);
51+
}
52+
53+
@Benchmark
54+
public int indexOf() {
55+
return bytesArray.indexOf(MARKER, 0);
56+
}
57+
58+
@Benchmark
59+
@Fork(jvmArgsPrepend = { "--add-modules=jdk.incubator.vector" })
60+
public int indexOfPanama() {
61+
return bytesArray.indexOf(MARKER, 0);
62+
}
63+
64+
@Benchmark
65+
public int withOffsetIndexOf() {
66+
return bytesArray.indexOf(MARKER, 1);
67+
}
68+
69+
@Benchmark
70+
@Fork(jvmArgsPrepend = { "--add-modules=jdk.incubator.vector" })
71+
public int withOffsetIndexPanama() {
72+
return bytesArray.indexOf(MARKER, 1);
73+
}
74+
}

benchmarks/src/main/java/org/elasticsearch/benchmark/index/codec/tsdb/TSDBDocValuesMergeBenchmark.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.apache.lucene.util.BytesRef;
2727
import org.elasticsearch.cluster.metadata.DataStream;
2828
import org.elasticsearch.common.logging.LogConfigurator;
29-
import org.elasticsearch.index.codec.Elasticsearch900Lucene101Codec;
29+
import org.elasticsearch.index.codec.Elasticsearch92Lucene103Codec;
3030
import org.elasticsearch.index.codec.tsdb.es819.ES819TSDBDocValuesFormat;
3131
import org.openjdk.jmh.annotations.Benchmark;
3232
import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -63,7 +63,6 @@
6363
public class TSDBDocValuesMergeBenchmark {
6464

6565
static {
66-
// For Elasticsearch900Lucene101Codec:
6766
LogConfigurator.loadLog4jPlugins();
6867
LogConfigurator.configureESLogging();
6968
LogConfigurator.setNodeName("test");
@@ -259,8 +258,7 @@ private static IndexWriterConfig createIndexWriterConfig(boolean optimizedMergeE
259258
config.setLeafSorter(DataStream.TIMESERIES_LEAF_READERS_SORTER);
260259
config.setMergePolicy(new LogByteSizeMergePolicy());
261260
var docValuesFormat = new ES819TSDBDocValuesFormat(4096, 512, optimizedMergeEnabled);
262-
config.setCodec(new Elasticsearch900Lucene101Codec() {
263-
261+
config.setCodec(new Elasticsearch92Lucene103Codec() {
264262
@Override
265263
public DocValuesFormat getDocValuesFormatForField(String field) {
266264
return docValuesFormat;
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.benchmark.bytes;
11+
12+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
13+
14+
import org.elasticsearch.test.ESTestCase;
15+
import org.openjdk.jmh.annotations.Param;
16+
17+
import java.util.Arrays;
18+
19+
public class BytesArrayIndexOfBenchmarkTests extends ESTestCase {
20+
21+
final int size;
22+
23+
public BytesArrayIndexOfBenchmarkTests(int size) {
24+
this.size = size;
25+
}
26+
27+
public void testIndexOf() {
28+
var bench = new BytesArrayIndexOfBenchmark();
29+
bench.size = size;
30+
bench.setup();
31+
assertEquals(size - 1, bench.indexOf());
32+
assertEquals(size - 1, bench.indexOfPanama());
33+
assertEquals(size - 1, bench.withOffsetIndexOf());
34+
assertEquals(size - 1, bench.withOffsetIndexPanama());
35+
}
36+
37+
@ParametersFactory
38+
public static Iterable<Object[]> parametersFactory() {
39+
try {
40+
var params = BytesArrayIndexOfBenchmark.class.getField("size").getAnnotationsByType(Param.class)[0].value();
41+
return () -> Arrays.stream(params).map(Integer::parseInt).map(i -> new Object[] { i }).iterator();
42+
} catch (NoSuchFieldException e) {
43+
throw new AssertionError(e);
44+
}
45+
}
46+
}

build-tools-internal/gradle/wrapper/gradle-wrapper.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionSha256Sum=f759b8dd5204e2e3fa4ca3e73f452f087153cf81bac9561eeb854229cc2c5365
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-all.zip
3+
distributionSha256Sum=b84e04fa845fecba48551f425957641074fcc00a88a84d2aae5808743b35fc85
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-all.zip
55
networkTimeout=10000
66
validateDistributionUrl=true
77
zipStoreBase=GRADLE_USER_HOME

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@ class AbstractTransportVersionFuncTest extends AbstractGradleFuncTest {
115115
include ':myserver'
116116
include ':myplugin'
117117
"""
118+
propertiesFile << """
119+
org.elasticsearch.transports.upstreamRef=main
120+
"""
118121
versionPropertiesFile.text = versionPropertiesFile.text.replace("9.1.0", "9.2.0")
119122

120123
file("myserver/build.gradle") << """
@@ -125,6 +128,9 @@ class AbstractTransportVersionFuncTest extends AbstractGradleFuncTest {
125128
tasks.named('generateTransportVersion') {
126129
currentUpperBoundName = '9.2'
127130
}
131+
tasks.named('validateTransportVersionResources') {
132+
currentUpperBoundName = '9.2'
133+
}
128134
"""
129135
referableAndReferencedTransportVersion("existing_91", "8012000")
130136
referableAndReferencedTransportVersion("older_92", "8122000")

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionGenerationFuncTest.groovy

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
9090
assertUpperBound("9.2", "new_tv,8124000")
9191
}
9292

93+
/*
94+
temporarily muted, see https://github.com/elastic/elasticsearch/pull/135226
95+
9396
def "invalid changes to a upper bounds should be reverted"() {
9497
given:
9598
transportVersionUpperBound("9.2", "modification", "9000000")
@@ -144,7 +147,7 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
144147
assertReferableDefinitionDoesNotExist("test_tv")
145148
assertUpperBound("9.2", "existing_92,8123000")
146149
assertUpperBound("9.1", "existing_92,8012001")
147-
}
150+
}*/
148151

149152
def "a reference can be renamed"() {
150153
given:
@@ -242,8 +245,11 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
242245
def "unreferenced definitions are removed"() {
243246
given:
244247
referableTransportVersion("test_tv", "8124000,8012002")
248+
/*
249+
TODO: reset of upper bounds
245250
transportVersionUpperBound("9.2", "test_tv", "8124000")
246251
transportVersionUpperBound("9.1", "test_tv", "8012002")
252+
*/
247253

248254
when:
249255
def result = runGenerateAndValidateTask().build()
@@ -406,6 +412,8 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
406412
assertUpperBound("9.2", "new_tv,8124000")
407413
}
408414

415+
/*
416+
TODO: reset of upper bounds
409417
def "deleted upper bounds files are restored"() {
410418
given:
411419
file("myserver/src/main/resources/transport/upper_bounds/9.2.csv").delete()
@@ -416,7 +424,7 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
416424
then:
417425
assertGenerateAndValidateSuccess(result)
418426
assertUpperBound("9.2", "existing_92,8123000")
419-
}
427+
}*/
420428

421429
def "upper bounds files must exist for backport branches"() {
422430
when:

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,21 @@ class TransportVersionValidationFuncTest extends AbstractTransportVersionFuncTes
277277
"[myserver/src/main/resources/transport/definitions/referable/existing_92.csv]"
278278
)
279279
}
280+
281+
def "primary id checks skipped on release branch"() {
282+
given:
283+
file("myserver/build.gradle") << """
284+
tasks.named('validateTransportVersionResources') {
285+
currentUpperBoundName = '9.1'
286+
}
287+
"""
288+
referableAndReferencedTransportVersion("some_tv", "8125000")
289+
transportVersionUpperBound("9.2", "some_tv", "8125000")
290+
291+
when:
292+
def result = gradleRunner("validateTransportVersionResources").build()
293+
294+
then:
295+
result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS
296+
}
280297
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/release/ExtractCurrentVersionsTask.java

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

3030
import javax.inject.Inject;
3131

32-
public class ExtractCurrentVersionsTask extends AbstractVersionsTask {
32+
public abstract class ExtractCurrentVersionsTask extends AbstractVersionsTask {
3333
private static final Logger LOGGER = Logging.getLogger(ExtractCurrentVersionsTask.class);
3434

3535
private Path outputFile;

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/GenerateTransportVersionDefinitionTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ public void run() throws IOException {
103103

104104
getLogger().lifecycle("Generating transport version name: " + targetDefinitionName);
105105
if (targetDefinitionName.isEmpty()) {
106-
resetAllUpperBounds(resources);
106+
// TODO: resetting upper bounds needs to be done locally, otherwise it pulls in some (incomplete) changes from upstream main
107+
// resetAllUpperBounds(resources);
107108
} else {
108109
List<TransportVersionId> ids = updateUpperBounds(resources, upstreamUpperBounds, targetUpperBoundNames, targetDefinitionName);
109110
// (Re)write the definition file.

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/transport/TransportVersionResourcesPlugin.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@
1414
import org.elasticsearch.gradle.internal.conventions.VersionPropertiesPlugin;
1515
import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin;
1616
import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitTaskPlugin;
17+
import org.gradle.api.Action;
1718
import org.gradle.api.Plugin;
1819
import org.gradle.api.Project;
1920
import org.gradle.api.file.Directory;
2021
import org.gradle.api.plugins.JavaPlugin;
22+
import org.gradle.api.provider.Provider;
2123
import org.gradle.api.tasks.Copy;
2224
import org.gradle.language.base.plugins.LifecycleBasePlugin;
2325

2426
import java.util.Map;
2527
import java.util.Properties;
26-
import java.util.function.Consumer;
2728

2829
public class TransportVersionResourcesPlugin implements Plugin<Project> {
2930

@@ -49,6 +50,10 @@ public void apply(Project project) {
4950
Directory transportResources = project.getLayout().getProjectDirectory().dir("src/main/resources/" + resourceRoot);
5051
spec.getParameters().getTransportResourcesDirectory().set(transportResources);
5152
spec.getParameters().getRootDirectory().set(project.getLayout().getSettingsDirectory().getAsFile());
53+
Provider<String> upstreamRef = project.getProviders().gradleProperty("org.elasticsearch.transport.upstreamRef");
54+
if (upstreamRef.isPresent()) {
55+
spec.getParameters().getUpstreamRefOverride().set(upstreamRef.get());
56+
}
5257
});
5358

5459
var depsHandler = project.getDependencies();
@@ -70,6 +75,7 @@ public void apply(Project project) {
7075
t.getReferencesFiles().setFrom(tvReferencesConfig);
7176
t.getShouldValidateDensity().convention(true);
7277
t.getShouldValidatePrimaryIdNotPatch().convention(true);
78+
t.getCurrentUpperBoundName().convention(currentVersion.getMajor() + "." + currentVersion.getMinor());
7379
});
7480
project.getTasks().named(PrecommitPlugin.PRECOMMIT_TASK_NAME).configure(t -> t.dependsOn(validateTask));
7581

@@ -83,7 +89,7 @@ public void apply(Project project) {
8389
t.into(resourceRoot + "/definitions", c -> c.from(generateManifestTask));
8490
});
8591

86-
Consumer<GenerateTransportVersionDefinitionTask> generationConfiguration = t -> {
92+
Action<GenerateTransportVersionDefinitionTask> generationConfiguration = t -> {
8793
t.setGroup(taskGroup);
8894
t.getReferencesFiles().setFrom(tvReferencesConfig);
8995
t.getIncrement().convention(1000);
@@ -92,17 +98,17 @@ public void apply(Project project) {
9298

9399
var generateDefinitionsTask = project.getTasks()
94100
.register("generateTransportVersion", GenerateTransportVersionDefinitionTask.class, t -> {
95-
generationConfiguration.accept(t);
96101
t.setDescription("(Re)generates a transport version definition file");
97102
});
103+
generateDefinitionsTask.configure(generationConfiguration);
98104
validateTask.configure(t -> t.mustRunAfter(generateDefinitionsTask));
99105

100106
var resolveConflictTask = project.getTasks()
101107
.register("resolveTransportVersionConflict", GenerateTransportVersionDefinitionTask.class, t -> {
102-
generationConfiguration.accept(t);
103108
t.setDescription("Resolve merge conflicts in transport version internal state files");
104109
t.getResolveConflict().set(true);
105110
});
111+
resolveConflictTask.configure(generationConfiguration);
106112
validateTask.configure(t -> t.mustRunAfter(resolveConflictTask));
107113

108114
var generateInitialTask = project.getTasks()
@@ -115,10 +121,7 @@ public void apply(Project project) {
115121
}
116122

117123
private static String getResourceRoot(Project project) {
118-
var resourceRoot = project.findProperty("org.elasticsearch.transport.resourceRoot");
119-
if (resourceRoot == null) {
120-
resourceRoot = "transport";
121-
}
122-
return resourceRoot.toString();
124+
Provider<String> resourceRootProperty = project.getProviders().gradleProperty("org.elasticsearch.transport.resourceRoot");
125+
return resourceRootProperty.isPresent() ? resourceRootProperty.get() : "transport";
123126
}
124127
}

0 commit comments

Comments
 (0)