mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
[aether-resolver] IJI-781 Add retries support to ArtifactRepositoryManager
(cherry picked from commit 8101f4a14c0745c61d7c604eb7478be887aa2e0c) IJ-MR-20326 GitOrigin-RevId: 93edea4f0d0c1d6c69fb01a1c73aa28370377db4
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6034e60ed0
commit
51687593f9
@@ -57,6 +57,7 @@ public final class ArtifactRepositoryManager {
|
||||
private static final JreProxySelector ourProxySelector = new JreProxySelector();
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ArtifactRepositoryManager.class);
|
||||
private final RepositorySystemSessionFactory mySessionFactory;
|
||||
private final Retry myRetry;
|
||||
|
||||
private static final RemoteRepository MAVEN_CENTRAL_REPOSITORY = createRemoteRepository(
|
||||
"central", "https://repo1.maven.org/maven2/"
|
||||
@@ -98,8 +99,19 @@ public final class ArtifactRepositoryManager {
|
||||
}
|
||||
|
||||
public ArtifactRepositoryManager(@NotNull File localRepositoryPath, List<RemoteRepository> remoteRepositories, @NotNull ProgressConsumer progressConsumer, boolean offline) {
|
||||
this(localRepositoryPath, remoteRepositories, progressConsumer, offline, RetryProvider.disabled());
|
||||
}
|
||||
|
||||
public ArtifactRepositoryManager(@NotNull File localRepositoryPath, List<RemoteRepository> remoteRepositories,
|
||||
@NotNull ProgressConsumer progressConsumer, @NotNull Retry retry) {
|
||||
this(localRepositoryPath, remoteRepositories, progressConsumer, false, retry);
|
||||
}
|
||||
|
||||
public ArtifactRepositoryManager(@NotNull File localRepositoryPath, List<RemoteRepository> remoteRepositories,
|
||||
@NotNull ProgressConsumer progressConsumer, boolean offline, @NotNull Retry retry) {
|
||||
myRemoteRepositories.addAll(remoteRepositories);
|
||||
mySessionFactory = new RepositorySystemSessionFactory(localRepositoryPath, progressConsumer, offline);
|
||||
myRetry = retry;
|
||||
}
|
||||
|
||||
private static class RepositorySystemSessionFactory {
|
||||
@@ -254,7 +266,7 @@ public final class ArtifactRepositoryManager {
|
||||
Set<VersionConstraint> constraints = Collections.singleton(asVersionConstraint(versionConstraint));
|
||||
CollectRequest collectRequest = createCollectRequest(groupId, artifactId, constraints, EnumSet.of(ArtifactKind.ARTIFACT));
|
||||
ArtifactDependencyTreeBuilder builder = new ArtifactDependencyTreeBuilder();
|
||||
DependencyNode root = ourSystem.collectDependencies(mySessionFactory.createVerboseSession(), collectRequest).getRoot();
|
||||
DependencyNode root = myRetry.retry(() -> ourSystem.collectDependencies(mySessionFactory.createVerboseSession(), collectRequest), LOG).getRoot();
|
||||
if (root.getArtifact() == null && root.getChildren().size() == 1) {
|
||||
root = root.getChildren().get(0);
|
||||
}
|
||||
@@ -282,9 +294,9 @@ public final class ArtifactRepositoryManager {
|
||||
RepositorySystemSession session;
|
||||
if (includeTransitiveDependencies) {
|
||||
session = mySessionFactory.createSession(excludedDependencies);
|
||||
final CollectResult collectResult = ourSystem.collectDependencies(
|
||||
final CollectResult collectResult = myRetry.retry(() -> ourSystem.collectDependencies(
|
||||
session, createCollectRequest(groupId, artifactId, constraints, EnumSet.of(kind))
|
||||
);
|
||||
), LOG);
|
||||
final ArtifactRequestBuilder builder = new ArtifactRequestBuilder(kind);
|
||||
DependencyFilter filter = createScopeFilter();
|
||||
if (!excludedDependencies.isEmpty()) {
|
||||
@@ -313,7 +325,8 @@ public final class ArtifactRepositoryManager {
|
||||
|
||||
if (!requests.isEmpty()) {
|
||||
try {
|
||||
for (ArtifactResult result : ourSystem.resolveArtifacts(session, requests)) {
|
||||
List<ArtifactResult> resultList = myRetry.retry(() -> ourSystem.resolveArtifacts(session, requests), LOG);
|
||||
for (ArtifactResult result : resultList) {
|
||||
artifacts.add(result.getArtifact());
|
||||
}
|
||||
}
|
||||
@@ -323,7 +336,7 @@ public final class ArtifactRepositoryManager {
|
||||
if (requests.size() > 1) {
|
||||
for (ArtifactRequest request : requests) {
|
||||
try {
|
||||
final ArtifactResult result = ourSystem.resolveArtifact(session, request);
|
||||
final ArtifactResult result = myRetry.retry(() -> ourSystem.resolveArtifact(session, request), LOG);
|
||||
artifacts.add(result.getArtifact());
|
||||
}
|
||||
catch (ArtifactResolutionException ignored) {
|
||||
|
||||
Reference in New Issue
Block a user