Merge revision ce2a7dee86 into multi-project

This commit is contained in:
Tim Vernum 2024-12-15 23:45:15 +11:00
commit affd6dfb5b
357 changed files with 9574 additions and 2238 deletions

View file

@ -56,7 +56,7 @@ steps:
timeout_in_minutes: 300
matrix:
setup:
BWC_VERSION: ["8.16.2", "8.17.0", "8.18.0", "9.0.0"]
BWC_VERSION: ["8.16.2", "8.17.1", "8.18.0", "9.0.0"]
agents:
provider: gcp
image: family/elasticsearch-ubuntu-2004

View file

@ -10,6 +10,7 @@ steps:
- debian-12
- opensuse-leap-15
- oraclelinux-8
- oraclelinux-9
- sles-15
- ubuntu-2004
- ubuntu-2204

View file

@ -11,6 +11,7 @@ steps:
- debian-12
- opensuse-leap-15
- oraclelinux-8
- oraclelinux-9
- sles-15
- ubuntu-2004
- ubuntu-2204
@ -301,8 +302,8 @@ steps:
env:
BWC_VERSION: 8.16.2
- label: "{{matrix.image}} / 8.17.0 / packaging-tests-upgrade"
command: ./.ci/scripts/packaging-test.sh -Dbwc.checkout.align=true destructiveDistroUpgradeTest.v8.17.0
- label: "{{matrix.image}} / 8.17.1 / packaging-tests-upgrade"
command: ./.ci/scripts/packaging-test.sh -Dbwc.checkout.align=true destructiveDistroUpgradeTest.v8.17.1
timeout_in_minutes: 300
matrix:
setup:
@ -315,7 +316,7 @@ steps:
machineType: custom-16-32768
buildDirectory: /dev/shm/bk
env:
BWC_VERSION: 8.17.0
BWC_VERSION: 8.17.1
- label: "{{matrix.image}} / 8.18.0 / packaging-tests-upgrade"
command: ./.ci/scripts/packaging-test.sh -Dbwc.checkout.align=true destructiveDistroUpgradeTest.v8.18.0

View file

@ -10,6 +10,7 @@ steps:
- debian-12
- opensuse-leap-15
- oraclelinux-8
- oraclelinux-9
- sles-15
- ubuntu-2004
- ubuntu-2204

View file

@ -325,8 +325,8 @@ steps:
- signal_reason: agent_stop
limit: 3
- label: 8.17.0 / bwc
command: .ci/scripts/run-gradle.sh -Dbwc.checkout.align=true v8.17.0#bwcTest
- label: 8.17.1 / bwc
command: .ci/scripts/run-gradle.sh -Dbwc.checkout.align=true v8.17.1#bwcTest
timeout_in_minutes: 300
agents:
provider: gcp
@ -335,7 +335,7 @@ steps:
buildDirectory: /dev/shm/bk
preemptible: true
env:
BWC_VERSION: 8.17.0
BWC_VERSION: 8.17.1
retry:
automatic:
- exit_status: "-1"
@ -448,7 +448,7 @@ steps:
setup:
ES_RUNTIME_JAVA:
- openjdk21
BWC_VERSION: ["8.16.2", "8.17.0", "8.18.0", "9.0.0"]
BWC_VERSION: ["8.16.2", "8.17.1", "8.18.0", "9.0.0"]
agents:
provider: gcp
image: family/elasticsearch-ubuntu-2004
@ -490,7 +490,7 @@ steps:
ES_RUNTIME_JAVA:
- openjdk21
- openjdk23
BWC_VERSION: ["8.16.2", "8.17.0", "8.18.0", "9.0.0"]
BWC_VERSION: ["8.16.2", "8.17.1", "8.18.0", "9.0.0"]
agents:
provider: gcp
image: family/elasticsearch-ubuntu-2004

View file

@ -13,6 +13,7 @@ steps:
- debian-12
- opensuse-leap-15
- oraclelinux-8
- oraclelinux-9
- sles-15
- ubuntu-2004
- ubuntu-2204

View file

@ -0,0 +1,11 @@
config:
allow-labels: "test-entitlements"
steps:
- label: part-1-entitlements
command: .ci/scripts/run-gradle.sh -Dignore.tests.seed -Dtests.jvm.argline="-Des.entitlements.enabled=true" checkPart1
timeout_in_minutes: 300
agents:
provider: gcp
image: family/elasticsearch-ubuntu-2004
machineType: custom-32-98304
buildDirectory: /dev/shm/bk

View file

@ -1,6 +1,8 @@
steps:
- label: part-1
command: .ci/scripts/run-gradle.sh -Dignore.tests.seed checkPart1
command: |
.buildkite/scripts/spotless.sh # This doesn't have to be part of part-1, it was just a convenient place to put it
.ci/scripts/run-gradle.sh -Dignore.tests.seed checkPart1
timeout_in_minutes: 300
agents:
provider: gcp

View file

@ -0,0 +1,11 @@
config:
allow-labels: "test-entitlements"
steps:
- label: part-2-entitlements
command: .ci/scripts/run-gradle.sh -Dignore.tests.seed -Dtests.jvm.argline="-Des.entitlements.enabled=true" checkPart2
timeout_in_minutes: 300
agents:
provider: gcp
image: family/elasticsearch-ubuntu-2004
machineType: custom-32-98304
buildDirectory: /dev/shm/bk

View file

@ -0,0 +1,11 @@
config:
allow-labels: "test-entitlements"
steps:
- label: part-3-entitlements
command: .ci/scripts/run-gradle.sh -Dignore.tests.seed -Dtests.jvm.argline="-Des.entitlements.enabled=true" checkPart3
timeout_in_minutes: 300
agents:
provider: gcp
image: family/elasticsearch-ubuntu-2004
machineType: custom-32-98304
buildDirectory: /dev/shm/bk

View file

