@Override public void run() { try { compactor.add(soplog); compactor.compact(false, null); unflushed.removeFirstOccurrence(buffer); // TODO need to invoke this while NOT holding write lock handler.complete(); factory.getConfiguration().getStatistics().getFlush().end(buffer.dataSize(), start); } catch (Exception e) { handleError(e, aborted); return; } } };
@Override public SortedStatistics getStatistics() throws IOException { List<SortedStatistics> stats = new ArrayList<SortedStatistics>(); Collection<TrackedReference<SortedOplogReader>> soplogs; // snapshot, this is expensive rwlock.readLock().lock(); try { stats.add(getCurrent().getStatistics()); for (SortedBuffer<Integer> sb : unflushed) { stats.add(sb.getStatistics()); } soplogs = compactor.getActiveReaders(null, null); } finally { rwlock.readLock().unlock(); } for (TrackedReference<SortedOplogReader> tr : soplogs) { stats.add(tr.get().getStatistics()); } return new MergedStatistics(stats, soplogs); }
private void compactAndWait(SortedOplogSet sos, boolean force) throws InterruptedException { WaitingHandler wh = new WaitingHandler(); sos.getCompactor().compact(force, wh); wh.waitForCompletion(); assertNull(wh.getError()); } }
@Override public void close() throws IOException { if (logger.fineEnabled()) { logger.fine("Closing soplog set"); } unsetCurrent(); releaseTestDelay(); flusher.waitForCompletion(); compactor.close(); }
private SortedOplog writeBuffer(SortedBuffer<Integer> sb, AtomicBoolean aborted) throws IOException { File f = compactor.getFileset().getNextFilename(); if (logger.fineEnabled()) { logger.fine(String.format("Flushing buffer %s to %s", sb, f));
compactor.clear();
try { readers = new ArrayList<SortedReader<ByteBuffer>>(unflushed); soplogs = compactor.getActiveReaders(key, key); for (TrackedReference<SortedOplogReader> tr : soplogs) { readers.add(tr.get());
@Override public SortedIterator<ByteBuffer> scan( byte[] from, boolean fromInclusive, byte[] to, boolean toInclusive, boolean ascending, MetadataFilter filter) throws IOException { SerializedComparator sc = factory.getConfiguration().getComparator(); sc = ascending ? sc : ReversingSerializedComparator.reverse(sc); List<SortedIterator<ByteBuffer>> scans = new ArrayList<SortedIterator<ByteBuffer>>(); Collection<TrackedReference<SortedOplogReader>> soplogs; rwlock.readLock().lock(); try { scans.add(getCurrent().scan(from, fromInclusive, to, toInclusive, ascending, filter)); for (SortedBuffer<Integer> sb : unflushed) { scans.add(sb.scan(from, fromInclusive, to, toInclusive, ascending, filter)); } soplogs = compactor.getActiveReaders(from, to); } finally { rwlock.readLock().unlock(); } for (TrackedReference<SortedOplogReader> tr : soplogs) { scans.add(tr.get().scan(from, fromInclusive, to, toInclusive, ascending, filter)); } return new MergedIterator(sc, soplogs, scans); }
try { readers = new ArrayList<SortedReader<ByteBuffer>>(unflushed); soplogs = compactor.getActiveReaders(key, key); for (TrackedReference<SortedOplogReader> tr : soplogs) { readers.add(tr.get());