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 2021/05/28 08:44:06 UTC

[maven-resolver] branch MRESOLVER-184-alternate created (now 1302392)

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

cstamas pushed a change to branch MRESOLVER-184-alternate
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git.


      at 1302392  [MRESOLVER-184] Add destroy hook

This branch includes the following new commits:

     new 1302392  [MRESOLVER-184] Add destroy hook

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[maven-resolver] 01/01: [MRESOLVER-184] Add destroy hook

Posted by cs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cstamas pushed a commit to branch MRESOLVER-184-alternate
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git

commit 13023925f16a64aa5f299dd829862e0846c117c6
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Fri May 28 10:43:15 2021 +0200

    [MRESOLVER-184] Add destroy hook
    
    And use this hook in Hz and Redisson implemenetations. Drop redundant
    code from HZ as well.
---
 .../HazelcastSemaphoreNamedLockFactory.java        | 35 ++++++++++------------
 .../RedissonSemaphoreNamedLockFactory.java         | 12 ++++++--
 .../named/support/NamedLockFactorySupport.java     |  4 +--
 .../aether/named/support/NamedLockSupport.java     |  8 +++++
 4 files changed, 35 insertions(+), 24 deletions(-)

diff --git a/maven-resolver-named-locks-hazelcast/src/main/java/org/eclipse/aether/named/hazelcast/HazelcastSemaphoreNamedLockFactory.java b/maven-resolver-named-locks-hazelcast/src/main/java/org/eclipse/aether/named/hazelcast/HazelcastSemaphoreNamedLockFactory.java
index cd2336b..11832b9 100644
--- a/maven-resolver-named-locks-hazelcast/src/main/java/org/eclipse/aether/named/hazelcast/HazelcastSemaphoreNamedLockFactory.java
+++ b/maven-resolver-named-locks-hazelcast/src/main/java/org/eclipse/aether/named/hazelcast/HazelcastSemaphoreNamedLockFactory.java
@@ -26,8 +26,6 @@ import org.eclipse.aether.named.support.AdaptedSemaphoreNamedLock.AdaptedSemapho
 import org.eclipse.aether.named.support.NamedLockFactorySupport;
 import org.eclipse.aether.named.support.NamedLockSupport;
 
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
 import java.util.function.BiFunction;
 
@@ -48,8 +46,6 @@ public class HazelcastSemaphoreNamedLockFactory
 
     private final boolean manageHazelcast;
 
-    private final ConcurrentMap<String, ISemaphore> semaphores;
-
     public HazelcastSemaphoreNamedLockFactory(
         final HazelcastInstance hazelcastInstance,
         final BiFunction<HazelcastInstance, String, ISemaphore> semaphoreFunction,
@@ -61,16 +57,27 @@ public class HazelcastSemaphoreNamedLockFactory
         this.semaphoreFunction = semaphoreFunction;
         this.destroySemaphore = destroySemaphore;
         this.manageHazelcast = manageHazelcast;
-        this.semaphores = new ConcurrentHashMap<>();
     }
 
     @Override
     protected NamedLockSupport createLock( final String name )
     {
-        ISemaphore semaphore = semaphores.computeIfAbsent(
-                name, k -> semaphoreFunction.apply( hazelcastInstance, k )
-        );
-        return new AdaptedSemaphoreNamedLock( name, this, new HazelcastSemaphore( semaphore ) );
+        ISemaphore semaphore = semaphoreFunction.apply( hazelcastInstance, name );
+        if ( destroySemaphore )
+        {
+            return new AdaptedSemaphoreNamedLock( name, this, new HazelcastSemaphore( semaphore ) )
+            {
+                @Override
+                public void destroy()
+                {
+                    semaphore.destroy();
+                }
+            };
+        }
+        else
+        {
+            return new AdaptedSemaphoreNamedLock( name, this, new HazelcastSemaphore( semaphore ) );
+        }
     }
 
     @Override
@@ -82,16 +89,6 @@ public class HazelcastSemaphoreNamedLockFactory
         }
     }
 
-    @Override
-    protected void destroyLock( final NamedLockSupport lock )
-    {
-        ISemaphore semaphore = semaphores.remove( lock.name() );
-        if ( destroySemaphore )
-        {
-            semaphore.destroy();
-        }
-    }
-
     private static final class HazelcastSemaphore implements AdaptedSemaphore
     {
         private final ISemaphore semaphore;
diff --git a/maven-resolver-named-locks-redisson/src/main/java/org/eclipse/aether/named/redisson/RedissonSemaphoreNamedLockFactory.java b/maven-resolver-named-locks-redisson/src/main/java/org/eclipse/aether/named/redisson/RedissonSemaphoreNamedLockFactory.java
index bef84cc..5f2207e 100644
--- a/maven-resolver-named-locks-redisson/src/main/java/org/eclipse/aether/named/redisson/RedissonSemaphoreNamedLockFactory.java
+++ b/maven-resolver-named-locks-redisson/src/main/java/org/eclipse/aether/named/redisson/RedissonSemaphoreNamedLockFactory.java
@@ -40,9 +40,15 @@ public class RedissonSemaphoreNamedLockFactory
     @Override
     protected NamedLockSupport createLock( final String name )
     {
-        return new AdaptedSemaphoreNamedLock(
-                   name, this, new RedissonSemaphore( redissonClient.getSemaphore( NAME_PREFIX + name ) )
-    );
+        RSemaphore semaphore = redissonClient.getSemaphore( NAME_PREFIX + name );
+        return new AdaptedSemaphoreNamedLock( name, this, new RedissonSemaphore( semaphore ) )
+        {
+            @Override
+            public void destroy()
+            {
+                semaphore.delete();
+            }
+        };
     }
 
     private static final class RedissonSemaphore implements AdaptedSemaphoreNamedLock.AdaptedSemaphore
diff --git a/maven-resolver-named-locks/src/main/java/org/eclipse/aether/named/support/NamedLockFactorySupport.java b/maven-resolver-named-locks/src/main/java/org/eclipse/aether/named/support/NamedLockFactorySupport.java
index ef5a402..c8e3963 100644
--- a/maven-resolver-named-locks/src/main/java/org/eclipse/aether/named/support/NamedLockFactorySupport.java
+++ b/maven-resolver-named-locks/src/main/java/org/eclipse/aether/named/support/NamedLockFactorySupport.java
@@ -98,9 +98,9 @@ public abstract class NamedLockFactorySupport implements NamedLockFactory
 
     protected abstract NamedLockSupport createLock( final String name );
 
-    protected void destroyLock( final NamedLockSupport lock )
+    private void destroyLock( final NamedLockSupport lock )
     {
-        // override if needed
+        lock.destroy();
     }
 
     private static final class NamedLockHolder
diff --git a/maven-resolver-named-locks/src/main/java/org/eclipse/aether/named/support/NamedLockSupport.java b/maven-resolver-named-locks/src/main/java/org/eclipse/aether/named/support/NamedLockSupport.java
index 02f9960..edbe4a4 100644
--- a/maven-resolver-named-locks/src/main/java/org/eclipse/aether/named/support/NamedLockSupport.java
+++ b/maven-resolver-named-locks/src/main/java/org/eclipse/aether/named/support/NamedLockSupport.java
@@ -51,4 +51,12 @@ public abstract class NamedLockSupport implements NamedLock
     {
         factory.closeLock( this );
     }
+
+    /**
+     * Some implementations may need to perform some action when the lock is about to be destroyed.
+     */
+    public void destroy()
+    {
+        // override if needed
+    }
 }