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 LockVerifyServerout - the socket's output to LockVerifyServerjava.io.IOExceptionpublic Lock obtainLock(Directory dir, java.lang.String lockName) throws java.io.IOException
LockFactoryobtainLock in class LockFactorylockName - 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