This is an automated email from the ASF dual-hosted git repository.

cstamas pushed a commit to branch maven-4.0.x
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/maven-4.0.x by this push:
     new d2282909a1 Mimir 0.10.3 (#11291) (#11311)
d2282909a1 is described below

commit d2282909a19bc1478fea14ce90aa2ee8c01a2e00
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue Oct 21 14:53:00 2025 +0200

    Mimir 0.10.3 (#11291) (#11311)
    
    Changes:
    * update to Mimir 0.10.3 (that allows combining cache-purge and pre-seed 
features)
    * uses pre-seed local reposes
    * cache purge enabled on outer build
    
    Bacport of 448a6d756351d2b567e498d4087b9637ea69cb0e
---
 .github/ci-mimir-daemon.properties                       |  2 ++
 .github/workflows/maven.yml                              | 11 ++++++++++-
 .../org/apache/maven/cling/invoker/mvn/Environment.java  |  2 --
 .../apache/maven/cling/invoker/mvn/MavenInvokerTest.java |  4 ++--
 .../maven/cling/invoker/mvn/MavenInvokerTestSupport.java |  3 ++-
 .../src/main/java/org/apache/maven/api/cli/Executor.java |  2 +-
 .../cling/executor/embedded/EmbeddedMavenExecutor.java   |  2 +-
 .../maven/cling/executor/forked/ForkedMavenExecutor.java | 16 ++++++++++++++++
 .../org/apache/maven/cling/executor/Environment.java     |  2 --
 .../maven/cling/executor/MavenExecutorTestSupport.java   |  6 ++++--
 .../maven/cling/executor/impl/ToolboxToolTest.java       |  5 +++--
 .../src/main/java/org/apache/maven/it/Verifier.java      |  2 +-
 pom.xml                                                  |  6 ++----
 13 files changed, 44 insertions(+), 19 deletions(-)

diff --git a/.github/ci-mimir-daemon.properties 
b/.github/ci-mimir-daemon.properties
index 16c507a283..04b30055d3 100644
--- a/.github/ci-mimir-daemon.properties
+++ b/.github/ci-mimir-daemon.properties
@@ -19,3 +19,5 @@
 
 # Pre-seed itself
 mimir.daemon.preSeedItself=true
+mimir.file.exclusiveAccess=true
+mimir.file.cachePurge=ON_BEGIN
\ No newline at end of file
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index a0e1540072..75b25a612d 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -32,7 +32,7 @@ concurrency:
 permissions: {}
 
 env:
-  MIMIR_VERSION: 0.10.0
+  MIMIR_VERSION: 0.10.3
   MIMIR_BASEDIR: ~/.mimir
   MIMIR_LOCAL: ~/.mimir/local
 
@@ -100,6 +100,15 @@ jobs:
             apache-maven/target/apache-maven*.zip
             apache-maven/target/apache-maven*.tar.gz
 
+      - name: Upload test artifacts
+        uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 
# v4
+        if: failure() || cancelled()
+        with:
+          name: ${{ github.run_number }}-initial
+          path: |
+            **/target/surefire-reports/*
+            **/target/java_heapdump.hprof
+
   full-build:
     needs: initial-build
     runs-on: ${{ matrix.os }}
diff --git 
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/Environment.java
 
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/Environment.java
index b004cf2d97..e0c23fcbca 100644
--- 
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/Environment.java
+++ 
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/Environment.java
@@ -22,6 +22,4 @@ public final class Environment {
     private Environment() {}
 
     public static final String TOOLBOX_VERSION = 
System.getProperty("version.toolbox", "UNSET version.toolbox");
-
-    public static final String MIMIR_VERSION = 
System.getProperty("version.mimir", "UNSET version.mimir");
 }
diff --git 
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTest.java
 
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTest.java
index f169d3007b..b1115a4dce 100644
--- 
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTest.java
+++ 
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTest.java
@@ -222,10 +222,10 @@ void conflictingSettings(
         Map<String, String> logs = invoke(
                 cwd,
                 userHome,
-                List.of("eu.maveniverse.maven.plugins:toolbox:" + 
Environment.TOOLBOX_VERSION + ":help"),
+                List.of("eu.maveniverse.maven.plugins:toolbox:" + 
Environment.TOOLBOX_VERSION + ":dump"),
                 List.of("--force-interactive"));
 
-        String log = logs.get("eu.maveniverse.maven.plugins:toolbox:" + 
Environment.TOOLBOX_VERSION + ":help");
+        String log = logs.get("eu.maveniverse.maven.plugins:toolbox:" + 
Environment.TOOLBOX_VERSION + ":dump");
         assertTrue(log.contains("https://repo1.maven.org/maven2";), log);
         assertFalse(log.contains("https://repo.maven.apache.org/maven2";), log);
     }
diff --git 
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTestSupport.java
 
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTestSupport.java
index f299b4b748..91a69729b0 100644
--- 
a/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTestSupport.java
+++ 
b/impl/maven-cli/src/test/java/org/apache/maven/cling/invoker/mvn/MavenInvokerTestSupport.java
@@ -99,7 +99,8 @@ protected Map<String, String> invoke(Path cwd, Path userHome, 
Collection<String>
         Files.writeString(appJava, APP_JAVA_STRING);
 
         if (MimirInfuser.isMimirPresentUW()) {
-            MimirInfuser.doInfuseUW(Environment.MIMIR_VERSION, userHome);
+            MimirInfuser.doInfuseUW(userHome);
+            MimirInfuser.preseedItselfIntoInnerUserHome(userHome);
         }
 
         HashMap<String, String> logs = new HashMap<>();
diff --git 
a/impl/maven-executor/src/main/java/org/apache/maven/api/cli/Executor.java 
b/impl/maven-executor/src/main/java/org/apache/maven/api/cli/Executor.java
index 995e43018f..90c439195d 100644
--- a/impl/maven-executor/src/main/java/org/apache/maven/api/cli/Executor.java
+++ b/impl/maven-executor/src/main/java/org/apache/maven/api/cli/Executor.java
@@ -71,5 +71,5 @@ public interface Executor extends AutoCloseable {
      * @throws ExecutorException if an error occurs while closing the {@link 
Executor}
      */
     @Override
-    default void close() throws ExecutorException {}
+    void close() throws ExecutorException;
 }
diff --git 
a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/embedded/EmbeddedMavenExecutor.java
 
b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/embedded/EmbeddedMavenExecutor.java
index fff8226bea..e5eda275d5 100644
--- 
a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/embedded/EmbeddedMavenExecutor.java
+++ 
b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/embedded/EmbeddedMavenExecutor.java
@@ -183,10 +183,10 @@ protected void disposeRuntimeCreatedRealms(Context 
context) {
     @Override
     public String mavenVersion(ExecutorRequest executorRequest) throws 
ExecutorException {
         requireNonNull(executorRequest);
-        validate(executorRequest);
         if (closed.get()) {
             throw new ExecutorException("Executor is closed");
         }
+        validate(executorRequest);
         return mayCreate(executorRequest).version;
     }
 
diff --git 
a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/forked/ForkedMavenExecutor.java
 
b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/forked/ForkedMavenExecutor.java
index eaeddd8ec4..a559a24baf 100644
--- 
a/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/forked/ForkedMavenExecutor.java
+++ 
b/impl/maven-executor/src/main/java/org/apache/maven/cling/executor/forked/ForkedMavenExecutor.java
@@ -31,6 +31,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.maven.api.cli.Executor;
 import org.apache.maven.api.cli.ExecutorException;
@@ -45,6 +46,7 @@
  */
 public class ForkedMavenExecutor implements Executor {
     protected final boolean useMavenArgsEnv;
+    protected final AtomicBoolean closed;
 
     public ForkedMavenExecutor() {
         this(true);
@@ -52,11 +54,15 @@ public ForkedMavenExecutor() {
 
     public ForkedMavenExecutor(boolean useMavenArgsEnv) {
         this.useMavenArgsEnv = useMavenArgsEnv;
+        this.closed = new AtomicBoolean(false);
     }
 
     @Override
     public int execute(ExecutorRequest executorRequest) throws 
ExecutorException {
         requireNonNull(executorRequest);
+        if (closed.get()) {
+            throw new ExecutorException("Executor is closed");
+        }
         validate(executorRequest);
 
         return doExecute(executorRequest);
@@ -65,6 +71,9 @@ public int execute(ExecutorRequest executorRequest) throws 
ExecutorException {
     @Override
     public String mavenVersion(ExecutorRequest executorRequest) throws 
ExecutorException {
         requireNonNull(executorRequest);
+        if (closed.get()) {
+            throw new ExecutorException("Executor is closed");
+        }
         validate(executorRequest);
         try {
             Path cwd = 
Files.createTempDirectory("forked-executor-maven-version");
@@ -207,4 +216,11 @@ protected CountDownLatch pump(Process p, ExecutorRequest 
executorRequest) {
         stdinPump.start();
         return latch;
     }
+
+    @Override
+    public void close() throws ExecutorException {
+        if (closed.compareAndExchange(false, true)) {
+            // nothing yet
+        }
+    }
 }
diff --git 
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/Environment.java
 
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/Environment.java
index 0345cfdc77..771661a435 100644
--- 
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/Environment.java
+++ 
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/Environment.java
@@ -22,6 +22,4 @@ public final class Environment {
     private Environment() {}
 
     public static final String TOOLBOX_VERSION = 
System.getProperty("version.toolbox", "UNSET version.toolbox");
-
-    public static final String MIMIR_VERSION = 
System.getProperty("version.mimir", "UNSET version.mimir");
 }
diff --git 
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/MavenExecutorTestSupport.java
 
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/MavenExecutorTestSupport.java
index b5aecc4fc9..b322f23f46 100644
--- 
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/MavenExecutorTestSupport.java
+++ 
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/MavenExecutorTestSupport.java
@@ -61,6 +61,7 @@ void beforeEach(TestInfo testInfo) throws Exception {
                 .resolve("home");
         Files.createDirectories(userHome);
         MimirInfuser.infuseUW(userHome);
+        MimirInfuser.preseedItselfIntoInnerUserHome(userHome);
 
         System.out.println("=== " + 
testInfo.getTestMethod().orElseThrow().getName());
     }
@@ -338,10 +339,11 @@ protected void execute(@Nullable Path logFile, 
Collection<ExecutorRequest> reque
         for (ExecutorRequest request : requests) {
             if (MimirInfuser.isMimirPresentUW()) {
                 if (maven3Home().equals(request.installationDirectory())) {
-                    MimirInfuser.doInfusePW(Environment.MIMIR_VERSION, 
request.cwd(), request.userHomeDirectory());
+                    MimirInfuser.doInfusePW(request.cwd(), 
request.userHomeDirectory());
                 } else if 
(maven4Home().equals(request.installationDirectory())) {
-                    MimirInfuser.doInfuseUW(Environment.MIMIR_VERSION, 
request.userHomeDirectory());
+                    MimirInfuser.doInfuseUW(request.userHomeDirectory());
                 }
+                
MimirInfuser.preseedItselfIntoInnerUserHome(request.userHomeDirectory());
             }
             int exitCode = invoker.execute(request);
             if (exitCode != 0) {
diff --git 
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
 
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
index 7bc6c1ea05..79d1745c3b 100644
--- 
a/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
+++ 
b/impl/maven-executor/src/test/java/org/apache/maven/cling/executor/impl/ToolboxToolTest.java
@@ -64,10 +64,11 @@ void beforeEach(TestInfo testInfo) throws Exception {
 
         if (MimirInfuser.isMimirPresentUW()) {
             if (testName.contains("3")) {
-                MimirInfuser.doInfusePW(Environment.MIMIR_VERSION, cwd, 
userHome);
+                MimirInfuser.doInfusePW(cwd, userHome);
             } else {
-                MimirInfuser.doInfuseUW(Environment.MIMIR_VERSION, userHome);
+                MimirInfuser.doInfuseUW(userHome);
             }
+            MimirInfuser.preseedItselfIntoInnerUserHome(userHome);
         }
 
         System.out.println("=== " + 
testInfo.getTestMethod().orElseThrow().getName());
diff --git 
a/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
 
b/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
index 9ce5f12968..e4ebe69ac2 100644
--- 
a/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
+++ 
b/its/core-it-support/maven-it-helper/src/main/java/org/apache/maven/it/Verifier.java
@@ -109,7 +109,7 @@ public class Verifier {
     private final List<String> jvmArguments = new ArrayList<>();
 
     // TestSuiteOrdering creates Verifier in non-forked JVM as well, and there 
no prop set is set (so use default)
-    private final String toolboxVersion = 
System.getProperty("version.toolbox", "0.14.0");
+    private final String toolboxVersion = 
System.getProperty("version.toolbox", "0.14.1");
 
     private Path userHomeDirectory; // the user home
 
diff --git a/pom.xml b/pom.xml
index 5f5d70dfa0..2c7da555f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -177,7 +177,7 @@ under the License.
     <version.palantirJavaFormat>2.80.0</version.palantirJavaFormat>
 
     <!-- Set as system property in surefire/failsafe to propagate to tests and 
IT Verifier -->
-    <toolboxVersion>0.14.0</toolboxVersion>
+    <toolboxVersion>0.14.1</toolboxVersion>
   </properties>
 
   <!--bootstrap-start-comment-->
@@ -693,7 +693,7 @@ under the License.
       <dependency>
         <groupId>eu.maveniverse.maven.mimir</groupId>
         <artifactId>testing</artifactId>
-        <version>0.10.0</version>
+        <version>0.10.3</version>
       </dependency>
     </dependencies>
     <!--bootstrap-start-comment-->
@@ -725,7 +725,6 @@ under the License.
             <argLine>-Xmx256m @{jacocoArgLine}</argLine>
             <systemPropertyVariables combine.children="append">
               <version.toolbox>${toolboxVersion}</version.toolbox>
-              <version.mimir>${env.MIMIR_VERSION}</version.mimir>
             </systemPropertyVariables>
           </configuration>
         </plugin>
@@ -737,7 +736,6 @@ under the License.
             <argLine>-Xmx256m @{jacocoArgLine}</argLine>
             <systemPropertyVariables combine.children="append">
               <version.toolbox>${toolboxVersion}</version.toolbox>
-              <version.mimir>${env.MIMIR_VERSION}</version.mimir>
             </systemPropertyVariables>
           </configuration>
         </plugin>

Reply via email to