public final class VerifyingLockFactory extends LockFactory
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.LockVerifyServer
,
LockStressTest
Modifier and Type | Class and Description |
---|---|
private class |
VerifyingLockFactory.CheckedLock |
Modifier and Type | Field and Description |
---|---|
(package private) java.io.InputStream |
in |
(package private) LockFactory |
lf |
(package private) java.io.OutputStream |
out |
Constructor and Description |
---|
VerifyingLockFactory(LockFactory lf,
java.io.InputStream in,
java.io.OutputStream out) |
Modifier and Type | Method and Description |
---|---|
Lock |
obtainLock(Directory dir,
java.lang.String lockName)
Return a new obtained Lock instance identified by lockName.
|
final LockFactory lf
final java.io.InputStream in
final java.io.OutputStream out
public VerifyingLockFactory(LockFactory lf, java.io.InputStream in, java.io.OutputStream out) throws java.io.IOException
lf
- the LockFactory that we are testingin
- the socket's input to LockVerifyServer
out
- the socket's output to LockVerifyServer
java.io.IOException
public Lock obtainLock(Directory dir, java.lang.String lockName) throws java.io.IOException
LockFactory
obtainLock
in class LockFactory
lockName
- name of the lock to be created.LockObtainFailedException
- (optional specific exception) if the lock could
not be obtained because it is currently held elsewhere.java.io.IOException
- if any i/o error occurs attempting to gain the lock