public void testInterruptedCompaction() throws IOException { compactor.add(createSoplog(0, 100, 0)); compactor.add(createSoplog(100, 100, 1)); compactor.testAbortDuringCompaction = true; boolean compacted = compactor.compact(); assertFalse(compacted); assertEquals(2, compactor.getActiveReaders(null, null).size()); assertTrue(compactor.getLevel(0).needsCompaction()); }
public void testClear() throws IOException { compactor.add(createSoplog(0, 100, 0)); compactor.add(createSoplog(100, 100, 1)); compactor.clear(); assertEquals(0, compactor.getActiveReaders(null, null).size()); assertFalse(compactor.getLevel(0).needsCompaction()); }
public void testCloseDuringCompaction() throws Exception { compactor.add(createSoplog(0, 100, 0)); compactor.add(createSoplog(100, 100, 1)); compactor.testDelayDuringCompaction = new CountDownLatch(1); WaitingHandler wh = new WaitingHandler(); compactor.compact(false, wh); compactor.close(); boolean compacted = wh.waitForCompletion(); assertFalse(compacted); assertEquals(0, compactor.getActiveReaders(null, null).size()); }
public void testForceCompaction() throws Exception { compactor.add(createSoplog(0, 100, 0)); compactor.add(createSoplog(100, 100, 1)); boolean compacted = compactor.compact(); assertTrue(compacted); validate(compactor.getActiveReaders(null, null).iterator().next().get(), 0, 200); }
public void testClearDuringCompaction() throws Exception { compactor.add(createSoplog(0, 100, 0)); compactor.add(createSoplog(100, 100, 1)); compactor.testDelayDuringCompaction = new CountDownLatch(1); WaitingHandler wh = new WaitingHandler(); LogService.logger().fine("Invoking compact"); compactor.compact(false, wh); LogService.logger().fine("Invoking clear"); compactor.clear(); boolean compacted = wh.waitForCompletion(); assertFalse(compacted); assertEquals(0, compactor.getActiveReaders(null, null).size()); }
public void testMaxCompaction() throws Exception { for (int i = 0; i < 100; i += 2) { compactor.add(createSoplog(0, 100, i)); compactor.add(createSoplog(100, 100, i+1)); WaitingHandler wh = new WaitingHandler(); compactor.compact(false, wh); wh.waitForCompletion(); } WaitingHandler wh = new WaitingHandler(); compactor.compact(true, wh); wh.waitForCompletion(); }
try { if (!scan.hasNext()) { checkAbort(aborted); if (logger.fineEnabled()) { logger.fine(String.format("No entries left after compaction with readers %s ", readers)); try { while (scan.hasNext()) { checkAbort(aborted); scan.next(); if (!(collect && isDeleted(scan.value()))) { wtr.append(scan.key(), scan.value()); EnumMap<Metadata, byte[]> metadata = mergeMetadata(readers); wtr.close(metadata); return soplog;
final AtomicReference<Object> result = new AtomicReference<Object>(null); compact(true, new CompactionHandler() { @Override public void complete(boolean compacted) {
@Override public final void clear() throws IOException { if (logger.fineEnabled()) { logger.fine("Clearing compactor"); } compactor.abortAll(); releaseTestDelay(); compactor.waitForCompletion(); levelLock.writeLock().lock(); try { for (Level l : levels) { l.clear(); } } finally { levelLock.writeLock().unlock(); } cleanupInactive(); }
@Override public final void close() throws IOException { if (logger.fineEnabled()) { logger.fine("Closing compactor"); } compactor.abortAll(); releaseTestDelay(); compactor.waitForCompletion(); levelLock.writeLock().lock(); try { for (Level l : levels) { l.close(); } } finally { levelLock.writeLock().unlock(); } TrackedReference<SortedOplogReader> tr; while ((tr = inactive.poll()) != null) { deleteInactive(tr); } inactive.clear(); }
checkTestDelay(); if (force || level.needsCompaction()) { if (logger.fineEnabled()) { cleanupInactive(); if (ch != null) { if (logger.fineEnabled()) {
public void tearDown() throws Exception { compactor.close(); for (File f : SortedReaderTestCase.getSoplogsToDelete()) { f.delete(); } }
protected void cleanupInactive() throws IOException { for (Iterator<TrackedReference<SortedOplogReader>> iter = inactive.iterator(); iter.hasNext(); ) { TrackedReference<SortedOplogReader> tr = iter.next(); if (!tr.inUse() && inactive.remove(tr)) { deleteInactive(tr); } } }
public void testMultilevelCompaction() throws Exception { for (int i = 0; i < 8; i += 2) { compactor.add(createSoplog(0, 100, i)); compactor.add(createSoplog(100, 100, i+1)); WaitingHandler wh = new WaitingHandler(); compactor.compact(false, wh); wh.waitForCompletion(); } assertEquals(1, compactor.getActiveReaders(null, null).size()); validate(compactor.getActiveReaders(null, null).iterator().next().get(), 0, 200); }
public void testBasic() throws Exception { compactor.add(createSoplog(0, 100, 0)); assertEquals(1, compactor.getActiveReaders(null, null).size()); assertEquals(1, compactor.getLevel(0).getSnapshot().size()); assertFalse(compactor.getLevel(0).needsCompaction()); WaitingHandler wh = new WaitingHandler(); compactor.compact(false, wh); wh.waitForCompletion(); assertEquals(1, compactor.getActiveReaders(null, null).size()); assertEquals(1, compactor.getLevel(0).getSnapshot().size()); assertFalse(compactor.getLevel(0).needsCompaction()); }
public void testCompactionLevel0() throws Exception { compactor.add(createSoplog(0, 100, 0)); compactor.add(createSoplog(100, 100, 1)); assertEquals(2, compactor.getActiveReaders(null, null).size()); assertEquals(2, compactor.getLevel(0).getSnapshot().size()); assertTrue(compactor.getLevel(0).needsCompaction()); WaitingHandler wh = new WaitingHandler(); compactor.compact(false, wh); wh.waitForCompletion(); assertEquals(1, compactor.getActiveReaders(null, null).size()); assertEquals(0, compactor.getLevel(0).getSnapshot().size()); assertEquals(1, compactor.getLevel(1).getSnapshot().size()); assertFalse(compactor.getLevel(0).needsCompaction()); assertFalse(compactor.getLevel(1).needsCompaction()); validate(compactor.getActiveReaders(null, null).iterator().next().get(), 0, 200); }