@ -0,0 +1,11 @@
config:
allow-labels: "test-entitlements"
steps:
- label: part-4-entitlements
command: .ci/scripts/run-gradle.sh -Dignore.tests.seed -Dtests.jvm.argline="-Des.entitlements.enabled=true" checkPart4
timeout_in_minutes: 300
agents:
provider: gcp
image: family/elasticsearch-ubuntu-2004
machineType: custom-32-98304
buildDirectory: /dev/shm/bk

View file

@ -0,0 +1,11 @@
config:
allow-labels: "test-entitlements"
steps:
- label: part-5-entitlements
command: .ci/scripts/run-gradle.sh -Dignore.tests.seed -Dtests.jvm.argline="-Des.entitlements.enabled=true" checkPart5
timeout_in_minutes: 300
agents:
provider: gcp
image: family/elasticsearch-ubuntu-2004
machineType: custom-32-98304
buildDirectory: /dev/shm/bk

View file

@ -3,7 +3,9 @@ config:
skip-labels: []
steps:
- label: precommit
command: .ci/scripts/run-gradle.sh -Dignore.tests.seed precommit
command: |
.buildkite/scripts/spotless.sh
.ci/scripts/run-gradle.sh -Dignore.tests.seed precommit
timeout_in_minutes: 300
agents:
provider: gcp

44
.buildkite/scripts/spotless.sh Executable file
View file

@ -0,0 +1,44 @@
#!/bin/bash
if [[ -z "${BUILDKITE_PULL_REQUEST:-}" ]]; then
echo "Not a pull request, skipping spotless"
exit 0
fi
if ! git diff --exit-code; then
echo "Changes are present before running spotless, not running"
git status
exit 0
fi
NEW_COMMIT_MESSAGE="[CI] Auto commit changes from spotless"
PREVIOUS_COMMIT_MESSAGE="$(git log -1 --pretty=%B)"
echo "--- Running spotless"
.ci/scripts/run-gradle.sh -Dscan.tag.NESTED spotlessApply
if git diff --exit-code; then
echo "No changes found after running spotless. Don't need to auto commit."
exit 0
fi
if [[ "$NEW_COMMIT_MESSAGE" == "$PREVIOUS_COMMIT_MESSAGE" ]]; then
echo "Changes found after running spotless"
echo "CI already attempted to commit these changes, but the file(s) seem to have changed again."
echo "Please review and fix manually."
exit 1
fi
git config --global user.name elasticsearchmachine
git config --global user.email 'infra-root+elasticsearchmachine@elastic.co'
gh pr checkout "${BUILDKITE_PULL_REQUEST}"
git add -u .
git commit -m "$NEW_COMMIT_MESSAGE"
git push
# After the git push, the new commit will trigger a new build within a few seconds and this build should get cancelled
# So, let's just sleep to give the build time to cancel itself without an error
# If it doesn't get cancelled for some reason, then exit with an error, because we don't want this build to be green (we just don't want it to generate an error either)
sleep 300
exit 1

View file

@ -16,6 +16,6 @@ BWC_VERSION:
- "8.14.3"
- "8.15.5"
- "8.16.2"
- "8.17.0"
- "8.17.1"
- "8.18.0"
- "9.0.0"

View file

@ -1,5 +1,5 @@
BWC_VERSION:
- "8.16.2"
- "8.17.0"
- "8.17.1"
- "8.18.0"
- "9.0.0"

View file

