### CI Link

https://gradle-enterprise.elastic.co/s/6wrucnjdgjjdm https://gradle-enterprise.elastic.co/s/5c56fglmqlk4s https://gradle-enterprise.elastic.co/s/vwzb3ppw7p4ww https://gradle-enterprise.elastic.co/s/tqamvqdpkzzi4 https://gradle-enterprise.elastic.co/s/rniwyfcmjmkyi https://gradle-enterprise.elastic.co/s/k3xxqjli6mxye

### Repro line

Not provided

### Does it reproduce?

No

### Applicable branches

main

### Failure history

-

### Failure excerpt

Seemingly unrelated build tasks fail with "Unable to delete file" similar to

```
...

build complete, generating: C:\Users\jenkins\workspace\platform-support\253\build\253.tar.bz2

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* Where:
Build file 'C:\Users\jenkins\workspace\platform-support\253\x-pack\plugin\security\qa\basic-enable-security\build.gradle' line: 67

* What went wrong:
Execution failed for task ':x-pack:plugin:security:qa:basic-enable-security:javaRestTestWithSecurityEnabled'.
> java.io.IOException: Unable to delete file 'C:\Users\jenkins\workspace\platform-support\253\x-pack\plugin\security\qa\basic-enable-security\build\testclusters\javaRestTest-0\config'

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
Failed to stop service 'reaper'.
> org.gradle.api.GradleException: Reaper process failed. Check log at C:\Users\jenkins\workspace\platform-support\253\.gradle\reaper\build-6028\error.log for details

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
==============================================================================

* Get more help at https://help.gradle.org

BUILD FAILED in 2h 16m 17s
3630 actionable tasks: 3402 executed, 228 from cache
```

Note that the console output usually presents a different exception but these are warnings and probably not the cause of the test failure.

All of the failed builds failed to delete some config in paths like `C:\Users\jenkins\workspace\platform-support\253\x-pack\plugin\security\qa\basic-enable-security\build\testclusters\javaRestTest-0\config`
build-tools/src/main/java/org/elasticsearch/gradle/testclusters/ElasticsearchNode.java
}
    private void runElasticsearchBinScriptWithInput(String input, String tool, CharSequence... args) {
        if (Files.exists(getDistroDir().resolve("bin").resolve(tool)) == false
            && Files.exists(getDistroDir().resolve("bin").resolve(tool + ".bat")) == false) {
            throw new TestClustersException(
                "Can't run bin script: `" + tool + "` does not exist. " + "Is this the distribution you expect it to be ?"
            );
        }
        try (InputStream byteArrayInputStream = new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8))) {
            LoggedExec.exec(execOperations, spec -> {
                spec.setEnvironment(getESEnvironment());
                spec.workingDir(getDistroDir());
                spec.executable(OS.conditionalString().onUnix(() -> "./bin/" + tool).onWindows(() -> "cmd").supply());
                spec.args(OS.<List<CharSequence>>conditional().onWindows(() -> {
                    ArrayList<CharSequence> result = new ArrayList<>();
                    result.add("/c");
                    result.add("bin\\" + tool + ".bat");
                    Collections.addAll(result, args);
                    return result;
                }).onUnix(() -> Arrays.asList(args)).supply());
                spec.setStandardInput(byteArrayInputStream);
            });
        } catch (IOException e) {
            throw new UncheckedIOException("Failed to run " + tool + " for " + this, e);
        }
    }
    private void runKeystoreCommandWithPassword(String keystorePassword, String input, CharSequence... args) {
        final String actualInput = keystorePassword.length() > 0 ? keystorePassword + "\n" + input : input;
        runElasticsearchBinScriptWithInput(actualInput, "elasticsearch-keystore", args);
    }