Java 类org.apache.hadoop.hbase.io.hfile.CombinedBlockCache 实例源码

项目:hbase    文件:TestBlockEvictionFromClient.java   
private void iterateBlockCache(BlockCache cache, Iterator<CachedBlock> iterator) {
  int refCount;
  while (iterator.hasNext()) {
    CachedBlock next = iterator.next();
    BlockCacheKey cacheKey = new BlockCacheKey(next.getFilename(), next.getOffset());
    if (cache instanceof BucketCache) {
      refCount = ((BucketCache) cache).getRefCount(cacheKey);
    } else if (cache instanceof CombinedBlockCache) {
      refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
    } else {
      continue;
    }
    assertEquals(0, refCount);
  }
}
项目:hbase    文件:TestBlockEvictionFromClient.java   
private void checkForBlockEviction(BlockCache cache, boolean getClosed, boolean expectOnlyZero)
    throws InterruptedException {
  int counter = NO_OF_THREADS;
  if (CustomInnerRegionObserver.waitForGets.get()) {
    // Because only one row is selected, it has only 2 blocks
    counter = counter - 1;
    while (CustomInnerRegionObserver.countOfGets.get() < NO_OF_THREADS) {
      Thread.sleep(100);
    }
  } else {
    while (CustomInnerRegionObserver.countOfNext.get() < NO_OF_THREADS) {
      Thread.sleep(100);
    }
  }
  Iterator<CachedBlock> iterator = cache.iterator();
  int refCount = 0;
  while (iterator.hasNext()) {
    CachedBlock next = iterator.next();
    BlockCacheKey cacheKey = new BlockCacheKey(next.getFilename(), next.getOffset());
    if (cache instanceof BucketCache) {
      refCount = ((BucketCache) cache).getRefCount(cacheKey);
    } else if (cache instanceof CombinedBlockCache) {
      refCount = ((CombinedBlockCache) cache).getRefCount(cacheKey);
    } else {
      continue;
    }
    System.out.println(" the refcount is " + refCount + " block is " + cacheKey);
    if (CustomInnerRegionObserver.waitForGets.get()) {
      if (expectOnlyZero) {
        assertTrue(refCount == 0);
      }
      if (refCount != 0) {
        // Because the scan would have also touched up on these blocks but
        // it
        // would have touched
        // all 3
        if (getClosed) {
          // If get has closed only the scan's blocks would be available
          assertEquals(refCount, CustomInnerRegionObserver.countOfGets.get());
        } else {
            assertEquals(refCount, CustomInnerRegionObserver.countOfGets.get() + (NO_OF_THREADS));
        }
      }
    } else {
      // Because the get would have also touched up on these blocks but it
      // would have touched
      // upon only 2 additionally
      if (expectOnlyZero) {
        assertTrue(refCount == 0);
      }
      if (refCount != 0) {
        if (getLatch == null) {
          assertEquals(refCount, CustomInnerRegionObserver.countOfNext.get());
        } else {
          assertEquals(refCount, CustomInnerRegionObserver.countOfNext.get() + (NO_OF_THREADS));
        }
      }
    }
  }
  CustomInnerRegionObserver.getCdl().get().countDown();
}