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;