Class 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
      (package private) java.io.InputStream in  
      (package private) LockFactory lf  
      (package private) java.io.OutputStream out  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Lock obtainLock​(Directory dir, java.lang.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 Detail

      • in

        final java.io.InputStream in
      • out

        final java.io.OutputStream out
    • Constructor Detail

      • VerifyingLockFactory

        public VerifyingLockFactory​(LockFactory lf,
                                    java.io.InputStream in,
                                    java.io.OutputStream out)
                             throws java.io.IOException
        Parameters:
        lf - the LockFactory that we are testing
        in - the socket's input to LockVerifyServer
        out - the socket's output to LockVerifyServer
        Throws:
        java.io.IOException
    • Method Detail

      • obtainLock

        public Lock obtainLock​(Directory dir,
                               java.lang.String lockName)
                        throws java.io.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.
        java.io.IOException - if any i/o error occurs attempting to gain the lock