Named Locks using Redisson

This module implement named locks using Redisson. It provides two implementations, that are distributed and rely on Redisson distributed objects feature.

Out of the box “redisson” (distributed) named lock implementations are following:

  • rwlock-redisson implemented in org.eclipse.aether.named.redisson.RedissonReadWriteLockNamedLockFactory that uses Redisson backed org.redisson.api.RReadWriteLock.
  • semaphore-redisson implemented in org.eclipse.aether.named.redisson.RedissonSemaphoreNamedLockFactory that uses Redisson backed org.redisson.api.RSemaphore.

Open Issues/Notes

  • It only works when Sisu DI is used and not the bundled AetherModule or ServiceLocator (Maven uses Sisu dependency injection).
  • Usage from plugins has not been tested yet.
  • The furnace-maven-plugin does not work this implementation because it uses ServiceLocator instead of dependency injection.

Installation/Testing

  • Create the directory ${maven.home}/lib/ext/redisson/.
  • Modify ${maven.home}/bin/m2.conf by adding load ${maven.home}/lib/ext/redisson/*.jar right after the ${maven.conf}/logging line.
  • Copy the following dependencies from Maven Central to ${maven.home}/lib/ext/redisson/:
  ├── jackson-annotations-2.12.1.jar
  ├── jackson-core-2.12.1.jar
  ├── jackson-databind-2.12.1.jar
  ├── jackson-dataformat-yaml-2.12.1.jar
  ├── netty-buffer-4.1.60.Final.jar
  ├── netty-codec-dns-4.1.60.Final.jar
  ├── netty-codec-4.1.60.Final.jar
  ├── netty-common-4.1.60.Final.jar
  ├── netty-handler-4.1.60.Final.jar
  ├── netty-resolver-dns-4.1.60.Final.jar
  ├── netty-resolver-4.1.60.Final.jar
  ├── netty-transport-4.1.60.Final.jar
  ├── reactor-core-3.4.2.jar
  ├── rxjava-3.0.10.jar
  ├── cache-api-1.0.0.jar
  ├── byte-buddy-1.10.14.jar
  ├── maven-resolver-named-locks-redisson-1.7.0.jar
  ├── jboss-marshalling-river-2.0.11.Final.jar
  ├── jboss-marshalling-2.0.11.Final.jar
  ├── jodd-bean-5.1.6.jar
  ├── jodd-core-5.1.6.jar
  ├── reactive-streams-1.0.3.jar
  ├── redisson-3.15.3.jar
  ├── snakeyaml-1.27.jar
  • Start your Redis instance on localhost or configure a remote instance with ${maven.conf}/maven-resolver-redisson.yaml.
  • Now start a multithreaded Maven build on your project and make sure NamedSyncContextFactory is being used.