@ -439,7 +439,7 @@ class PublishPluginFuncTest extends AbstractGradleFuncTest {
// scm info only added for internal builds
internalBuild()
buildFile << """
buildParams.getGitOriginProperty().set("https://some-repo.com/repo.git")
buildParams.setGitOrigin("https://some-repo.com/repo.git")
apply plugin:'elasticsearch.java'
apply plugin:'elasticsearch.publish'

View file

@ -22,7 +22,7 @@ public enum DockerBase {
// Chainguard based wolfi image with latest jdk
// This is usually updated via renovatebot
// spotless:off
WOLFI("docker.elastic.co/wolfi/chainguard-base:latest@sha256:32f06b169bb4b0f257fbb10e8c8379f06d3ee1355c89b3327cb623781a29590e",
WOLFI("docker.elastic.co/wolfi/chainguard-base:latest@sha256:1b51ff6dba78c98d3e02b0cd64a8ce3238c7a40408d21e3af12a329d44db6f23",
"-wolfi",
"apk"
),

View file

@ -132,7 +132,7 @@ public class ElasticsearchJavaBasePlugin implements Plugin<Project> {
public void configureCompile(Project project) {
project.getExtensions().getExtraProperties().set("compactProfile", "full");
JavaPluginExtension java = project.getExtensions().getByType(JavaPluginExtension.class);
if (buildParams.getJavaToolChainSpec().isPresent()) {
if (buildParams.getJavaToolChainSpec().getOrNull() != null) {
java.toolchain(buildParams.getJavaToolChainSpec().get());
}
java.setSourceCompatibility(buildParams.getMinimumRuntimeVersion());

View file

@ -13,7 +13,6 @@ import com.github.jengelman.gradle.plugins.shadow.ShadowBasePlugin;
import org.elasticsearch.gradle.OS;
import org.elasticsearch.gradle.internal.conventions.util.Util;
import org.elasticsearch.gradle.internal.info.BuildParameterExtension;
import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin;
import org.elasticsearch.gradle.internal.test.ErrorReportingTestListener;
import org.elasticsearch.gradle.internal.test.SimpleCommandLineArgumentProvider;
@ -27,7 +26,6 @@ import org.gradle.api.Task;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.file.FileCollection;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.ProviderFactory;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.SourceSetContainer;
@ -56,8 +54,7 @@ public abstract class ElasticsearchTestBasePlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getRootProject().getPlugins().apply(GlobalBuildInfoPlugin.class);
Property<BuildParameterExtension> buildParams = loadBuildParams(project);
var buildParams = loadBuildParams(project);
project.getPluginManager().apply(GradleTestPolicySetupPlugin.class);
// for fips mode check
project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class);

View file

@ -66,7 +66,7 @@ public class InternalDistributionBwcSetupPlugin implements Plugin<Project> {
project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class);
project.getPlugins().apply(JvmToolchainsPlugin.class);
toolChainService = project.getExtensions().getByType(JavaToolchainService.class);
BuildParameterExtension buildParams = loadBuildParams(project).get();
var buildParams = loadBuildParams(project).get();
Boolean isCi = buildParams.isCi();
buildParams.getBwcVersions().forPreviousUnreleased((BwcVersions.UnreleasedVersionInfo unreleasedVersion) -> {
configureBwcProject(

View file

@ -20,7 +20,6 @@ import org.elasticsearch.gradle.distribution.ElasticsearchDistributionTypes;
import org.elasticsearch.gradle.internal.distribution.InternalElasticsearchDistributionTypes;
import org.elasticsearch.gradle.internal.docker.DockerSupportPlugin;
import org.elasticsearch.gradle.internal.docker.DockerSupportService;
import org.elasticsearch.gradle.internal.info.BuildParameterExtension;
import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin;
import org.elasticsearch.gradle.util.GradleUtils;
import org.gradle.api.GradleException;
@ -49,7 +48,7 @@ public class InternalDistributionDownloadPlugin implements Plugin<Project> {
// this is needed for isInternal
project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class);
project.getRootProject().getPluginManager().apply(DockerSupportPlugin.class);
BuildParameterExtension buildParams = loadBuildParams(project).get();
var buildParams = loadBuildParams(project).get();
DistributionDownloadPlugin distributionDownloadPlugin = project.getPlugins().apply(DistributionDownloadPlugin.class);
Provider<DockerSupportService> dockerSupport = GradleUtils.getBuildService(
@ -61,7 +60,7 @@ public class InternalDistributionDownloadPlugin implements Plugin<Project> {
);
registerInternalDistributionResolutions(
DistributionDownloadPlugin.getRegistrationsContainer(project),
buildParams.getBwcVersionsProperty()
buildParams.getBwcVersionsProvider()
);
}

View file

@ -10,7 +10,6 @@
package org.elasticsearch.gradle.internal;
import org.elasticsearch.gradle.VersionProperties;
import org.elasticsearch.gradle.internal.info.BuildParameterExtension;
import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin;
import org.elasticsearch.gradle.testclusters.ElasticsearchCluster;
import org.elasticsearch.gradle.testclusters.TestClustersPlugin;
@ -26,7 +25,7 @@ public class InternalTestClustersPlugin implements Plugin<Project> {
public void apply(Project project) {
project.getPlugins().apply(InternalDistributionDownloadPlugin.class);
project.getRootProject().getRootProject().getPlugins().apply(GlobalBuildInfoPlugin.class);
BuildParameterExtension buildParams = loadBuildParams(project).get();
var buildParams = loadBuildParams(project).get();
project.getRootProject().getPluginManager().apply(InternalReaperPlugin.class);
TestClustersPlugin testClustersPlugin = project.getPlugins().apply(TestClustersPlugin.class);
testClustersPlugin.setRuntimeJava(buildParams.getRuntimeJavaHome());

View file

@ -13,175 +13,58 @@ import org.elasticsearch.gradle.internal.BwcVersions;
import org.gradle.api.Action;
import org.gradle.api.JavaVersion;
import org.gradle.api.Task;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider;
import org.gradle.api.provider.ProviderFactory;
import org.gradle.jvm.toolchain.JavaToolchainSpec;
import java.io.File;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicReference;
public abstract class BuildParameterExtension {
private final Provider<Boolean> inFipsJvm;
private final Provider<File> runtimeJavaHome;
private final Boolean isRuntimeJavaHomeSet;
private final List<JavaHome> javaVersions;
private final JavaVersion minimumCompilerVersion;
private final JavaVersion minimumRuntimeVersion;
private final JavaVersion gradleJavaVersion;
private final Provider<JavaVersion> runtimeJavaVersion;
private final Provider<? extends Action<JavaToolchainSpec>> javaToolChainSpec;
private final Provider<String> runtimeJavaDetails;
private final String gitRevision;
private transient AtomicReference<ZonedDateTime> buildDate = new AtomicReference<>();
private final String testSeed;
private final Boolean isCi;
private final Integer defaultParallel;
private final Boolean isSnapshotBuild;
public interface BuildParameterExtension {
String EXTENSION_NAME = "buildParams";
public BuildParameterExtension(
ProviderFactory providers,
Provider<File> runtimeJavaHome,
Provider<? extends Action<JavaToolchainSpec>> javaToolChainSpec,
Provider<JavaVersion> runtimeJavaVersion,
boolean isRuntimeJavaHomeSet,
Provider<String> runtimeJavaDetails,
List<JavaHome> javaVersions,
JavaVersion minimumCompilerVersion,
JavaVersion minimumRuntimeVersion,
JavaVersion gradleJavaVersion,
String gitRevision,
String gitOrigin,
ZonedDateTime buildDate,
String testSeed,
boolean isCi,
int defaultParallel,
final boolean isSnapshotBuild,
Provider<BwcVersions> bwcVersions
) {
this.inFipsJvm = providers.systemProperty("tests.fips.enabled").map(BuildParameterExtension::parseBoolean);
this.runtimeJavaHome = runtimeJavaHome;
this.javaToolChainSpec = javaToolChainSpec;
this.runtimeJavaVersion = runtimeJavaVersion;
this.isRuntimeJavaHomeSet = isRuntimeJavaHomeSet;
this.runtimeJavaDetails = runtimeJavaDetails;
this.javaVersions = javaVersions;
this.minimumCompilerVersion = minimumCompilerVersion;
this.minimumRuntimeVersion = minimumRuntimeVersion;
this.gradleJavaVersion = gradleJavaVersion;
this.gitRevision = gitRevision;
this.testSeed = testSeed;
this.isCi = isCi;
this.defaultParallel = defaultParallel;
this.isSnapshotBuild = isSnapshotBuild;
this.getBwcVersionsProperty().set(bwcVersions);
this.getGitOriginProperty().set(gitOrigin);
}
boolean getInFipsJvm();
private static boolean parseBoolean(String s) {
if (s == null) {
return false;
}
return Boolean.parseBoolean(s);
}
Provider<File> getRuntimeJavaHome();
public boolean getInFipsJvm() {
return inFipsJvm.getOrElse(false);
}
void withFipsEnabledOnly(Task task);
public Provider<File> getRuntimeJavaHome() {
return runtimeJavaHome;
}
Boolean getIsRuntimeJavaHomeSet();
public void withFipsEnabledOnly(Task task) {
task.onlyIf("FIPS mode disabled", task1 -> getInFipsJvm() == false);
}
List<JavaHome> getJavaVersions();
public Boolean getIsRuntimeJavaHomeSet() {
return isRuntimeJavaHomeSet;
}
JavaVersion getMinimumCompilerVersion();
public List<JavaHome> getJavaVersions() {
return javaVersions;
}
JavaVersion getMinimumRuntimeVersion();
public JavaVersion getMinimumCompilerVersion() {
return minimumCompilerVersion;
}
JavaVersion getGradleJavaVersion();
public JavaVersion getMinimumRuntimeVersion() {
return minimumRuntimeVersion;
}
Provider<JavaVersion> getRuntimeJavaVersion();
public JavaVersion getGradleJavaVersion() {
return gradleJavaVersion;
}
Provider<? extends Action<JavaToolchainSpec>> getJavaToolChainSpec();
public Provider<JavaVersion> getRuntimeJavaVersion() {
return runtimeJavaVersion;
}
Provider<String> getRuntimeJavaDetails();
public Provider<? extends Action<JavaToolchainSpec>> getJavaToolChainSpec() {
return javaToolChainSpec;
}
String getGitRevision();
public Provider<String> getRuntimeJavaDetails() {
return runtimeJavaDetails;
}
String getGitOrigin();
public String getGitRevision() {
return gitRevision;
}
ZonedDateTime getBuildDate();
public String getGitOrigin() {
return getGitOriginProperty().get();
}
String getTestSeed();
public ZonedDateTime getBuildDate() {
ZonedDateTime value = buildDate.get();
if (value == null) {
value = ZonedDateTime.now(ZoneOffset.UTC);
if (buildDate.compareAndSet(null, value) == false) {
// If another thread initialized it first, return the initialized value
value = buildDate.get();
}
}
return value;
}
Boolean isCi();
public String getTestSeed() {
return testSeed;
}
Integer getDefaultParallel();
public Boolean isCi() {
return isCi;
}
Boolean isSnapshotBuild();
public Integer getDefaultParallel() {
return defaultParallel;
}
BwcVersions getBwcVersions();
public Boolean isSnapshotBuild() {
return isSnapshotBuild;
}
Provider<BwcVersions> getBwcVersionsProvider();
public BwcVersions getBwcVersions() {
return getBwcVersionsProperty().get();
}
Random getRandom();
public abstract Property<BwcVersions> getBwcVersionsProperty();
public abstract Property<String> getGitOriginProperty();
public Random getRandom() {
return new Random(Long.parseUnsignedLong(testSeed.split(":")[0], 16));
}
public Boolean isGraalVmRuntime() {
return runtimeJavaDetails.get().toLowerCase().contains("graalvm");
}
Boolean isGraalVmRuntime();
}

View file

@ -0,0 +1,245 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/
package org.elasticsearch.gradle.internal.info;
import org.elasticsearch.gradle.internal.BwcVersions;
import org.gradle.api.Action;
import org.gradle.api.JavaVersion;
import org.gradle.api.Task;
import org.gradle.api.provider.Provider;
import org.gradle.api.provider.ProviderFactory;
import org.gradle.jvm.toolchain.JavaToolchainSpec;
import java.io.File;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;
public abstract class DefaultBuildParameterExtension implements BuildParameterExtension {
private final Provider<Boolean> inFipsJvm;
private final Provider<File> runtimeJavaHome;
private final Boolean isRuntimeJavaHomeSet;
private final List<JavaHome> javaVersions;
private final JavaVersion minimumCompilerVersion;
private final JavaVersion minimumRuntimeVersion;
private final JavaVersion gradleJavaVersion;
private final Provider<JavaVersion> runtimeJavaVersion;
private final Provider<? extends Action<JavaToolchainSpec>> javaToolChainSpec;
private final Provider<String> runtimeJavaDetails;
private final String gitRevision;
private transient AtomicReference<ZonedDateTime> buildDate = new AtomicReference<>();
private final String testSeed;
private final Boolean isCi;
private final Integer defaultParallel;
private final Boolean isSnapshotBuild;
// not final for testing
private Provider<BwcVersions> bwcVersions;
private String gitOrigin;
public DefaultBuildParameterExtension(
ProviderFactory providers,
Provider<File> runtimeJavaHome,
Provider<? extends Action<JavaToolchainSpec>> javaToolChainSpec,
Provider<JavaVersion> runtimeJavaVersion,
boolean isRuntimeJavaHomeSet,
Provider<String> runtimeJavaDetails,
List<JavaHome> javaVersions,
JavaVersion minimumCompilerVersion,
JavaVersion minimumRuntimeVersion,
JavaVersion gradleJavaVersion,
String gitRevision,
String gitOrigin,
String testSeed,
boolean isCi,
int defaultParallel,
final boolean isSnapshotBuild,
Provider<BwcVersions> bwcVersions
) {
this.inFipsJvm = providers.systemProperty("tests.fips.enabled").map(DefaultBuildParameterExtension::parseBoolean);
this.runtimeJavaHome = cache(providers, runtimeJavaHome);
this.javaToolChainSpec = cache(providers, javaToolChainSpec);
this.runtimeJavaVersion = cache(providers, runtimeJavaVersion);
this.isRuntimeJavaHomeSet = isRuntimeJavaHomeSet;
this.runtimeJavaDetails = cache(providers, runtimeJavaDetails);
this.javaVersions = javaVersions;
this.minimumCompilerVersion = minimumCompilerVersion;
this.minimumRuntimeVersion = minimumRuntimeVersion;
this.gradleJavaVersion = gradleJavaVersion;
this.gitRevision = gitRevision;
this.testSeed = testSeed;
this.isCi = isCi;
this.defaultParallel = defaultParallel;
this.isSnapshotBuild = isSnapshotBuild;
this.bwcVersions = cache(providers, bwcVersions);
this.gitOrigin = gitOrigin;
}
// This is a workaround for https://github.com/gradle/gradle/issues/25550
private <T> Provider<T> cache(ProviderFactory providerFactory, Provider<T> incomingProvider) {
SingleObjectCache<T> cache = new SingleObjectCache<>();
return providerFactory.provider(() -> cache.computeIfAbsent(() -> incomingProvider.getOrNull()));
}
private static boolean parseBoolean(String s) {
if (s == null) {
return false;
}
return Boolean.parseBoolean(s);
}
@Override
public boolean getInFipsJvm() {
return inFipsJvm.getOrElse(false);
}
@Override
public Provider<File> getRuntimeJavaHome() {
return runtimeJavaHome;
}
@Override
public void withFipsEnabledOnly(Task task) {
task.onlyIf("FIPS mode disabled", task1 -> getInFipsJvm() == false);
}
@Override
public Boolean getIsRuntimeJavaHomeSet() {
return isRuntimeJavaHomeSet;
}
@Override
public List<JavaHome> getJavaVersions() {
return javaVersions;
}
@Override
public JavaVersion getMinimumCompilerVersion() {
return minimumCompilerVersion;
}
@Override
public JavaVersion getMinimumRuntimeVersion() {
return minimumRuntimeVersion;
}
@Override
public JavaVersion getGradleJavaVersion() {
return gradleJavaVersion;
}
@Override
public Provider<JavaVersion> getRuntimeJavaVersion() {
return runtimeJavaVersion;
}
@Override
public Provider<? extends Action<JavaToolchainSpec>> getJavaToolChainSpec() {
return javaToolChainSpec;
}
@Override
public Provider<String> getRuntimeJavaDetails() {
return runtimeJavaDetails;
}
@Override
public String getGitRevision() {
return gitRevision;
}
@Override
public String getGitOrigin() {
return gitOrigin;
}
@Override
public ZonedDateTime getBuildDate() {
ZonedDateTime value = buildDate.get();
if (value == null) {
value = ZonedDateTime.now(ZoneOffset.UTC);
if (buildDate.compareAndSet(null, value) == false) {
// If another thread initialized it first, return the initialized value
value = buildDate.get();
}
}
return value;
}
@Override
public String getTestSeed() {
return testSeed;
}
@Override
public Boolean isCi() {
return isCi;
}
@Override
public Integer getDefaultParallel() {
return defaultParallel;
}
@Override
public Boolean isSnapshotBuild() {
return isSnapshotBuild;
}
@Override
public BwcVersions getBwcVersions() {
return bwcVersions.get();
}
@Override
public Random getRandom() {
return new Random(Long.parseUnsignedLong(testSeed.split(":")[0], 16));
}
@Override
public Boolean isGraalVmRuntime() {
return runtimeJavaDetails.get().toLowerCase().contains("graalvm");
}
private static class SingleObjectCache<T> {
private T instance;
public T computeIfAbsent(Supplier<T> supplier) {
synchronized (this) {
if (instance == null) {
instance = supplier.get();
}
return instance;
}
}
public T get() {
return instance;
}
}
public Provider<BwcVersions> getBwcVersionsProvider() {
return bwcVersions;
}
// for testing; not part of public api
public void setBwcVersions(Provider<BwcVersions> bwcVersions) {
this.bwcVersions = bwcVersions;
}
// for testing; not part of public api
public void setGitOrigin(String gitOrigin) {
this.gitOrigin = gitOrigin;
}
}

View file

@ -51,8 +51,6 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@ -124,8 +122,10 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
);
BuildParameterExtension buildParams = project.getExtensions()
.create(
"buildParams",
BuildParameterExtension.class,
BuildParameterExtension.EXTENSION_NAME,
DefaultBuildParameterExtension.class,
providers,
actualRuntimeJavaHome,
resolveToolchainSpecFromEnv(),
actualRuntimeJavaHome.map(
@ -145,7 +145,6 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
Jvm.current().getJavaVersion(),
gitInfo.getRevision(),
gitInfo.getOrigin(),
ZonedDateTime.now(ZoneOffset.UTC),
getTestSeed(),
System.getenv("JENKINS_URL") != null || System.getenv("BUILDKITE_BUILD_URL") != null || System.getProperty("isCI") != null,
ParallelDetector.findDefaultParallel(project),

View file

@ -12,12 +12,10 @@ package org.elasticsearch.gradle.internal.precommit;
import org.elasticsearch.gradle.dependencies.CompileOnlyResolvePlugin;
import org.elasticsearch.gradle.internal.ExportElasticsearchBuildResourcesTask;
import org.elasticsearch.gradle.internal.conventions.precommit.PrecommitPlugin;
import org.elasticsearch.gradle.internal.info.BuildParameterExtension;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
import org.gradle.api.provider.Property;
import org.gradle.api.tasks.TaskProvider;
import java.io.File;
@ -34,7 +32,7 @@ public class ThirdPartyAuditPrecommitPlugin extends PrecommitPlugin {
@Override
public TaskProvider<? extends Task> createTask(Project project) {
project.getRootProject().getPlugins().apply(CompileOnlyResolvePlugin.class);
Property<BuildParameterExtension> buildParams = loadBuildParams(project);
var buildParams = loadBuildParams(project);
project.getPlugins().apply(CompileOnlyResolvePlugin.class);
project.getConfigurations().create("forbiddenApisCliJar");

View file

@ -10,7 +10,6 @@
package org.elasticsearch.gradle.internal.snyk;
import org.elasticsearch.gradle.internal.conventions.info.GitInfo;
import org.elasticsearch.gradle.internal.info.BuildParameterExtension;
import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
@ -18,7 +17,6 @@ import org.gradle.api.artifacts.Configuration;
import org.gradle.api.file.ProjectLayout;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.ProviderFactory;
import org.gradle.api.tasks.SourceSet;
@ -41,7 +39,7 @@ public class SnykDependencyMonitoringGradlePlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getRootProject().getPlugins().apply(GlobalBuildInfoPlugin.class);
Property<BuildParameterExtension> buildParams = loadBuildParams(project);
var buildParams = loadBuildParams(project);
var generateTaskProvider = project.getTasks()
.register("generateSnykDependencyGraph", GenerateSnykDependencyGraph.class, generateSnykDependencyGraph -> {

View file

@ -35,7 +35,7 @@ public class TestWithSslPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
File keyStoreDir = new File(project.getBuildDir(), "keystore");
BuildParameterExtension buildParams = project.getRootProject().getExtensions().getByType(BuildParameterExtension.class);
var buildParams = project.getRootProject().getExtensions().getByType(BuildParameterExtension.class);
TaskProvider<ExportElasticsearchBuildResourcesTask> exportKeyStore = project.getTasks()
.register("copyTestCertificates", ExportElasticsearchBuildResourcesTask.class, (t) -> {
t.copy("test/ssl/test-client.crt");

View file

@ -11,7 +11,6 @@ package org.elasticsearch.gradle.internal.test.rest.compat.compat;
import org.elasticsearch.gradle.Version;
import org.elasticsearch.gradle.internal.ElasticsearchJavaBasePlugin;
import org.elasticsearch.gradle.internal.info.BuildParameterExtension;
import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin;
import org.elasticsearch.gradle.internal.test.rest.CopyRestApiTask;
import org.elasticsearch.gradle.internal.test.rest.CopyRestTestsTask;
@ -78,7 +77,7 @@ public abstract class AbstractYamlRestCompatTestPlugin implements Plugin<Project
@Override
public void apply(Project project) {
project.getRootProject().getRootProject().getPlugins().apply(GlobalBuildInfoPlugin.class);
BuildParameterExtension buildParams = loadBuildParams(project).get();
var buildParams = loadBuildParams(project).get();
final Path compatRestResourcesDir = Path.of("restResources").resolve("compat");
final Path compatSpecsDir = compatRestResourcesDir.resolve("yamlSpecs");

View file

@ -0,0 +1,112 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/
package org.elasticsearch.gradle.internal.info
import spock.lang.Specification
import org.elasticsearch.gradle.internal.BwcVersions
import org.gradle.api.JavaVersion
import org.gradle.api.Project
import org.gradle.api.provider.Provider
import org.gradle.api.provider.ProviderFactory
import org.gradle.testfixtures.ProjectBuilder
import org.junit.Assert
import java.util.concurrent.CountDownLatch
import java.util.concurrent.Executors
import java.util.concurrent.Future
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicInteger
import static org.junit.Assert.fail
class BuildParameterExtensionSpec extends Specification {
ProjectBuilder projectBuilder = new ProjectBuilder()
def "#getterName is cached anc concurrently accessible"() {
given:
def project = projectBuilder.build()
def providers = project.getProviders();
def buildParams = extension(project, providers)
int numberOfThreads = 10;
when:
var service = Executors.newFixedThreadPool(numberOfThreads)
var latch = new CountDownLatch(numberOfThreads)
def testedProvider = buildParams."$getterName"()
def futures = (1..numberOfThreads).collect {
service.submit(
() -> {
try {
testedProvider.get()
} catch (AssertionError e) {
latch.countDown()
Assert.fail("Accessing cached provider more than once")
}
latch.countDown()
}
)
}
latch.await(10, TimeUnit.SECONDS)
then:
futures.collect { it.state() }.any() { it == Future.State.FAILED } == false
where:
getterName << [
"getRuntimeJavaHome",
"getJavaToolChainSpec",
"getRuntimeJavaDetails",
"getRuntimeJavaVersion",
"getBwcVersionsProvider"
]
}
private BuildParameterExtension extension(Project project, ProviderFactory providers) {
return project.getExtensions().create(
BuildParameterExtension.class, "buildParameters", DefaultBuildParameterExtension.class,
providers,
providerMock(),
providerMock(),
providerMock(),
true,
providerMock(),
[
Mock(JavaHome),
Mock(JavaHome),
],
JavaVersion.VERSION_11,
JavaVersion.VERSION_11,
JavaVersion.VERSION_11,
"gitRevision",
"gitOrigin",
"testSeed",
false,
5,
true,
// cannot use Mock here because of the way the provider is used by gradle internal property api
providerMock()
)
}
private Provider providerMock() {
Provider provider = Mock(Provider)
AtomicInteger counter = new AtomicInteger(0)
provider.getOrNull() >> {
println "accessing provider"
return counter.get() == 1 ? fail("Accessing cached provider more than once") : counter.incrementAndGet()
}
provider.get() >> {
fail("Accessing cached provider directly")
}
return provider
}
}

View file

@ -876,10 +876,8 @@ public class ElasticsearchNode implements TestClusterConfiguration {
// Don't inherit anything from the environment for as that would lack reproducibility
environment.clear();
environment.putAll(getESEnvironment());
if (cliJvmArgs.isEmpty() == false) {
String cliJvmArgsString = String.join(" ", cliJvmArgs);
environment.put("CLI_JAVA_OPTS", cliJvmArgsString);
}
String cliJvmArgsString = String.join(" ", cliJvmArgs);
environment.put("CLI_JAVA_OPTS", cliJvmArgsString + " " + System.getProperty("tests.jvm.argline", ""));
// Direct the stderr to the ES log file. This should capture any jvm problems to start.
// Stdout is discarded because ES duplicates the log file to stdout when run in the foreground.

View file

@ -183,7 +183,7 @@ abstract class AbstractGradleFuncTest extends Specification {
]
BwcVersions versions = new BwcVersions(currentVersion, versionList, ['main', '8.x', '8.3', '8.2', '8.1', '7.16'])
buildParams.getBwcVersionsProperty().set(versions)
buildParams.setBwcVersions(project.provider { versions} )
"""
}

