Package org.apache.lucene.store

## Class SleepingLockWrapper

- java.lang.Object
- - org.apache.lucene.store.Directory
  - - org.apache.lucene.store.FilterDirectory
    - - org.apache.lucene.store.SleepingLockWrapper

- All Implemented Interfaces:
    `Closeable`, `AutoCloseable`

      public final class SleepingLockWrapper
      extends FilterDirectory

  Directory that wraps another, and that sleeps and retries if obtaining the lock fails.

  This is not a good idea.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static long` | `DEFAULT_POLL_INTERVAL` | How long `obtainLock(java.lang.String)` waits, in milliseconds, in between attempts to acquire the lock.
    `static long` | `LOCK_OBTAIN_WAIT_FOREVER` | Pass this lockWaitTimeout to try forever to obtain the lock.

    - ### Fields inherited from class org.apache.lucene.store.FilterDirectory

      `in`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SleepingLockWrapper​(Directory delegate, long lockWaitTimeout)` | Create a new SleepingLockFactory
    `SleepingLockWrapper​(Directory delegate, long lockWaitTimeout, long pollInterval)` | Create a new SleepingLockFactory

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Lock` | `obtainLock​(String lockName)` | Acquires and returns a `Lock` for a file with the given name.
    `String` | `toString()` |

    - ### Methods inherited from class org.apache.lucene.store.FilterDirectory

      `close, createOutput, createTempOutput, deleteFile, ensureOpen, fileLength, getDelegate, getPendingDeletions, listAll, openInput, rename, sync, syncMetaData, unwrap`

    - ### Methods inherited from class org.apache.lucene.store.Directory

      `copyFrom, getTempFileName, openChecksumInput`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### LOCK_OBTAIN_WAIT_FOREVER

          public static final long LOCK_OBTAIN_WAIT_FOREVER

      Pass this lockWaitTimeout to try forever to obtain the lock.
      See Also:
        Constant Field Values

    - #### DEFAULT_POLL_INTERVAL

          public static long DEFAULT_POLL_INTERVAL

      How long `obtainLock(java.lang.String)` waits, in milliseconds, in between attempts to acquire the lock.

  - ### Constructor Detail

    - #### SleepingLockWrapper

          public SleepingLockWrapper​(Directory delegate,
                                     long lockWaitTimeout)

      Create a new SleepingLockFactory
      Parameters:
        `delegate` - underlying directory to wrap
        `lockWaitTimeout` - length of time to wait in milliseconds or `LOCK_OBTAIN_WAIT_FOREVER` to retry forever.

    - #### SleepingLockWrapper

          public SleepingLockWrapper​(Directory delegate,
                                     long lockWaitTimeout,
                                     long pollInterval)

      Create a new SleepingLockFactory
      Parameters:
        `delegate` - underlying directory to wrap
        `lockWaitTimeout` - length of time to wait in milliseconds or `LOCK_OBTAIN_WAIT_FOREVER` to retry forever.
        `pollInterval` - poll once per this interval in milliseconds until `lockWaitTimeout` is exceeded.

  - ### Method Detail

    - #### obtainLock

          public Lock obtainLock​(String lockName)
                          throws IOException

      Description copied from class: `Directory`
      Acquires and returns a `Lock` for a file with the given name.
      Overrides:
        `obtainLock` in class `FilterDirectory`
      Parameters:
        `lockName` - the name of the lock file
      Throws:
        `LockObtainFailedException` - (optional specific exception) if the lock could not be obtained because it is currently held elsewhere.
        `IOException` - if any i/o error occurs attempting to gain the lock

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `FilterDirectory`