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
+ }
}