View file

@ -1,5 +0,0 @@
pr: 104683
summary: "Feature: re-structure document ID generation favoring _id inverted index compression"
area: Logs
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 112881
summary: "ESQL: Remove parent from `FieldAttribute`"
area: ES|QL
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 112989
summary: Upgrade Bouncy Castle FIPS dependencies
area: Security
type: upgrade
issues: []

View file

@ -1,5 +0,0 @@
pr: 113194
summary: Add Search Phase APM metrics
area: Search
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 113713
summary: Adding inference endpoint validation for `AzureAiStudioService`
area: Machine Learning
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 113920
summary: Add initial support for `semantic_text` field type
area: Search
type: enhancement
issues: []

View file

@ -1,7 +0,0 @@
pr: 114334
summary: Don't return TEXT type for functions that take TEXT
area: ES|QL
type: bug
issues:
- 111537
- 114333

View file

@ -1,5 +0,0 @@
pr: 114482
summary: Remove snapshot build restriction for match and qstr functions
area: ES|QL
type: feature
issues: []

View file

@ -1,6 +0,0 @@
pr: 114484
summary: Add `docvalue_fields` Support for `dense_vector` Fields
area: Search
type: enhancement
issues:
- 108470

View file

@ -1,5 +0,0 @@
pr: 114620
summary: "ES|QL: add metrics for functions"
area: ES|QL
type: enhancement
issues: []

