/** * {@inheritDoc} */ @Override public synchronized void deleteOrReleaseReadLock(String name) { getLocalLockByName(name).release(); }
@Override public void run() { try { int counter = 0; while (testFailed.get() == false) { locker.acquireReadLock("fileName"); Thread.sleep(2); locker.deleteOrReleaseReadLock("fileName"); // Take a break every now and a again to try and avoid the same LocalReadLock being used constantly if (counter++ % 900 == 0) { System.out.print("."); Thread.sleep(7); } if (metadata.get(new FileCacheKey("indexName", "fileName", -1)) == null) { //Shouldn't have been deleted! testFailed.set(true); System.out.print("X"); } } } catch (InterruptedException e) { Thread.currentThread().interrupt(); return; } } };
@Override Directory createDirectory(Cache cache) { return DirectoryBuilder.newDirectoryInstance(cache, cache, cache, INDEX_NAME) .chunkSize(CHUNK_SIZE) .overrideSegmentReadLocker(new LocalLockMergingSegmentReadLocker(cache, INDEX_NAME, -1)) .overrideSegmentReadLocker(new LocalLockMergingSegmentReadLocker(cache, cache, cache, INDEX_NAME, true, -1)) .create(); }
Directory createAdditionalDirectory(Cache cache) { return DirectoryBuilder.newDirectoryInstance(cache, cache, cache, INDEX_NAME) .chunkSize(CHUNK_SIZE) .overrideSegmentReadLocker(new LocalLockMergingSegmentReadLocker(cache, cache, cache, INDEX_NAME, -1)) .overrideSegmentReadLocker(new LocalLockMergingSegmentReadLocker(cache, cache, cache, INDEX_NAME, true, 1)) .create(); }
/** * {@inheritDoc} */ @Override public void deleteOrReleaseReadLock(String name) { getLocalLockByName(name).release(); }
fileMetadata.setSize(11); // Make it chunked otherwise no read lock will involved metadata.put(new FileCacheKey("indexName", "fileName", -1), fileMetadata); final LocalLockMergingSegmentReadLocker locker = new LocalLockMergingSegmentReadLocker(locks, chunks, metadata, "indexName", -1); final AtomicBoolean testFailed = new AtomicBoolean(false); final ExecutorService exec = Executors.newFixedThreadPool(NUM_THREADS);
/** * {@inheritDoc} */ @Override public synchronized void deleteOrReleaseReadLock(String name) { getLocalLockByName(name).release(); }
/** * {@inheritDoc} */ @Override public synchronized boolean acquireReadLock(String name) { LocalReadLock localReadLock = getLocalLockByName(name); boolean acquired = localReadLock.acquire(); if (acquired) { return true; } else { // cleanup localLocks.remove(name); return false; } }
/** * {@inheritDoc} */ @Override public synchronized boolean acquireReadLock(String name) { LocalReadLock localReadLock = getLocalLockByName(name); boolean acquired = localReadLock.acquire(); if (acquired) { return true; } else { // cleanup localLocks.remove(name); return false; } }
/** * {@inheritDoc} */ @Override public boolean acquireReadLock(String name) { LocalReadLock localReadLock = getLocalLockByName(name); boolean acquired = localReadLock.acquire(); if (acquired) { return true; } else { // cleanup localLocks.remove(name); return false; } }