From 35c5865929c2b01545ab90601cfe7bce43420409 Mon Sep 17 00:00:00 2001 From: Daniel Widdis Date: Sat, 13 Dec 2025 16:57:53 -0800 Subject: [PATCH] Fix working directory for OpenSearchNode to avoid executing in immutable Gradle cache directory Signed-off-by: Daniel Widdis --- CHANGELOG.md | 1 + .../gradle/testclusters/OpenSearchNode.java | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45ceea7646217..542c98b6e501c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Fix bug of warm index: FullFileCachedIndexInput was closed error ([#20055](https://github.com/opensearch-project/OpenSearch/pull/20055)) - Fix flaky test ClusterMaxMergesAtOnceIT.testClusterLevelDefaultUpdatesMergePolicy ([#18056](https://github.com/opensearch-project/OpenSearch/issues/18056)) - Fix bug in Assertion framework(Yaml Rest test): numeric comparison fails when comparing Integer vs Long (or Float vs Double) ([#19376](https://github.com/opensearch-project/OpenSearch/pull/19376)) +- Fix working directory for OpenSearchNode to avoid executing in immutable Gradle cache directory ([#20229](https://github.com/opensearch-project/OpenSearch/pull/20229)) ### Dependencies - Bump `com.google.auth:google-auth-library-oauth2-http` from 1.38.0 to 1.41.0 ([#20183](https://github.com/opensearch-project/OpenSearch/pull/20183)) diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java index 47781f4ed5de7..451fefd7aba98 100644 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java +++ b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java @@ -725,12 +725,17 @@ private void runOpenSearchBinScriptWithInput(String input, String tool, CharSequ try (InputStream byteArrayInputStream = new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8))) { LoggedExec.exec(project, spec -> { spec.setEnvironment(getOpenSearchEnvironment()); - spec.workingDir(getDistroDir()); - spec.executable(OS.conditionalString().onUnix(() -> "./bin/" + tool).onWindows(() -> "cmd").supply()); + spec.workingDir(workingDir.toFile()); + spec.executable( + OS.conditionalString() + .onUnix(() -> getDistroDir().resolve("bin").resolve(tool).toString()) + .onWindows(() -> "cmd") + .supply() + ); spec.args(OS.>conditional().onWindows(() -> { ArrayList result = new ArrayList<>(); result.add("/c"); - result.add("bin\\" + tool + ".bat"); + result.add(getDistroDir().resolve("bin").resolve(tool + ".bat").toString()); result.addAll(Arrays.asList(args)); return result; }).onUnix(() -> Arrays.asList(args)).supply());