View file

@ -1,6 +0,0 @@
pr: 114665
summary: Fixing remote ENRICH by pushing the Enrich inside `FragmentExec`
area: ES|QL
type: bug
issues:
- 105095

View file

@ -1,6 +0,0 @@
pr: 114681
summary: "Support for unsigned 64 bit numbers in Cpu stats"
area: Infra/Core
type: enhancement
issues:
- 112274

View file

@ -1,5 +0,0 @@
pr: 114742
summary: Adding support for additional mapping to simulate ingest API
area: Ingest Node
type: enhancement
issues: []

View file

@ -1,6 +0,0 @@
pr: 114819
summary: Don't use a `BytesStreamOutput` to copy keys in `BytesRefBlockHash`
area: EQL
type: bug
issues:
- 114599

View file

@ -1,5 +0,0 @@
pr: 114855
summary: Add query rules retriever
area: Relevance
type: enhancement
issues: [ ]

View file

@ -1,5 +0,0 @@
pr: 114862
summary: "[Inference API] Add API to get configuration of inference services"
area: Machine Learning
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 114869
summary: Standardize error code when bulk body is invalid
area: CRUD
type: bug
issues: []

View file

@ -1,5 +0,0 @@
pr: 114899
summary: "ES|QL: Fix stats by constant expression"
area: ES|QL
type: bug
issues: []

