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


Java AssignmentManager.getRegionStates方法代码示例

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


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

示例1: scheduleFullRefresh

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
/**
 * Refresh all the region locations.
 *
 * @return true if user created regions got refreshed.
 */
private boolean scheduleFullRefresh() {
  // Protect from anything being null while starting up.
  if (services == null) {
    return false;
  }
  AssignmentManager am = services.getAssignmentManager();

  if (am == null) {
    return false;
  }
  RegionStates regionStates = am.getRegionStates();
  if (regionStates == null) {
    return false;
  }

  Set<HRegionInfo> regions = regionStates.getRegionAssignments().keySet();
  boolean includesUserTables = false;
  for (final HRegionInfo hri : regions) {
    cache.refresh(hri);
    includesUserTables = includesUserTables || !hri.isSystemTable();
  }
  return includesUserTables;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:29,代码来源:RegionLocationFinder.java

示例2: waitRegionInTransition

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
protected static void waitRegionInTransition(final MasterProcedureEnv env,
    final List<HRegionInfo> regions) throws IOException, CoordinatedStateException {
  final AssignmentManager am = env.getMasterServices().getAssignmentManager();
  final RegionStates states = am.getRegionStates();
  for (final HRegionInfo region : regions) {
    ProcedureSyncWait.waitFor(env, "regions " + region.getRegionNameAsString() + " in transition",
        new ProcedureSyncWait.Predicate<Boolean>() {
      @Override
      public Boolean evaluate() throws IOException {
        if (states.isRegionInState(region, State.FAILED_OPEN)) {
          am.regionOffline(region);
        }
        return !states.isRegionInTransition(region);
      }
    });
  }
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:18,代码来源:ProcedureSyncWait.java

示例3: setUpBeforeClass

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  conf.setInt("hbase.regionserver.handler.count", 2);
  conf.setInt("hbase.regionserver.metahandler.count", 2);

  conf.setInt("hbase.htable.threads.max", POOL_SIZE);
  conf.setInt("hbase.hconnection.threads.max", 2 * POOL_SIZE);
  conf.setInt("hbase.hconnection.threads.core", POOL_SIZE);
  conf.setInt("hbase.hbck.close.timeout", 2 * REGION_ONLINE_TIMEOUT);
  TEST_UTIL.startMiniCluster(3);

  tableExecutorService = new ThreadPoolExecutor(1, POOL_SIZE, 60, TimeUnit.SECONDS,
      new SynchronousQueue<Runnable>(), Threads.newDaemonThreadFactory("testhbck"));

  hbfsckExecutorService = new ScheduledThreadPoolExecutor(POOL_SIZE);

  AssignmentManager assignmentManager =
    TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager();
  regionStates = assignmentManager.getRegionStates();

  connection = (ClusterConnection) TEST_UTIL.getConnection();

  admin = connection.getAdmin();
  admin.setBalancerRunning(false, true);
}
 
开发者ID:grokcoder,项目名称:pbase,代码行数:26,代码来源:TestHBaseFsck.java

示例4: forceRegionsOffline

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
private void forceRegionsOffline(final List<HRegionInfo> hris) {
  AssignmentManager am = this.masterServices.getAssignmentManager();
  RegionStates states = am.getRegionStates();
  if (hris != null) {
    for (HRegionInfo hri: hris) {
      states.regionOffline(hri);
    }
  }
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:10,代码来源:RestoreSnapshotHandler.java

示例5: setUpBeforeClass

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  TEST_UTIL.getConfiguration().set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY,
    MasterSyncObserver.class.getName());

  conf.setInt("hbase.regionserver.handler.count", 2);
  conf.setInt("hbase.regionserver.metahandler.count", 30);

  conf.setInt("hbase.htable.threads.max", POOL_SIZE);
  conf.setInt("hbase.hconnection.threads.max", 2 * POOL_SIZE);
  conf.setInt("hbase.hconnection.threads.core", POOL_SIZE);
  conf.setInt("hbase.hbck.close.timeout", 2 * REGION_ONLINE_TIMEOUT);
  conf.setInt(HConstants.HBASE_RPC_TIMEOUT_KEY, 8 * REGION_ONLINE_TIMEOUT);
  TEST_UTIL.startMiniCluster(3);

  tableExecutorService = new ThreadPoolExecutor(1, POOL_SIZE, 60, TimeUnit.SECONDS,
      new SynchronousQueue<Runnable>(), Threads.newDaemonThreadFactory("testhbck"));

  hbfsckExecutorService = new ScheduledThreadPoolExecutor(POOL_SIZE);

  AssignmentManager assignmentManager =
    TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager();
  regionStates = assignmentManager.getRegionStates();

  connection = (ClusterConnection) TEST_UTIL.getConnection();

  admin = connection.getAdmin();
  admin.setBalancerRunning(false, true);

  TEST_UTIL.waitUntilAllRegionsAssigned(TableName.META_TABLE_NAME);
  TEST_UTIL.waitUntilAllRegionsAssigned(TableName.NAMESPACE_TABLE_NAME);
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:33,代码来源:TestHBaseFsck.java

示例6: waitRegionInTransition

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
protected void waitRegionInTransition(final List<HRegionInfo> regions)
    throws IOException, CoordinatedStateException {
  AssignmentManager am = this.masterServices.getAssignmentManager();
  RegionStates states = am.getRegionStates();
  long waitTime = server.getConfiguration().
    getLong("hbase.master.wait.on.region", 5 * 60 * 1000);
  for (HRegionInfo region : regions) {
    long done = System.currentTimeMillis() + waitTime;
    while (System.currentTimeMillis() < done) {
      if (states.isRegionInState(region, State.FAILED_OPEN)) {
        am.regionOffline(region);
      }
      if (!states.isRegionInTransition(region)) break;
      try {
        Thread.sleep(waitingTimeForEvents);
      } catch (InterruptedException e) {
        LOG.warn("Interrupted while sleeping");
        throw (InterruptedIOException)new InterruptedIOException().initCause(e);
      }
      LOG.debug("Waiting on region to clear regions in transition; "
        + am.getRegionStates().getRegionTransitionState(region));
    }
    if (states.isRegionInTransition(region)) {
      throw new IOException("Waited hbase.master.wait.on.region (" +
        waitTime + "ms) for region to leave region " +
        region.getRegionNameAsString() + " in transitions");
    }
  }
}
 
开发者ID:grokcoder,项目名称:pbase,代码行数:30,代码来源:DeleteTableHandler.java

示例7: setUpBeforeClass

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  TEST_UTIL.getConfiguration().setInt("hbase.regionserver.handler.count", 2);
  TEST_UTIL.getConfiguration().setInt("hbase.regionserver.metahandler.count", 2);
  TEST_UTIL.startMiniCluster(3);

  executorService = new ThreadPoolExecutor(1, Integer.MAX_VALUE, 60, TimeUnit.SECONDS,
      new SynchronousQueue<Runnable>(), Threads.newDaemonThreadFactory("testhbck"));

  AssignmentManager assignmentManager =
    TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager();
  regionStates = assignmentManager.getRegionStates();
  TEST_UTIL.getHBaseAdmin().setBalancerRunning(false, true);
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:15,代码来源:TestHBaseFsck.java

示例8: postAssign

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@Override
public void postAssign(ObserverContext<MasterCoprocessorEnvironment> ctx, HRegionInfo regionInfo)
    throws IOException {
  LOG.info("Entering into postAssign of region " + regionInfo.getRegionNameAsString() + '.');

  if (!IndexUtils.isIndexTable(regionInfo.getTable().getName())) {
    MasterServices master = ctx.getEnvironment().getMasterServices();
    LoadBalancer balancer = master.getAssignmentManager().getBalancer();
    AssignmentManager am = master.getAssignmentManager();
    RegionStates regionStates = am.getRegionStates();
    // waiting until user region is removed from transition.
    long timeout =
        master.getConfiguration()
            .getLong("hbase.bulk.assignment.waiton.empty.rit", 5 * 60 * 1000);
    try {
      am.waitOnRegionToClearRegionsInTransition(regionInfo, timeout);
    } catch (InterruptedException e) {
      if (LOG.isDebugEnabled()) {
        LOG.debug("Interrupted while region in assignment.");
      }
    }
    ServerName sn = regionStates.getRegionServerOfRegion(regionInfo);
    TableName indexTableName =
        TableName.valueOf(IndexUtils.getIndexTableName(regionInfo.getTableName()));
    List<HRegionInfo> tableRegions = regionStates.getRegionsOfTable(indexTableName);
    for (HRegionInfo hRegionInfo : tableRegions) {
      if (0 == Bytes.compareTo(hRegionInfo.getStartKey(), regionInfo.getStartKey())) {
        am.addPlan(hRegionInfo.getEncodedName(), new RegionPlan(hRegionInfo, null, sn));
        LOG.info("Assigning region " + hRegionInfo.getRegionNameAsString() + " to server " + sn
            + '.');
        balancer.regionOnline(hRegionInfo, sn);
        am.assign(hRegionInfo, true, false);
        break;
      }
    }
  }
  LOG.info("Exiting from postAssign " + regionInfo.getRegionNameAsString() + '.');
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:39,代码来源:IndexMasterObserver.java

示例9: setUpBeforeClass

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  TEST_UTIL.getConfiguration().setInt("hbase.regionserver.handler.count", 2);
  TEST_UTIL.getConfiguration().setInt("hbase.regionserver.metahandler.count", 2);
  TEST_UTIL.startMiniCluster(3);

  executorService = new ThreadPoolExecutor(1, Integer.MAX_VALUE, 60, TimeUnit.SECONDS,
      new SynchronousQueue<Runnable>(), Threads.newDaemonThreadFactory("testhbck"));

  AssignmentManager assignmentManager =
    TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager();
  regionStates = assignmentManager.getRegionStates();
}
 
开发者ID:cloud-software-foundation,项目名称:c5,代码行数:14,代码来源:TestHBaseFsck.java

示例10: setUpBeforeClass

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@BeforeClass
public static void setUpBeforeClass() throws Exception {
  TEST_UTIL.getConfiguration().setBoolean(HConstants.DISTRIBUTED_LOG_SPLITTING_KEY, false);
  TEST_UTIL.startMiniCluster(3);

  AssignmentManager assignmentManager =
    TEST_UTIL.getHBaseCluster().getMaster().getAssignmentManager();
  regionStates = assignmentManager.getRegionStates();
}
 
开发者ID:daidong,项目名称:DominoHBase,代码行数:10,代码来源:TestHBaseFsck.java

示例11: testWholesomeMerge

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@Test
public void testWholesomeMerge() throws Exception {
  LOG.info("Starting testWholesomeMerge");
  final TableName tableName =
      TableName.valueOf("testWholesomeMerge");

  // Create table and load data.
  Table table = createTableAndLoadData(master, tableName);
  // Merge 1st and 2nd region
  mergeRegionsAndVerifyRegionNum(master, tableName, 0, 1,
      INITIAL_REGION_NUM - 1);

  // Merge 2nd and 3th region
  PairOfSameType<HRegionInfo> mergedRegions =
    mergeRegionsAndVerifyRegionNum(master, tableName, 1, 2,
      INITIAL_REGION_NUM - 2);

  verifyRowCount(table, ROWSIZE);

  // Randomly choose one of the two merged regions
  HRegionInfo hri = RandomUtils.nextBoolean() ?
    mergedRegions.getFirst() : mergedRegions.getSecond();
  MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();
  AssignmentManager am = cluster.getMaster().getAssignmentManager();
  RegionStates regionStates = am.getRegionStates();
  long start = EnvironmentEdgeManager.currentTime();
  while (!regionStates.isRegionInState(hri, State.MERGED)) {
    assertFalse("Timed out in waiting one merged region to be in state MERGED",
      EnvironmentEdgeManager.currentTime() - start > 60000);
    Thread.sleep(500);
  }

  // We should not be able to assign it again
  am.assign(hri, true, true);
  assertFalse("Merged region can't be assigned",
    regionStates.isRegionInTransition(hri));
  assertTrue(regionStates.isRegionInState(hri, State.MERGED));

  // We should not be able to unassign it either
  am.unassign(hri, true, null);
  assertFalse("Merged region can't be unassigned",
    regionStates.isRegionInTransition(hri));
  assertTrue(regionStates.isRegionInState(hri, State.MERGED));

  table.close();
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:47,代码来源:TestRegionMergeTransactionOnCluster.java

示例12: handleTableOperation

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@Override
protected void handleTableOperation(List<HRegionInfo> regions)
throws IOException, KeeperException {
  MasterCoprocessorHost cpHost = ((HMaster) this.server)
      .getCoprocessorHost();
  if (cpHost != null) {
    cpHost.preDeleteTableHandler(this.tableName);
  }

  // 1. Wait because of region in transition
  AssignmentManager am = this.masterServices.getAssignmentManager();
  RegionStates states = am.getRegionStates();
  long waitTime = server.getConfiguration().
    getLong("hbase.master.wait.on.region", 5 * 60 * 1000);
  for (HRegionInfo region : regions) {
    long done = System.currentTimeMillis() + waitTime;
    while (System.currentTimeMillis() < done) {
      if (states.isRegionInState(region, State.FAILED_OPEN)) {
        am.regionOffline(region);
      }
      if (!states.isRegionInTransition(region)) break;
      Threads.sleep(waitingTimeForEvents);
      LOG.debug("Waiting on region to clear regions in transition; "
        + am.getRegionStates().getRegionTransitionState(region));
    }
    if (states.isRegionInTransition(region)) {
      throw new IOException("Waited hbase.master.wait.on.region (" +
        waitTime + "ms) for region to leave region " +
        region.getRegionNameAsString() + " in transitions");
    }
  }

  // 2. Remove regions from META
  LOG.debug("Deleting regions from META");
  MetaEditor.deleteRegions(this.server.getCatalogTracker(), regions);

  // 3. Move the table in /hbase/.tmp
  MasterFileSystem mfs = this.masterServices.getMasterFileSystem();
  Path tempTableDir = mfs.moveTableToTemp(tableName);

  try {
    // 4. Delete regions from FS (temp directory)
    FileSystem fs = mfs.getFileSystem();
    for (HRegionInfo hri: regions) {
      LOG.debug("Archiving region " + hri.getRegionNameAsString() + " from FS");
      HFileArchiver.archiveRegion(fs, mfs.getRootDir(),
          tempTableDir, new Path(tempTableDir, hri.getEncodedName()));
    }

    // 5. Delete table from FS (temp directory)
    if (!fs.delete(tempTableDir, true)) {
      LOG.error("Couldn't delete " + tempTableDir);
    }

    LOG.debug("Table '" + tableName + "' archived!");
  } finally {
    // 6. Update table descriptor cache
    LOG.debug("Removing '" + tableName + "' descriptor.");
    this.masterServices.getTableDescriptors().remove(tableName);

    // 7. Clean up regions of the table in RegionStates.
    LOG.debug("Removing '" + tableName + "' from region states.");
    states.tableDeleted(tableName);

    // 8. If entry for this table in zk, and up in AssignmentManager, remove it.
    LOG.debug("Marking '" + tableName + "' as deleted.");
    am.getZKTable().setDeletedTable(tableName);
  }

  if (cpHost != null) {
    cpHost.postDeleteTableHandler(this.tableName);
  }
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:74,代码来源:DeleteTableHandler.java

示例13: testWholesomeMerge

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@Test
public void testWholesomeMerge() throws Exception {
  LOG.info("Starting testWholesomeMerge");
  final TableName tableName =
      TableName.valueOf("testWholesomeMerge");

  // Create table and load data.
  HTable table = createTableAndLoadData(master, tableName);
  // Merge 1st and 2nd region
  mergeRegionsAndVerifyRegionNum(master, tableName, 0, 1,
      INITIAL_REGION_NUM - 1);

  // Merge 2nd and 3th region
  PairOfSameType<HRegionInfo> mergedRegions =
    mergeRegionsAndVerifyRegionNum(master, tableName, 1, 2,
      INITIAL_REGION_NUM - 2);

  verifyRowCount(table, ROWSIZE);

  // Randomly choose one of the two merged regions
  HRegionInfo hri = RandomUtils.nextBoolean() ?
    mergedRegions.getFirst() : mergedRegions.getSecond();
  MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();
  AssignmentManager am = cluster.getMaster().getAssignmentManager();
  RegionStates regionStates = am.getRegionStates();
  long start = EnvironmentEdgeManager.currentTimeMillis();
  while (!regionStates.isRegionInState(hri, State.MERGED)) {
    assertFalse("Timed out in waiting one merged region to be in state MERGED",
      EnvironmentEdgeManager.currentTimeMillis() - start > 60000);
    Thread.sleep(500);
  }

  // We should not be able to assign it again
  am.assign(hri, true, true);
  assertFalse("Merged region can't be assigned",
    regionStates.isRegionInTransition(hri));
  assertTrue(regionStates.isRegionInState(hri, State.MERGED));

  // We should not be able to unassign it either
  am.unassign(hri, true, null);
  assertFalse("Merged region can't be unassigned",
    regionStates.isRegionInTransition(hri));
  assertTrue(regionStates.isRegionInState(hri, State.MERGED));

  table.close();
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:47,代码来源:TestRegionMergeTransactionOnCluster.java

示例14: handleTableOperation

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
@Override
protected void handleTableOperation(List<HRegionInfo> regions)
throws IOException, KeeperException {
  MasterCoprocessorHost cpHost = ((HMaster) this.server)
      .getCoprocessorHost();
  if (cpHost != null) {
    cpHost.preDeleteTableHandler(this.tableName);
  }

  // 1. Wait because of region in transition
  AssignmentManager am = this.masterServices.getAssignmentManager();
  RegionStates states = am.getRegionStates();
  long waitTime = server.getConfiguration().
    getLong("hbase.master.wait.on.region", 5 * 60 * 1000);
  for (HRegionInfo region : regions) {
    long done = System.currentTimeMillis() + waitTime;
    while (System.currentTimeMillis() < done) {
      if (states.isRegionInState(region, State.FAILED_OPEN)) {
        am.regionOffline(region);
      }
      if (!states.isRegionInTransition(region)) break;
      Threads.sleep(waitingTimeForEvents);
      LOG.debug("Waiting on region to clear regions in transition; "
        + am.getRegionStates().getRegionTransitionState(region));
    }
    if (states.isRegionInTransition(region)) {
      throw new IOException("Waited hbase.master.wait.on.region (" +
        waitTime + "ms) for region to leave region " +
        region.getRegionNameAsString() + " in transitions");
    }
  }

  // 2. Remove regions from META
  LOG.debug("Deleting regions from META");
  MetaEditor.deleteRegions(this.server.getCatalogTracker(), regions);

  // 3. Move the table in /hbase/.tmp
  MasterFileSystem mfs = this.masterServices.getMasterFileSystem();
  Path tempTableDir = mfs.moveTableToTemp(tableName);

  try {
    // 4. Delete regions from FS (temp directory)
    FileSystem fs = mfs.getFileSystem();
    for (HRegionInfo hri: regions) {
      LOG.debug("Archiving region " + hri.getRegionNameAsString() + " from FS");
      HFileArchiver.archiveRegion(fs, mfs.getRootDir(),
          tempTableDir, new Path(tempTableDir, hri.getEncodedName()));
    }

    // 5. Delete table from FS (temp directory)
    if (!fs.delete(tempTableDir, true)) {
      LOG.error("Couldn't delete " + tempTableDir);
    }

    LOG.debug("Table '" + tableName + "' archived!");
  } finally {
    // 6. Update table descriptor cache
    LOG.debug("Removing '" + tableName + "' descriptor.");
    this.masterServices.getTableDescriptors().remove(tableName);

    // 7. If entry for this table in zk, and up in AssignmentManager, remove it.
    LOG.debug("Marking '" + tableName + "' as deleted.");
    am.getZKTable().setDeletedTable(tableName);
  }

  if (cpHost != null) {
    cpHost.postDeleteTableHandler(this.tableName);
  }
}
 
开发者ID:cloud-software-foundation,项目名称:c5,代码行数:70,代码来源:DeleteTableHandler.java

示例15: testSplitRegionNotAssignable

import org.apache.hadoop.hbase.master.AssignmentManager; //导入方法依赖的package包/类
/**
 * After a region is split, it should not be able to assign again
 */
@Test
public void testSplitRegionNotAssignable() throws Exception {
  final TableName tableName =
      TableName.valueOf("testSplitRegionWithNoStoreFiles");
  // Create table then get the single region for our new table.
  HTable t = createTableAndWait(tableName.getName(), CF);
  try {
    List<HRegion> regions = cluster.getRegions(tableName);
    int regionServerIndex = cluster.getServerWith(regions.get(0).getRegionName());
    HRegionServer regionServer = cluster.getRegionServer(regionServerIndex);
    insertData(tableName.getName(), admin, t);
    // Turn off balancer so it doesn't cut in and mess up our placements.
    admin.setBalancerRunning(false, true);
    // Turn off the meta scanner so it don't remove parent on us.
    cluster.getMaster().setCatalogJanitorEnabled(false);
    final HRegion region = findSplittableRegion(regions);
    assertTrue("not able to find a splittable region", region != null);

    // Now split.
    SplitTransaction st = new MockedSplitTransaction(region, Bytes.toBytes("row2"));
    try {
      st.prepare();
      st.execute(regionServer, regionServer);
    } catch (IOException e) {
      fail("Split execution should have succeeded with no exceptions thrown");
    }

    List<HRegion> daughters = cluster.getRegions(tableName);
    assertTrue(daughters.size() == regions.size() + 1);

    HRegionInfo hri = region.getRegionInfo(); // split parent
    AssignmentManager am = cluster.getMaster().getAssignmentManager();
    RegionStates regionStates = am.getRegionStates();
    long start = EnvironmentEdgeManager.currentTimeMillis();
    while (!regionStates.isRegionInState(hri, State.SPLIT)) {
      assertFalse("Timed out in waiting split parent to be in state SPLIT",
        EnvironmentEdgeManager.currentTimeMillis() - start > 60000);
      Thread.sleep(500);
    }

    // We should not be able to assign it again
    am.assign(hri, true, true);
    assertFalse("Split region can't be assigned",
      regionStates.isRegionInTransition(hri));
    assertTrue(regionStates.isRegionInState(hri, State.SPLIT));

    // We should not be able to unassign it either
    am.unassign(hri, true, null);
    assertFalse("Split region can't be unassigned",
      regionStates.isRegionInTransition(hri));
    assertTrue(regionStates.isRegionInState(hri, State.SPLIT));
  } finally {
    admin.setBalancerRunning(true, false);
    cluster.getMaster().setCatalogJanitorEnabled(true);
  }
}
 
开发者ID:cloud-software-foundation,项目名称:c5,代码行数:60,代码来源:TestSplitTransactionOnCluster.java


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