org.apache.lucene.store

## Class VerifyingLockFactory

- java.lang.Object
- - org.apache.lucene.store.LockFactory
  - - org.apache.lucene.store.VerifyingLockFactory

    public final class VerifyingLockFactory
    extends LockFactory

A `LockFactory` that wraps another `LockFactory` and verifies that each lock obtain/release is "correct" (never results in two processes holding the lock at the same time). It does this by contacting an external server (`LockVerifyServer`) to assert that at most one process holds the lock at a time. To use this, you should also run `LockVerifyServer` on the host and port matching what you pass to the constructor.

See Also:
  `LockVerifyServer`, `LockStressTest`

### Constructor Summary

Constructors
Constructor and Description
`VerifyingLockFactory(LockFactory lf, InputStream in, OutputStream out)`

### Method Summary

All Methods Instance Methods Concrete Methods
`Lock` `obtainLock(Directory dir, String lockName)` Return a new obtained Lock instance identified by lockName.

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

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

### Constructor Detail

#### VerifyingLockFactory

    public VerifyingLockFactory(LockFactory lf,
                                InputStream in,
                                OutputStream out)
                         throws IOException

Parameters:
  `lf` - the LockFactory that we are testing
  `in` - the socket's input to `LockVerifyServer`
  `out` - the socket's output to `LockVerifyServer`
Throws:
  `IOException`

### Method Detail

#### obtainLock

    public Lock obtainLock(Directory dir,
                           String lockName)
                    throws IOException

Description copied from class: `LockFactory`
Return a new obtained Lock instance identified by lockName.

Specified by:
  `obtainLock` in class `LockFactory`
  `lockName` - name of the lock to be created.
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