View file

@ -1,5 +0,0 @@
pr: 114924
summary: Reducing error-level stack trace logging for normal events in `GeoIpDownloader`
area: Ingest Node
type: bug
issues: []

View file

@ -1,6 +0,0 @@
pr: 114934
summary: "[ES|QL] To_DatePeriod and To_TimeDuration return better error messages on\
\ `union_type` fields"
area: ES|QL
type: bug
issues: []

View file

@ -1,6 +0,0 @@
pr: 114964
summary: Add a `monitor_stats` privilege and allow that privilege for remote cluster
privileges
area: Authorization
type: enhancement
issues: []

View file

@ -1,6 +0,0 @@
pr: 115041
summary: Increase default `queue_capacity` to 10_000 and decrease max `queue_capacity`
to 100_000
area: Machine Learning
type: enhancement
issues: []

View file

@ -1,7 +0,0 @@
pr: 115091
summary: Added stricter range type checks and runtime warnings for ENRICH
area: ES|QL
type: bug
issues:
- 107357
- 116799

View file

@ -1,6 +0,0 @@
pr: 115102
summary: Watch Next Run Interval Resets On Shard Move or Node Restart
area: Watcher
type: bug
issues:
- 111433

View file

@ -1,6 +0,0 @@
pr: 115142
summary: Attempt to clean up index before remote transfer
area: Recovery
type: enhancement
issues:
- 104473

