Class FileLockNamedLockFactory

  • All Implemented Interfaces:
    NamedLockFactory

    @Singleton
    @Named("file-lock")
    public class FileLockNamedLockFactory
    extends NamedLockFactorySupport
    Named locks factory of FileLockNamedLocks. This is a bit special implementation, as it expects locks names to be fully qualified absolute file system paths.
    Since:
    1.7.3
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static int ATTEMPTS
      Tweak: on Windows, the presence of StandardOpenOption.DELETE_ON_CLOSE causes concurrency issues.
      private static boolean DELETE_LOCK_FILES
      Tweak: on Windows, the presence of StandardOpenOption.DELETE_ON_CLOSE causes concurrency issues.
      private java.util.concurrent.ConcurrentMap<java.lang.String,​java.nio.channels.FileChannel> fileChannels  
      static java.lang.String NAME  
      private static long SLEEP_MILLIS
      Tweak: When ATTEMPTS used, the amount of milliseconds to sleep between subsequent retries.
    • Field Detail

      • DELETE_LOCK_FILES

        private static final boolean DELETE_LOCK_FILES
        Tweak: on Windows, the presence of StandardOpenOption.DELETE_ON_CLOSE causes concurrency issues. This flag allows to have it removed from effective flags, at the cost that lockfile directory becomes crowded with 0 byte sized lock files that are never cleaned up. Default value is true.
        See Also:
        JDK-8252883
      • ATTEMPTS

        private static final int ATTEMPTS
        Tweak: on Windows, the presence of StandardOpenOption.DELETE_ON_CLOSE causes concurrency issues. This flag allows to implement similar fix as referenced JDK bug report: retry and hope the best. Default value is 5 attempts (will retry 4 times).
        See Also:
        JDK-8252883
      • SLEEP_MILLIS

        private static final long SLEEP_MILLIS
        Tweak: When ATTEMPTS used, the amount of milliseconds to sleep between subsequent retries. Default value is 50 milliseconds.
      • fileChannels

        private final java.util.concurrent.ConcurrentMap<java.lang.String,​java.nio.channels.FileChannel> fileChannels
    • Constructor Detail

      • FileLockNamedLockFactory

        public FileLockNamedLockFactory()