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 5b6c319a [MRESOLVER-278] Session close and onClose hooks fix (#207)
5b6c319a is described below

commit 5b6c319ad5dc9d11cf3f0d062bb07dacd63f47d0
Author: Tamas Cservenak <[email protected]>
AuthorDate: Wed Oct 26 14:33:36 2022 +0200

    [MRESOLVER-278] Session close and onClose hooks fix (#207)
    
    There are valid cases in Maven when interaction with
    resolver (that would "lazily" init SyncContext) happens
    way late, when session is already done readOnly.
    
    Fix: adding onCloseHandler should NOT be affected by
    readOnly state of session, as it merely means it's members
    like LRM, etc are "fixed", but session data etc are all
    still mutable.
    
    This change makes all Maven ITs pass with this resolver.
---
 .../java/org/eclipse/aether/DefaultRepositorySystemSession.java  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git 
a/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
 
b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
index 4450487f..7ed9313a 100644
--- 
a/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
+++ 
b/maven-resolver-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java
@@ -816,9 +816,9 @@ public final class DefaultRepositorySystemSession
         {
             throw new IllegalStateException( "repository system session is 
read-only" );
         }
-        if ( isClosed() )
+        if ( closed.get() )
         {
-            throw new IllegalStateException( "repository system session is 
closed" );
+            throw new IllegalStateException( "repository system session is 
already closed" );
         }
     }
 
@@ -894,8 +894,11 @@ public final class DefaultRepositorySystemSession
     @Override
     public void addOnCloseHandler( Consumer<RepositorySystemSession> handler )
     {
-        verifyStateForMutation();
         requireNonNull( handler, "handler cannot be null" );
+        if ( closed.get() )
+        {
+            throw new IllegalStateException( "repository system session is 
already closed" );
+        }
         onCloseHandlers.add( 0, handler );
     }
 

Reply via email to