/** * This is called from the ReplicationMonitor to process over * replicated blocks. */ private void processOverReplicatedBlocksAsync() { List<Block> blocksToProcess = new LinkedList<Block>(); writeLock(); try { int size = Math.min(overReplicatedBlocks.size(), 1000); NameNode.getNameNodeMetrics().numOverReplicatedBlocks.set(overReplicatedBlocks.size()); blocksToProcess = overReplicatedBlocks.pollN(size); } finally { writeUnlock(); } for (Block block : blocksToProcess) { if (NameNode.stateChangeLog.isDebugEnabled()) { NameNode.stateChangeLog .debug("BLOCK* NameSystem.processOverReplicatedBlocksAsync: " + block); } processOverReplicatedBlock(block, (short) -1, null, null); } }
@Test public void testPollNOne() { LOG.info("Test pollN one"); set.add(list.get(0)); List<Integer> l = set.pollN(10); assertEquals(1, l.size()); assertEquals(list.get(0), l.get(0)); LOG.info("Test pollN one - DONE"); }
@Test public void testPollNMulti() { LOG.info("Test pollN multi"); // use addAll set.addAll(list); // poll existing elements List<Integer> l = set.pollN(10); assertEquals(10, l.size()); for (int i = 0; i < 10; i++) { assertEquals(list.get(i), l.get(i)); } // poll more elements than present l = set.pollN(1000); assertEquals(NUM - 10, l.size()); // check the order for (int i = 10; i < NUM; i++) { assertEquals(list.get(i), l.get(i - 10)); } // set is empty assertTrue(set.isEmpty()); assertEquals(0, set.size()); LOG.info("Test pollN multi - DONE"); }
@Test public void testEmptyBasic() { LOG.info("Test empty basic"); Iterator<Integer> iter = set.iterator(); // iterator should not have next assertFalse(iter.hasNext()); assertEquals(0, set.size()); assertTrue(set.isEmpty()); // poll should return nothing assertNull(set.pollFirst()); assertEquals(0, set.pollAll().size()); assertEquals(0, set.pollN(10).size()); LOG.info("Test empty - DONE"); }
@Test public void testRemoveOne() { LOG.info("Test remove one"); assertTrue(set.add(list.get(0))); assertEquals(1, set.size()); // remove from the head/tail assertTrue(set.remove(list.get(0))); assertEquals(0, set.size()); // check the iterator Iterator<Integer> iter = set.iterator(); assertFalse(iter.hasNext()); // poll should return nothing assertNull(set.pollFirst()); assertEquals(0, set.pollAll().size()); assertEquals(0, set.pollN(10).size()); // add the element back to the set assertTrue(set.add(list.get(0))); assertEquals(1, set.size()); iter = set.iterator(); assertTrue(iter.hasNext()); LOG.info("Test remove one - DONE"); }
@Test public void testClear() { LOG.info("Test clear"); // use addAll set.addAll(list); assertEquals(NUM, set.size()); assertFalse(set.isEmpty()); // clear the set set.clear(); assertEquals(0, set.size()); assertTrue(set.isEmpty()); // poll should return an empty list assertEquals(0, set.pollAll().size()); assertEquals(0, set.pollN(10).size()); assertNull(set.pollFirst()); // iterator should be empty Iterator<Integer> iter = set.iterator(); assertFalse(iter.hasNext()); LOG.info("Test clear - DONE"); }