Package com.caucho.db.lock

Examples of com.caucho.db.lock.Lock


  private void releaseLocks()
  {
    // need to unlock write before upgrade to block other threads
    if (_writeLocks != null) {
      for (int i = 0; i < _writeLocks.size(); i++) {
        Lock lock = _writeLocks.get(i);

        if (_readLocks != null)
          _readLocks.remove(lock);

        try {
          lock.unlockReadAndWrite();
        } catch (Throwable e) {
          log.log(Level.WARNING, e.toString(), e);
        }
      }

      _writeLocks.clear();
    }
   
    if (_readLocks != null) {
      for (int i = 0; i < _readLocks.size(); i++) {
        Lock lock = _readLocks.get(i);

        try {
          lock.unlockRead();
        } catch (Throwable e) {
          log.log(Level.WARNING, e.toString(), e);
        }
      }
View Full Code Here


    _readWrite = new BlockReadWrite(this, path);
   
    _writer = new BlockWriter(this);

    if (rowLock == null)
      rowLock = new Lock("row-lock:" + _name + ":" + _id);

    _rowLock = rowLock;
  }
View Full Code Here

    }

    Block block = readBlock(blockId);

    try {
      Lock lock = block.getLock();
      lock.lockRead(_blockLockTimeout);

      try {
        byte []blockBuffer = block.getBuffer();

        os.write(blockBuffer, blockOffset, length);
      } finally {
        lock.unlockRead();
      }
    } finally {
      block.free();
    }
  }
View Full Code Here

    }

    Block block = readBlock(addressToBlockId(blockAddress));

    try {
      Lock lock = block.getLock();
      lock.lockRead(_blockLockTimeout);

      try {
        byte []blockBuffer = block.getBuffer();

        System.arraycopy(blockBuffer, blockOffset,
                         buffer, offset, length);

        return length;
      } finally {
        lock.unlockRead();
      }
    } finally {
      block.free();
    }
  }
View Full Code Here

    _store = store;
    _blockId = blockId;

    // _lock = new Lock("block:" + store.getName() + ":" + Long.toHexString(_blockId));
    _lock = new Lock("block-lock");

    _isFlushDirtyOnCommit = _store.isFlushDirtyBlocksOnCommit();

    _buffer = allocateBuffer();
   
View Full Code Here

    }

    Block block = readBlock(addressToBlockId(blockAddress));

    try {
      Lock lock = block.getLock();
      lock.lockRead(_blockLockTimeout);

      try {
        byte []blockBuffer = block.getBuffer();

        for (int i = 0; i < length; i++) {
          int ch1 = blockBuffer[blockOffset] & 0xff;
          int ch2 = blockBuffer[blockOffset + 1] & 0xff;

          buffer[offset + i] = (char) ((ch1 << 8) + ch2);

          blockOffset += 2;
        }

        return length;
      } finally {
        lock.unlockRead();
      }
    } finally {
      block.free();
    }
  }
View Full Code Here

    throws IOException
  {
    Block block = readBlock(addressToBlockId(blockAddress));

    try {
      Lock lock = block.getLock();
      lock.lockRead(_blockLockTimeout);

      try {
        byte []blockBuffer = block.getBuffer();

        return readLong(blockBuffer, offset);
      } finally {
        lock.unlockRead();
      }
    } finally {
      block.free();
    }
  }
View Full Code Here

                                             blockOffset, length));

    Block block = readBlock(addressToBlockId(blockAddress));

    try {
      Lock lock = block.getLock();
      lock.lockReadAndWrite(_blockLockTimeout);

      try {
        byte []blockBuffer = block.getBuffer();

        System.arraycopy(buffer, offset,
                         blockBuffer, blockOffset,
                         length);

        block.setDirty(blockOffset, blockOffset + length);
       
        return block;
      } finally {
        lock.unlockReadAndWrite();
      }
    } finally {
      block.free();
    }
  }
View Full Code Here

                                             blockOffset, length));

    Block block = readBlock(addressToBlockId(blockAddress));

    try {
      Lock lock = block.getLock();
      lock.lockReadAndWrite(_blockLockTimeout);

      try {
        byte []blockBuffer = block.getBuffer();

        int blockTail = blockOffset;

        for (int i = 0; i < charLength; i++) {
          char ch = buffer[offset + i];

          blockBuffer[blockTail] = (byte) (ch >> 8);
          blockBuffer[blockTail + 1] = (byte) (ch);

          blockTail += 2;
        }

        block.setDirty(blockOffset, blockTail);
       
        return block;
      } finally {
        lock.unlockReadAndWrite();
      }
    } finally {
      block.free();
    }
  }
View Full Code Here

    throws IOException
  {
    Block block = readBlock(addressToBlockId(blockAddress));

    try {
      Lock lock = block.getLock();
      lock.lockReadAndWrite(_blockLockTimeout);

      try {
        byte []blockBuffer = block.getBuffer();

        writeLong(blockBuffer, offset, value);

        block.setDirty(offset, offset + 8);
       
        return block;
      } finally {
        lock.unlockReadAndWrite();
      }
    } finally {
      block.free();
    }
  }
View Full Code Here

TOP

Related Classes of com.caucho.db.lock.Lock

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.