Package 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`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`MSG_LOCK_ACQUIRED`
`static final int`
`MSG_LOCK_RELEASED`

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`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`

## Field Details

### MSG_LOCK_RELEASED

public static final int MSG_LOCK_RELEASED

See Also:
  - Constant Field Values

### MSG_LOCK_ACQUIRED

public static final int MSG_LOCK_ACQUIRED

See Also:
  - Constant Field Values

## Constructor Details

### 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 Details

### 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`
Parameters:
  `lockName` - name of the lock to be created.
Throws:
  `IOException` - if any i/o error occurs attempting to gain the lock