View file

@ -1,6 +0,0 @@
pr: 115266
summary: ES|QL CCS uses `skip_unavailable` setting for handling disconnected remote
clusters
area: ES|QL
type: enhancement
issues: [ 114531 ]

View file

@ -1,6 +0,0 @@
pr: 115359
summary: Adding support for simulate ingest mapping adddition for indices with mappings
that do not come from templates
area: Ingest Node
type: enhancement
issues: []

View file

@ -1,9 +0,0 @@
pr: 115414
summary: Mitigate IOSession timeouts
area: Machine Learning
type: bug
issues:
- 114385
- 114327
- 114105
- 114232

View file

@ -1,6 +0,0 @@
pr: 115459
summary: Adds access to flags no_sub_matches and no_overlapping_matches to hyphenation-decompounder-tokenfilter
area: Search
type: enhancement
issues:
- 97849

View file

@ -1,6 +0,0 @@
pr: 115640
summary: Fix NPE on plugin sync
area: Infra/CLI
type: bug
issues:
- 114818

View file

@ -1,5 +0,0 @@
pr: 115655
summary: Better sizing `BytesRef` for Strings in Queries
area: Search
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 115678
summary: "ESQL: extract common filter from aggs"
area: ES|QL
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 115687
summary: Add default ILM policies and switch to ILM for apm-data plugin
area: Data streams
type: feature
issues: []

