当前位置: 首页>>代码示例>>Java>>正文


Java WALEdit.getRegionEventDescriptor方法代码示例

本文整理汇总了Java中org.apache.hadoop.hbase.regionserver.wal.WALEdit.getRegionEventDescriptor方法的典型用法代码示例。如果您正苦于以下问题:Java WALEdit.getRegionEventDescriptor方法的具体用法?Java WALEdit.getRegionEventDescriptor怎么用?Java WALEdit.getRegionEventDescriptor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.hbase.regionserver.wal.WALEdit的用法示例。


在下文中一共展示了WALEdit.getRegionEventDescriptor方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testReplayingRegionOpenEventRestoresReadsEnabledState

import org.apache.hadoop.hbase.regionserver.wal.WALEdit; //导入方法依赖的package包/类
/**
 * Test the case where the secondary region replica is not in reads enabled state because it is
 * waiting for a flush or region open marker from primary region. Replaying region open event
 * entry from primary should restore the reads enabled status in the region and allow the reads
 * to continue.
 */
@Test
public void testReplayingRegionOpenEventRestoresReadsEnabledState() throws IOException {
  // Test case 3: Test that replaying region open event markers restores readsEnabled
  disableReads(secondaryRegion);

  primaryRegion.close();
  primaryRegion = HRegion.openHRegion(rootDir, primaryHri, htd, walPrimary, CONF, rss, null);

  reader = createWALReaderForPrimary();
  while (true) {
    WAL.Entry entry = reader.next();
    if (entry == null) {
      break;
    }

    RegionEventDescriptor regionEventDesc
      = WALEdit.getRegionEventDescriptor(entry.getEdit().getCells().get(0));

    if (regionEventDesc != null) {
      secondaryRegion.replayWALRegionEventMarker(regionEventDesc);
    }
  }

  // now reads should be enabled
  secondaryRegion.get(new Get(Bytes.toBytes(0)));
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:33,代码来源:TestHRegionReplayEvents.java

示例2: doReplayBatchOp

import org.apache.hadoop.hbase.regionserver.wal.WALEdit; //导入方法依赖的package包/类
/**
 * Execute a list of Put/Delete mutations. The function returns OperationStatus instead of
 * constructing MultiResponse to save a possible loop if caller doesn't need MultiResponse.
 * @param region
 * @param mutations
 * @param replaySeqId
 * @return an array of OperationStatus which internally contains the OperationStatusCode and the
 *         exceptionMessage if any
 * @throws IOException
 */
private OperationStatus [] doReplayBatchOp(final Region region,
    final List<WALSplitter.MutationReplay> mutations, long replaySeqId) throws IOException {
  long before = EnvironmentEdgeManager.currentTime();
  boolean batchContainsPuts = false, batchContainsDelete = false;
  try {
    for (Iterator<WALSplitter.MutationReplay> it = mutations.iterator(); it.hasNext();) {
      WALSplitter.MutationReplay m = it.next();

      if (m.type == MutationType.PUT) {
        batchContainsPuts = true;
      } else {
        batchContainsDelete = true;
      }

      NavigableMap<byte[], List<Cell>> map = m.mutation.getFamilyCellMap();
      List<Cell> metaCells = map.get(WALEdit.METAFAMILY);
      if (metaCells != null && !metaCells.isEmpty()) {
        for (Cell metaCell : metaCells) {
          CompactionDescriptor compactionDesc = WALEdit.getCompaction(metaCell);
          boolean isDefaultReplica = RegionReplicaUtil.isDefaultReplica(region.getRegionInfo());
          HRegion hRegion = (HRegion)region;
          if (compactionDesc != null) {
            // replay the compaction. Remove the files from stores only if we are the primary
            // region replica (thus own the files)
            hRegion.replayWALCompactionMarker(compactionDesc, !isDefaultReplica, isDefaultReplica,
              replaySeqId);
            continue;
          }
          FlushDescriptor flushDesc = WALEdit.getFlushDescriptor(metaCell);
          if (flushDesc != null && !isDefaultReplica) {
            hRegion.replayWALFlushMarker(flushDesc, replaySeqId);
            continue;
          }
          RegionEventDescriptor regionEvent = WALEdit.getRegionEventDescriptor(metaCell);
          if (regionEvent != null && !isDefaultReplica) {
            hRegion.replayWALRegionEventMarker(regionEvent);
            continue;
          }
          BulkLoadDescriptor bulkLoadEvent = WALEdit.getBulkLoadDescriptor(metaCell);
          if (bulkLoadEvent != null) {
            hRegion.replayWALBulkLoadEventMarker(bulkLoadEvent);
            continue;
          }
        }
        it.remove();
      }
    }
    requestCount.add(mutations.size());
    if (!region.getRegionInfo().isMetaTable()) {
      regionServer.cacheFlusher.reclaimMemStoreMemory();
    }
    return region.batchReplay(mutations.toArray(
      new WALSplitter.MutationReplay[mutations.size()]), replaySeqId);
  } finally {
    if (regionServer.metricsRegionServer != null) {
      long after = EnvironmentEdgeManager.currentTime();
        if (batchContainsPuts) {
        regionServer.metricsRegionServer.updatePut(after - before);
      }
      if (batchContainsDelete) {
        regionServer.metricsRegionServer.updateDelete(after - before);
      }
    }
  }
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:76,代码来源:RSRpcServices.java

示例3: testOpenRegionWrittenToWAL

import org.apache.hadoop.hbase.regionserver.wal.WALEdit; //导入方法依赖的package包/类
@Test
public void testOpenRegionWrittenToWAL() throws Exception {
  final ServerName serverName = ServerName.valueOf("testOpenRegionWrittenToWAL", 100, 42);
  final RegionServerServices rss = spy(TEST_UTIL.createMockRegionServerService(serverName));

  HTableDescriptor htd
      = new HTableDescriptor(TableName.valueOf("testOpenRegionWrittenToWAL"));
  htd.addFamily(new HColumnDescriptor(fam1));
  htd.addFamily(new HColumnDescriptor(fam2));

  HRegionInfo hri = new HRegionInfo(htd.getTableName(),
    HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY);

  // open the region w/o rss and wal and flush some files
  HRegion region =
       HRegion.createHRegion(hri, TEST_UTIL.getDataTestDir(), TEST_UTIL
          .getConfiguration(), htd);
  assertNotNull(region);

  // create a file in fam1 for the region before opening in OpenRegionHandler
  region.put(new Put(Bytes.toBytes("a")).add(fam1, fam1, fam1));
  region.flush(true);
  region.close();

  ArgumentCaptor<WALEdit> editCaptor = ArgumentCaptor.forClass(WALEdit.class);

  // capture append() calls
  WAL wal = mockWAL();
  when(rss.getWAL((HRegionInfo) any())).thenReturn(wal);

  try {
    region = HRegion.openHRegion(hri, htd, rss.getWAL(hri),
      TEST_UTIL.getConfiguration(), rss, null);

    verify(wal, times(1)).append((HTableDescriptor)any(), (HRegionInfo)any(), (WALKey)any()
      , editCaptor.capture(), anyBoolean());

    WALEdit edit = editCaptor.getValue();
    assertNotNull(edit);
    assertNotNull(edit.getCells());
    assertEquals(1, edit.getCells().size());
    RegionEventDescriptor desc = WALEdit.getRegionEventDescriptor(edit.getCells().get(0));
    assertNotNull(desc);

    LOG.info("RegionEventDescriptor from WAL: " + desc);

    assertEquals(RegionEventDescriptor.EventType.REGION_OPEN, desc.getEventType());
    assertTrue(Bytes.equals(desc.getTableName().toByteArray(), htd.getName()));
    assertTrue(Bytes.equals(desc.getEncodedRegionName().toByteArray(),
      hri.getEncodedNameAsBytes()));
    assertTrue(desc.getLogSequenceNumber() > 0);
    assertEquals(serverName, ProtobufUtil.toServerName(desc.getServer()));
    assertEquals(2, desc.getStoresCount());

    StoreDescriptor store = desc.getStores(0);
    assertTrue(Bytes.equals(store.getFamilyName().toByteArray(), fam1));
    assertEquals(store.getStoreHomeDir(), Bytes.toString(fam1));
    assertEquals(1, store.getStoreFileCount()); // 1store file
    assertFalse(store.getStoreFile(0).contains("/")); // ensure path is relative

    store = desc.getStores(1);
    assertTrue(Bytes.equals(store.getFamilyName().toByteArray(), fam2));
    assertEquals(store.getStoreHomeDir(), Bytes.toString(fam2));
    assertEquals(0, store.getStoreFileCount()); // no store files

  } finally {
    HRegion.closeHRegion(region);
  }
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:70,代码来源:TestHRegion.java

示例4: testCloseRegionWrittenToWAL

import org.apache.hadoop.hbase.regionserver.wal.WALEdit; //导入方法依赖的package包/类
@Test
public void testCloseRegionWrittenToWAL() throws Exception {
  final ServerName serverName = ServerName.valueOf("testCloseRegionWrittenToWAL", 100, 42);
  final RegionServerServices rss = spy(TEST_UTIL.createMockRegionServerService(serverName));

  HTableDescriptor htd
  = new HTableDescriptor(TableName.valueOf("testOpenRegionWrittenToWAL"));
  htd.addFamily(new HColumnDescriptor(fam1));
  htd.addFamily(new HColumnDescriptor(fam2));

  final HRegionInfo hri = new HRegionInfo(htd.getTableName(),
    HConstants.EMPTY_BYTE_ARRAY, HConstants.EMPTY_BYTE_ARRAY);

  ArgumentCaptor<WALEdit> editCaptor = ArgumentCaptor.forClass(WALEdit.class);

  // capture append() calls
  WAL wal = mockWAL();
  when(rss.getWAL((HRegionInfo) any())).thenReturn(wal);


  // open a region first so that it can be closed later
  region = HRegion.openHRegion(hri, htd, rss.getWAL(hri),
    TEST_UTIL.getConfiguration(), rss, null);

  // close the region
  region.close(false);

  // 2 times, one for region open, the other close region
  verify(wal, times(2)).append((HTableDescriptor)any(), (HRegionInfo)any(), (WALKey)any(),
    editCaptor.capture(), anyBoolean());

  WALEdit edit = editCaptor.getAllValues().get(1);
  assertNotNull(edit);
  assertNotNull(edit.getCells());
  assertEquals(1, edit.getCells().size());
  RegionEventDescriptor desc = WALEdit.getRegionEventDescriptor(edit.getCells().get(0));
  assertNotNull(desc);

  LOG.info("RegionEventDescriptor from WAL: " + desc);

  assertEquals(RegionEventDescriptor.EventType.REGION_CLOSE, desc.getEventType());
  assertTrue(Bytes.equals(desc.getTableName().toByteArray(), htd.getName()));
  assertTrue(Bytes.equals(desc.getEncodedRegionName().toByteArray(),
    hri.getEncodedNameAsBytes()));
  assertTrue(desc.getLogSequenceNumber() > 0);
  assertEquals(serverName, ProtobufUtil.toServerName(desc.getServer()));
  assertEquals(2, desc.getStoresCount());

  StoreDescriptor store = desc.getStores(0);
  assertTrue(Bytes.equals(store.getFamilyName().toByteArray(), fam1));
  assertEquals(store.getStoreHomeDir(), Bytes.toString(fam1));
  assertEquals(0, store.getStoreFileCount()); // no store files

  store = desc.getStores(1);
  assertTrue(Bytes.equals(store.getFamilyName().toByteArray(), fam2));
  assertEquals(store.getStoreHomeDir(), Bytes.toString(fam2));
  assertEquals(0, store.getStoreFileCount()); // no store files
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:59,代码来源:TestHRegion.java


注:本文中的org.apache.hadoop.hbase.regionserver.wal.WALEdit.getRegionEventDescriptor方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。