You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2024/10/08 09:04:25 UTC

(maven) branch master updated: Fix concurrency issue in DefaultModelValidator (#1786)

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

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new a6ecbde9e9 Fix concurrency issue in DefaultModelValidator (#1786)
a6ecbde9e9 is described below

commit a6ecbde9e97075038417324fbc79a7362a0b0362
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Oct 8 11:04:20 2024 +0200

    Fix concurrency issue in DefaultModelValidator (#1786)
---
 .../maven/internal/impl/model/DefaultModelValidator.java      |  7 ++++---
 .../plugin/internal/DefaultPluginDependenciesResolver.java    | 11 ++++-------
 .../maven/project/DefaultProjectDependenciesResolver.java     |  8 ++------
 3 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelValidator.java b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelValidator.java
index c8e875be4b..94eb22f1dc 100644
--- a/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelValidator.java
+++ b/maven-api-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelValidator.java
@@ -30,6 +30,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 import java.util.function.Supplier;
 import java.util.function.UnaryOperator;
@@ -283,9 +284,9 @@ public class DefaultModelValidator implements ModelValidator {
         }
     }
 
-    private final Set<String> validCoordinatesIds = new HashSet<>();
+    private final Set<String> validCoordinatesIds = ConcurrentHashMap.newKeySet();
 
-    private final Set<String> validProfileIds = new HashSet<>();
+    private final Set<String> validProfileIds = ConcurrentHashMap.newKeySet();
 
     @Inject
     public DefaultModelValidator() {}
@@ -1496,7 +1497,7 @@ public class DefaultModelValidator implements ModelValidator {
             String id,
             String sourceHint,
             InputLocationTracker tracker) {
-        if (validCoordinatesIds.contains(id)) {
+        if (id != null && validCoordinatesIds.contains(id)) {
             return true;
         }
         if (!validateStringNotEmpty(prefix, fieldName, problems, severity, version, id, sourceHint, tracker)) {
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
index 932e4dfbaa..c7c5a28be3 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
@@ -134,8 +134,7 @@ public class DefaultPluginDependenciesResolver implements PluginDependenciesReso
                 pluginArtifact = pluginArtifact.setProperties(props);
             }
         } catch (ArtifactDescriptorException e) {
-            throw new PluginResolutionException(
-                    plugin, e.getResult().getExceptions(), logger.isDebugEnabled() ? e : null);
+            throw new PluginResolutionException(plugin, e.getResult().getExceptions(), e);
         }
 
         try {
@@ -143,8 +142,7 @@ public class DefaultPluginDependenciesResolver implements PluginDependenciesReso
             request.setTrace(trace);
             pluginArtifact = repoSystem.resolveArtifact(session, request).getArtifact();
         } catch (ArtifactResolutionException e) {
-            throw new PluginResolutionException(
-                    plugin, e.getResult().getExceptions(), logger.isDebugEnabled() ? e : null);
+            throw new PluginResolutionException(plugin, e.getResult().getExceptions(), e);
         }
 
         return pluginArtifact;
@@ -233,8 +231,7 @@ public class DefaultPluginDependenciesResolver implements PluginDependenciesReso
             depRequest.setRoot(node);
             return repoSystem.resolveDependencies(session, depRequest);
         } catch (DependencyCollectionException e) {
-            throw new PluginResolutionException(
-                    plugin, e.getResult().getExceptions(), logger.isDebugEnabled() ? e : null);
+            throw new PluginResolutionException(plugin, e.getResult().getExceptions(), e);
         } catch (DependencyResolutionException e) {
             List<Exception> exceptions = Stream.concat(
                             e.getResult().getCollectExceptions().stream(),
@@ -242,7 +239,7 @@ public class DefaultPluginDependenciesResolver implements PluginDependenciesReso
                                     .filter(r -> !r.isResolved())
                                     .flatMap(r -> r.getExceptions().stream()))
                     .collect(Collectors.toList());
-            throw new PluginResolutionException(plugin, exceptions, logger.isDebugEnabled() ? e : null);
+            throw new PluginResolutionException(plugin, exceptions, e);
         }
     }
 }
diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
index 54c1762da9..f814a32136 100644
--- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
+++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectDependenciesResolver.java
@@ -160,9 +160,7 @@ public class DefaultProjectDependenciesResolver implements ProjectDependenciesRe
             result.setCollectionErrors(e.getResult().getExceptions());
 
             throw new DependencyResolutionException(
-                    result,
-                    "Could not collect dependencies for project " + project.getId(),
-                    logger.isDebugEnabled() ? e : null);
+                    result, "Could not collect dependencies for project " + project.getId(), e);
         }
 
         depRequest.setRoot(node);
@@ -192,9 +190,7 @@ public class DefaultProjectDependenciesResolver implements ProjectDependenciesRe
             process(result, e.getResult().getArtifactResults());
 
             throw new DependencyResolutionException(
-                    result,
-                    "Could not resolve dependencies for project " + project.getId(),
-                    logger.isDebugEnabled() ? e : null);
+                    result, "Could not resolve dependencies for project " + project.getId(), e);
         }
 
         return result;