View file

@ -1,6 +0,0 @@
pr: 115744
summary: Use `SearchStats` instead of field.isAggregatable in data node planning
area: ES|QL
type: bug
issues:
- 115737

View file

@ -1,5 +0,0 @@
pr: 115792
summary: Add ES|QL `bit_length` function
area: ES|QL
type: enhancement
issues: []

View file

@ -1,6 +0,0 @@
pr: 115797
summary: Enable `_tier` based coordinator rewrites for all indices (not just mounted
indices)
area: Search
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 115807
summary: "[Inference API] Improve chunked results error message"
area: Machine Learning
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 115812
summary: "Prohibit changes to index mode, source, and sort settings during resize"
area: Logs
type: bug
issues: []

View file

@ -1,6 +0,0 @@
pr: 115814
summary: "[ES|QL] Implicit casting string literal to intervals"
area: ES|QL
type: enhancement
issues:
- 115352

View file

@ -1,5 +0,0 @@
pr: 115858
summary: "ESQL: optimise aggregations filtered by false/null into evals"
area: ES|QL
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 115994
summary: Add logsdb telemetry
area: Logs
type: enhancement
issues: []

View file

@ -1,6 +0,0 @@
pr: 116021
summary: Fields caps does not honour ignore_unavailable
area: Search
type: bug
issues:
- 107767

View file

@ -1,5 +0,0 @@
pr: 116082
summary: Add support for bitwise inner-product in painless
area: Vector Search
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 116128
summary: Add num docs and size to logsdb telemetry
area: Logs
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 116211
summary: Use underlying `ByteBuf` `refCount` for `ReleasableBytesReference`
area: Network
type: bug
issues: []

View file

@ -1,5 +0,0 @@
pr: 116325
summary: Adjust analyze limit exception to be a `bad_request`
area: Analysis
type: bug
issues: []

View file

@ -1,5 +0,0 @@
pr: 116346
summary: "[ESQL] Fix Binary Comparisons on Date Nanos"
area: ES|QL
type: bug
issues: []

View file

@ -1,5 +0,0 @@
pr: 116348
summary: "ESQL: Honor skip_unavailable setting for nonmatching indices errors at planning time"
area: ES|QL
type: enhancement
issues: [ 114531 ]

View file

@ -1,5 +0,0 @@
pr: 116431
summary: Adds support for `input_type` field to Vertex inference service
area: Machine Learning
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 116437
summary: Ensure class resource stream is closed in `ResourceUtils`
area: Indices APIs
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 116447
summary: Adding a deprecation info API warning for data streams with old indices
area: Data streams
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 116515
summary: Esql/lookup join grammar
area: ES|QL
type: feature
issues: []

View file

@ -1,7 +0,0 @@
pr: 116583
summary: Fix NPE in `EnrichLookupService` on mixed clusters with <8.14 versions
area: ES|QL
type: bug
issues:
- 116529
- 116544

View file

@ -1,5 +0,0 @@
pr: 116591
summary: "Add support for `BYTE_LENGTH` scalar function"
area: ES|QL
type: feature
issues: []

View file

@ -1,6 +0,0 @@
pr: 116656
summary: _validate does not honour ignore_unavailable
area: Search
type: bug
issues:
- 116594

View file

@ -1,6 +0,0 @@
pr: 116664
summary: Hides `hugging_face_elser` service from the `GET _inference/_services API`
area: Machine Learning
type: bug
issues:
- 116644

View file

@ -1,10 +0,0 @@
pr: 116689
summary: Deprecate `_source.mode` in mappings
area: Mapping
type: deprecation
issues: []
deprecation:
title: Deprecate `_source.mode` in mappings
area: Mapping
details: Configuring `_source.mode` in mappings is deprecated and will be removed in future versions. Use `index.mapping.source.mode` index setting instead.
impact: Use `index.mapping.source.mode` index setting instead

View file

@ -1,5 +0,0 @@
pr: 116809
summary: "Distinguish `LicensedFeature` by family field"
area: License
type: bug
issues: []

View file

@ -1,5 +0,0 @@
pr: 116819
summary: ESQL - Add match operator (:)
area: Search
type: feature
issues: []

View file

@ -1,5 +0,0 @@
pr: 116931
summary: Enable built-in Inference Endpoints and default for Semantic Text
area: "Machine Learning"
type: enhancement
issues: []

View file

@ -1,6 +0,0 @@
pr: 116953
summary: Fix false positive date detection with trailing dot
area: Mapping
type: bug
issues:
- 116946

View file

@ -1,5 +0,0 @@
pr: 116957
summary: Propagate scoring function through random sampler
area: Machine Learning
type: bug
issues: [ 110134 ]

View file

@ -1,5 +0,0 @@
pr: 116962
summary: "Add special case for elastic reranker in inference API"
area: Machine Learning
type: enhancement
issues: []

View file

@ -1,6 +0,0 @@
pr: 116980
summary: "ESQL: Fix sorts containing `_source`"
area: ES|QL
type: bug
issues:
- 116659

View file

@ -0,0 +1,5 @@
pr: 116996
summary: Initial work on `ReindexDatastreamIndexAction`
area: Data streams
type: enhancement
issues: []

View file

@ -1,5 +0,0 @@
pr: 117080
summary: Esql Enable Date Nanos (tech preview)
area: ES|QL
type: enhancement
issues: []

View file

@ -1,6 +0,0 @@
pr: 117105
summary: Fix long metric deserialize & add - auto-resize needs to be set manually
area: CCS
type: bug
issues:
- 116914

Some files were not shown because too many files have changed in this diff Show more