You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2022/11/08 09:14:22 UTC
[maven-resolver] branch master updated: [MRESOLVER-286] Improve basic connector closed state handling (#215)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new 76ee5e30 [MRESOLVER-286] Improve basic connector closed state handling (#215)
76ee5e30 is described below
commit 76ee5e307734e4b864dc241b0a7ae4538c244880
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Tue Nov 8 10:14:16 2022 +0100
[MRESOLVER-286] Improve basic connector closed state handling (#215)
Basic connector was last that handled closed state in a bit "wonky" way, rework to use it AtomicBoolean as everything else in resolver.
---
https://issues.apache.org/jira/browse/MRESOLVER-286
---
.../connector/basic/BasicRepositoryConnector.java | 25 ++++++++++++----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
index e292de33..5f25e703 100644
--- a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
+++ b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java
@@ -36,6 +36,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.eclipse.aether.ConfigurationProperties;
import org.eclipse.aether.RepositorySystemSession;
@@ -113,7 +114,7 @@ final class BasicRepositoryConnector
private Executor executor;
- private boolean closed;
+ private final AtomicBoolean closed;
BasicRepositoryConnector( RepositorySystemSession session,
RemoteRepository repository,
@@ -146,6 +147,7 @@ final class BasicRepositoryConnector
this.repository = repository;
this.fileProcessor = fileProcessor;
this.providedChecksumsSources = providedChecksumsSources;
+ this.closed = new AtomicBoolean( false );
maxThreads = ConfigUtils.getInteger( session, 5, CONFIG_PROP_THREADS, "maven.artifact.threads" );
smartChecksums = ConfigUtils.getBoolean( session, true, CONFIG_PROP_SMART_CHECKSUMS );
@@ -205,9 +207,8 @@ final class BasicRepositoryConnector
@Override
public void close()
{
- if ( !closed )
+ if ( closed.compareAndSet( false, true ) )
{
- closed = true;
if ( executor instanceof ExecutorService )
{
( (ExecutorService) executor ).shutdown();
@@ -216,14 +217,19 @@ final class BasicRepositoryConnector
}
}
+ private void failIfClosed()
+ {
+ if ( closed.get() )
+ {
+ throw new IllegalStateException( "connector already closed" );
+ }
+ }
+
@Override
public void get( Collection<? extends ArtifactDownload> artifactDownloads,
Collection<? extends MetadataDownload> metadataDownloads )
{
- if ( closed )
- {
- throw new IllegalStateException( "connector closed" );
- }
+ failIfClosed();
Executor executor = getExecutor( artifactDownloads, metadataDownloads );
RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
@@ -297,10 +303,7 @@ final class BasicRepositoryConnector
public void put( Collection<? extends ArtifactUpload> artifactUploads,
Collection<? extends MetadataUpload> metadataUploads )
{
- if ( closed )
- {
- throw new IllegalStateException( "connector closed" );
- }
+ failIfClosed();
for ( ArtifactUpload transfer : safe( artifactUploads ) )
{