/** * Increments the use counter and returns the current count. * @return the current uses */ public int increment() { return increment(null); }
/** * Increments the use count and returns the reference. * @return the reference */ public T getAndIncrement() { increment(); return ref; }
/** * Increments the use count and returns the reference. * @return the reference */ public T getAndIncrement() { increment(); return ref; }
/** * Increments the use counter and returns the current count. * @return the current uses */ public int increment() { return increment(null); }
@Override protected List<TrackedReference<SortedOplogReader>> getSnapshot(byte[] start, byte[] end) { // ignoring range limits since keys are stored in overlapping files List<TrackedReference<SortedOplogReader>> snap; synchronized (this) { snap = new ArrayList<TrackedReference<SortedOplogReader>>(soplogs); } for (TrackedReference<SortedOplogReader> tr : snap) { tr.increment(); } return snap; }
@Override public synchronized Collection<TrackedReference<SortedOplogReader>> getActiveReaders( byte[] start, byte[] end) { for (TrackedReference<SortedOplogReader> tr : readers) { tr.increment(); } return new ArrayList<TrackedReference<SortedOplogReader>>(readers); }
/** * locks hoplogs to create a snapshot of active hoplogs. reference of each * reader is incremented to keep it from getting closed * * @return ordered list of sorted oplogs */ private List<TrackedReference<Hoplog>> getTrackedSortedOplogList(String user) { List<TrackedReference<Hoplog>> oplogs = new ArrayList<TrackedReference<Hoplog>>(); hoplogRWLock.readLock().lock(); try { for (TrackedReference<Hoplog> oplog : hoplogs) { oplog.increment(user); oplogs.add(oplog); if (logger.isDebugEnabled()) { logger.debug("{}Track ref " + oplog, logPrefix); } } } finally { hoplogRWLock.readLock().unlock(); } return oplogs; }
/** * locks hoplogs to create a snapshot of active hoplogs. reference of each * reader is incremented to keep it from getting closed * * @return ordered list of sorted oplogs */ private List<TrackedReference<Hoplog>> getTrackedSortedOplogList(String user) { List<TrackedReference<Hoplog>> oplogs = new ArrayList<TrackedReference<Hoplog>>(); hoplogRWLock.readLock().lock(); try { for (TrackedReference<Hoplog> oplog : hoplogs) { oplog.increment(user); oplogs.add(oplog); if (logger.finestEnabled()) { logger.finest("Track ref " + oplog); } } } finally { hoplogRWLock.readLock().unlock(); } return oplogs; }
private TrackedReference<Hoplog> trackHoplog(Hoplog hoplog, String user) { hoplogRWLock.readLock().lock(); try { for (TrackedReference<Hoplog> oplog : hoplogs) { if (oplog.get().getFileName().equals(hoplog.getFileName())) { oplog.increment(user); if (logger.isDebugEnabled()) { logger.debug("{}Track " + oplog, logPrefix); } return oplog; } } } finally { hoplogRWLock.readLock().unlock(); } throw new NoSuchElementException(hoplog.getFileName()); }
private TrackedReference<Hoplog> trackHoplog(Hoplog hoplog, String user) { hoplogRWLock.readLock().lock(); try { for (TrackedReference<Hoplog> oplog : hoplogs) { if (oplog.get().getFileName().equals(hoplog.getFileName())) { oplog.increment(user); if (logger.finestEnabled()) { logger.finest("Track " + oplog); } return oplog; } } } finally { hoplogRWLock.readLock().unlock(); } throw new NoSuchElementException(hoplog.getFileName()); }
public void testMinorCompactionTargetMinCount() throws Exception { HdfsSortedOplogOrganizer organizer = new HdfsSortedOplogOrganizer(regionManager, 0); HoplogCompactor compactor = (HoplogCompactor) organizer.getCompactor(); ArrayList<TrackedReference<Hoplog>> targets = new ArrayList<TrackedReference<Hoplog>>(); for (int i = 0; i < 2; i++) { TrackedReference<Hoplog> hop = new TrackedReference<Hoplog>(new TestHoplog(hdfsStore, TEN_MB + i)); hop.increment(); targets.add(hop); } compactor.getMinorCompactionTargets(targets, -1); assertEquals(0, targets.size()); }
public void testMinorCompactionTargetsOptimizer() throws Exception { HdfsSortedOplogOrganizer organizer = new HdfsSortedOplogOrganizer(regionManager, 0); HoplogCompactor compactor = (HoplogCompactor) organizer.getCompactor(); ArrayList<TrackedReference<Hoplog>> targets = new ArrayList<TrackedReference<Hoplog>>(); for (int i = 0; i < 6; i++) { TrackedReference<Hoplog> hop = new TrackedReference<Hoplog>(new TestHoplog(hdfsStore, TEN_MB + i)); hop.increment(); targets.add(hop); } List<TrackedReference<Hoplog>> list = (List<TrackedReference<Hoplog>>) targets.clone(); compactor.getMinorCompactionTargets(list, -1); assertEquals(6, list.size()); TestHoplog fifthHop = (TestHoplog) targets.get(4).get(); // fifth hop needs additional block read as it has more than max keys size fifthHop.size = (HdfsSortedOplogOrganizer.AVG_NUM_KEYS_PER_INDEX_BLOCK * 5 + 1) * 64 * 1024; list = (List<TrackedReference<Hoplog>>) targets.clone(); compactor.getMinorCompactionTargets(list, -1); assertEquals(4, list.size()); for (TrackedReference<Hoplog> ref : list) { assertTrue(((TestHoplog)ref.get()).size - TEN_MB < 4 ); } }
public void testTargetsReleasedBadRatio() throws Exception { HdfsSortedOplogOrganizer organizer = new HdfsSortedOplogOrganizer(regionManager, 0); HoplogCompactor compactor = (HoplogCompactor) organizer.getCompactor(); ArrayList<TrackedReference<Hoplog>> targets = new ArrayList<TrackedReference<Hoplog>>(); for (int i = 0; i < 3; i++) { TrackedReference<Hoplog> hop = new TrackedReference<Hoplog>(new TestHoplog(hdfsStore, TEN_MB + i)); hop.increment(); targets.add(hop); } TestHoplog oldestHop = (TestHoplog) targets.get(2).get(); oldestHop.size = (1 + 30) * TEN_MB; List<TrackedReference<Hoplog>> list = (List<TrackedReference<Hoplog>>) targets.clone(); compactor.getMinorCompactionTargets(list, -1); assertEquals(0, list.size()); assertEquals(3, targets.size()); for (TrackedReference<Hoplog> ref : targets) { assertEquals(0, ref.uses()); } }
ref.increment("test");
public void testAlterMaxInputFileSize() throws Exception { HdfsSortedOplogOrganizer organizer = new HdfsSortedOplogOrganizer(regionManager, 0); HoplogCompactor compactor = (HoplogCompactor) organizer.getCompactor(); assertTrue(TEN_MB * 2 < hdfsStore.getHDFSCompactionConfig().getMaxInputFileSizeMB() * ONE_MB); ArrayList<TrackedReference<TestHoplog>> targets = new ArrayList<TrackedReference<TestHoplog>>(); for (int i = 0; i < 5; i++) { TrackedReference<TestHoplog> hop = new TrackedReference<TestHoplog>(new TestHoplog(hdfsStore, TEN_MB + i)); hop.increment(); targets.add(hop); } List<TrackedReference<Hoplog>> list = (List<TrackedReference<Hoplog>>) targets.clone(); compactor.getMinorCompactionTargets(list, -1); assertEquals(targets.size(), list.size()); HDFSStoreMutator mutator = hdfsStore.createHdfsStoreMutator(); mutator.getCompactionConfigMutator().setMaxInputFileSizeMB(1); hdfsStore.alter(mutator); compactor.getMinorCompactionTargets(list, -1); assertEquals(0, list.size()); }
public void testAlterInputFileCount() throws Exception { HdfsSortedOplogOrganizer organizer = new HdfsSortedOplogOrganizer(regionManager, 0); HoplogCompactor compactor = (HoplogCompactor) organizer.getCompactor(); assertTrue(2 < hdfsStore.getHDFSCompactionConfig().getMaxInputFileCount()); ArrayList<TrackedReference<TestHoplog>> targets = new ArrayList<TrackedReference<TestHoplog>>(); for (int i = 0; i < 5; i++) { TrackedReference<TestHoplog> hop = new TrackedReference<TestHoplog>(new TestHoplog(hdfsStore, TEN_MB + i)); hop.increment(); targets.add(hop); } List<TrackedReference<Hoplog>> list = (List<TrackedReference<Hoplog>>) targets.clone(); compactor.getMinorCompactionTargets(list, -1); assertEquals(targets.size(), list.size()); HDFSStoreMutator mutator = hdfsStore.createHdfsStoreMutator(); mutator.getCompactionConfigMutator().setMaxInputFileCount(2); mutator.getCompactionConfigMutator().setMinInputFileCount(2); hdfsStore.alter(mutator); compactor.getMinorCompactionTargets(list, -1); assertEquals(2, list.size()); }