private void removeInvalidLock(File lockDir) { try { boolean revokeLock = false; File lockedFile = new File(lockDir, LOCK_FILE_NAME); RandomAccessFile raf = new RandomAccessFile(lockedFile, "rw"); try { FileLock fileLock = raf.getChannel().tryLock(); if (fileLock != null) { logger.warn("Removing invalid lock {}", getLockedBy()); fileLock.release(); revokeLock = true; } } catch (OverlappingFileLockException exc) { // lock is still valid } finally { raf.close(); } if (revokeLock) { revokeLock(); } } catch (IOException e) { logger.warn(e.toString(), e); } }
private void removeInvalidLock(File lockDir) { try { boolean revokeLock = false; File lockedFile = new File(lockDir, LOCK_FILE_NAME); RandomAccessFile raf = new RandomAccessFile(lockedFile, "rw"); try { FileLock fileLock = raf.getChannel().tryLock(); if (fileLock != null) { logger.warn("Removing invalid lock {}", getLockedBy()); fileLock.release(); revokeLock = true; } } catch (OverlappingFileLockException exc) { // lock is still valid } finally { raf.close(); } if (revokeLock) { revokeLock(); } } catch (IOException e) { logger.warn(e.toString(), e); } }
/** * Creates a lock in a directory if it does not yet exist. * * @return a newly acquired lock. * @throws SailLockedException * if the directory is already locked. */ @Override public Lock lockOrFail() throws SailLockedException { Lock lock = tryLock(); if (lock != null) { return lock; } String requestedBy = getProcessName(); String lockedBy = getLockedBy(); if (lockedBy != null) { throw new SailLockedException(lockedBy, requestedBy, this); } lock = tryLock(); if (lock != null) { return lock; } throw new SailLockedException(requestedBy); }
/** * Creates a lock in a directory if it does not yet exist. * * @return a newly acquired lock. * @throws SailLockedException * if the directory is already locked. */ @Override public Lock lockOrFail() throws SailLockedException { Lock lock = tryLock(); if (lock != null) { return lock; } String requestedBy = getProcessName(); String lockedBy = getLockedBy(); if (lockedBy != null) { throw new SailLockedException(lockedBy, requestedBy, this); } lock = tryLock(); if (lock != null) { return lock; } throw new SailLockedException(requestedBy); }