Java 类org.apache.hadoop.hbase.master.RegionState 实例源码

项目:ditb    文件:ClosedRegionHandler.java   
@Override
public void process() {
  LOG.debug("Handling CLOSED event for " + regionInfo.getEncodedName());
  // Check if this table is being disabled or not
  if (this.assignmentManager.getTableStateManager().isTableState(this.regionInfo.getTable(),
      ZooKeeperProtos.Table.State.DISABLED, ZooKeeperProtos.Table.State.DISABLING) ||
      assignmentManager.getReplicasToClose().contains(regionInfo)) {
    assignmentManager.offlineDisabledRegion(regionInfo);
    return;
  }
  // ZK Node is in CLOSED state, assign it.
  assignmentManager.getRegionStates().updateRegionState(
    regionInfo, RegionState.State.CLOSED);
  // This below has to do w/ online enable/disable of a table
  assignmentManager.removeClosedRegion(regionInfo);
  assignmentManager.assign(regionInfo, true);
}
项目:ditb    文件:DisableTableProcedure.java   
@Override
protected void populatePool(ExecutorService pool) {
  RegionStates regionStates = assignmentManager.getRegionStates();
  for (final HRegionInfo region : regions) {
    if (regionStates.isRegionInTransition(region)
        && !regionStates.isRegionInState(region, RegionState.State.FAILED_CLOSE)) {
      continue;
    }
    pool.execute(Trace.wrap("DisableTableHandler.BulkDisabler", new Runnable() {
      @Override
      public void run() {
        assignmentManager.unassign(region);
      }
    }));
  }
}
项目:ditb    文件:HBaseFsckRepair.java   
public static void waitUntilAssigned(Admin admin,
    HRegionInfo region) throws IOException, InterruptedException {
  long timeout = admin.getConfiguration().getLong("hbase.hbck.assign.timeout", 120000);
  long expiration = timeout + EnvironmentEdgeManager.currentTime();
  while (EnvironmentEdgeManager.currentTime() < expiration) {
    try {
      Map<String, RegionState> rits=
          admin.getClusterStatus().getRegionsInTransition();

      if (rits.keySet() != null && !rits.keySet().contains(region.getEncodedName())) {
        // yay! no longer RIT
        return;
      }
      // still in rit
      LOG.info("Region still in transition, waiting for "
          + "it to become assigned: " + region);
    } catch (IOException e) {
      LOG.warn("Exception when waiting for region to become assigned,"
          + " retrying", e);
    }
    Thread.sleep(1000);
  }
  throw new IOException("Region " + region + " failed to move out of " +
      "transition within timeout " + timeout + "ms");
}
项目:ditb    文件:TestMetaTableLocator.java   
private void testVerifyMetaRegionLocationWithException(Exception ex)
throws IOException, InterruptedException, KeeperException, ServiceException {
  // Mock an ClientProtocol.
  final ClientProtos.ClientService.BlockingInterface implementation =
    Mockito.mock(ClientProtos.ClientService.BlockingInterface.class);

  ClusterConnection connection = mockConnection(null, implementation);

  // If a 'get' is called on mocked interface, throw connection refused.
  Mockito.when(implementation.get((RpcController) Mockito.any(), (GetRequest) Mockito.any())).
    thenThrow(new ServiceException(ex));

  long timeout = UTIL.getConfiguration().
          getLong("hbase.catalog.verification.timeout", 1000);
  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPENING);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(
    connection, watcher, timeout));

  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPEN);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(
          connection, watcher, timeout));
}
项目:ditb    文件:TestMetaTableLocator.java   
/**
 * Test get of meta region fails properly if nothing to connect to.
 * @throws IOException
 * @throws InterruptedException
 * @throws KeeperException
 * @throws ServiceException
 */
@Test
public void testVerifyMetaRegionLocationFails()
throws IOException, InterruptedException, KeeperException, ServiceException {
  ClusterConnection connection = Mockito.mock(ClusterConnection.class);
  ServiceException connectException =
    new ServiceException(new ConnectException("Connection refused"));
  final AdminProtos.AdminService.BlockingInterface implementation =
    Mockito.mock(AdminProtos.AdminService.BlockingInterface.class);
  Mockito.when(implementation.getRegionInfo((RpcController)Mockito.any(),
    (GetRegionInfoRequest)Mockito.any())).thenThrow(connectException);
  Mockito.when(connection.getAdmin(Mockito.any(ServerName.class))).
    thenReturn(implementation);
      RpcControllerFactory controllerFactory = Mockito.mock(RpcControllerFactory.class);
      Mockito.when(controllerFactory.newController()).thenReturn(
        Mockito.mock(PayloadCarryingRpcController.class));
      Mockito.when(connection.getRpcControllerFactory()).thenReturn(controllerFactory);

  ServerName sn = ServerName.valueOf("example.com", 1234, System.currentTimeMillis());
  MetaTableLocator.setMetaLocation(this.watcher,
          sn,
          RegionState.State.OPENING);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(connection, watcher, 100));
  MetaTableLocator.setMetaLocation(this.watcher, sn, RegionState.State.OPEN);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(connection, watcher, 100));
}
项目:ditb    文件:TestMetaTableLocator.java   
/**
 * Test waiting on meat w/ no timeout specified.
 * @throws IOException
 * @throws InterruptedException
 * @throws KeeperException
 */
@Test public void testNoTimeoutWaitForMeta()
throws IOException, InterruptedException, KeeperException {
  final MetaTableLocator mtl = new MetaTableLocator();
  ServerName hsa = mtl.getMetaRegionLocation(watcher);
  assertNull(hsa);

  // Now test waiting on meta location getting set.
  Thread t = new WaitOnMetaThread();
  startWaitAliveThenWaitItLives(t, 1);
  // Set a meta location.
  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPEN);
  hsa = SN;
  // Join the thread... should exit shortly.
  t.join();
  // Now meta is available.
  assertTrue(mtl.getMetaRegionLocation(watcher).equals(hsa));
}
项目:ditb    文件:MetaTableLocator.java   
/**
 * Sets the location of <code>hbase:meta</code> in ZooKeeper to the
 * specified server address.
 * @param zookeeper
 * @param serverName
 * @param replicaId
 * @param state
 * @throws KeeperException
 */
public static void setMetaLocation(ZooKeeperWatcher zookeeper,
    ServerName serverName, int replicaId, RegionState.State state) throws KeeperException {
  LOG.info("Setting hbase:meta region location in ZooKeeper as " + serverName);
  // Make the MetaRegionServer pb and then get its bytes and save this as
  // the znode content.
  MetaRegionServer pbrsr = MetaRegionServer.newBuilder()
    .setServer(ProtobufUtil.toServerName(serverName))
    .setRpcVersion(HConstants.RPC_CURRENT_VERSION)
    .setState(state.convert()).build();
  byte[] data = ProtobufUtil.prependPBMagic(pbrsr.toByteArray());
  try {
    ZKUtil.setData(zookeeper, zookeeper.getZNodeForReplica(replicaId), data);
  } catch(KeeperException.NoNodeException nne) {
    if (replicaId == HRegionInfo.DEFAULT_REPLICA_ID) {
      LOG.debug("META region location doesn't exist, create it");
    } else {
      LOG.debug("META region location doesn't exist for replicaId " + replicaId +
          ", create it");
    }
    ZKUtil.createAndWatch(zookeeper, zookeeper.getZNodeForReplica(replicaId), data);
  }
}
项目:ditb    文件:ClusterStatus.java   
public ClusterStatus(final String hbaseVersion, final String clusterid,
    final Map<ServerName, ServerLoad> servers,
    final Collection<ServerName> deadServers,
    final ServerName master,
    final Collection<ServerName> backupMasters,
    final Map<String, RegionState> rit,
    final String[] masterCoprocessors,
    final Boolean balancerOn) {
  this.hbaseVersion = hbaseVersion;

  this.liveServers = servers;
  this.deadServers = deadServers;
  this.master = master;
  this.backupMasters = backupMasters;
  this.intransition = rit;
  this.clusterId = clusterid;
  this.masterCoprocessors = masterCoprocessors;
  this.balancerOn = balancerOn;
}
项目:pbase    文件:ClosedRegionHandler.java   
@Override
public void process() {
  LOG.debug("Handling CLOSED event for " + regionInfo.getEncodedName());
  // Check if this table is being disabled or not
  if (this.assignmentManager.getTableStateManager().isTableState(this.regionInfo.getTable(),
      ZooKeeperProtos.Table.State.DISABLED, ZooKeeperProtos.Table.State.DISABLING)) {
    assignmentManager.offlineDisabledRegion(regionInfo);
    return;
  }
  // ZK Node is in CLOSED state, assign it.
  assignmentManager.getRegionStates().updateRegionState(
    regionInfo, RegionState.State.CLOSED);
  // This below has to do w/ online enable/disable of a table
  assignmentManager.removeClosedRegion(regionInfo);
  assignmentManager.assign(regionInfo, true);
}
项目:pbase    文件:HBaseFsckRepair.java   
public static void waitUntilAssigned(Admin admin,
    HRegionInfo region) throws IOException, InterruptedException {
  long timeout = admin.getConfiguration().getLong("hbase.hbck.assign.timeout", 120000);
  long expiration = timeout + System.currentTimeMillis();
  while (System.currentTimeMillis() < expiration) {
    try {
      Map<String, RegionState> rits=
          admin.getClusterStatus().getRegionsInTransition();

      if (rits.keySet() != null && !rits.keySet().contains(region.getEncodedName())) {
        // yay! no longer RIT
        return;
      }
      // still in rit
      LOG.info("Region still in transition, waiting for "
          + "it to become assigned: " + region);
    } catch (IOException e) {
      LOG.warn("Exception when waiting for region to become assigned,"
          + " retrying", e);
    }
    Thread.sleep(1000);
  }
  throw new IOException("Region " + region + " failed to move out of " +
      "transition within timeout " + timeout + "ms");
}
项目:pbase    文件:TestMetaTableLocator.java   
private void testVerifyMetaRegionLocationWithException(Exception ex)
throws IOException, InterruptedException, KeeperException, ServiceException {
  // Mock an ClientProtocol.
  final ClientProtos.ClientService.BlockingInterface implementation =
    Mockito.mock(ClientProtos.ClientService.BlockingInterface.class);

  ClusterConnection connection = mockConnection(null, implementation);

  // If a 'get' is called on mocked interface, throw connection refused.
  Mockito.when(implementation.get((RpcController) Mockito.any(), (GetRequest) Mockito.any())).
    thenThrow(new ServiceException(ex));

  long timeout = UTIL.getConfiguration().
          getLong("hbase.catalog.verification.timeout", 1000);
  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPENING);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(
    connection, watcher, timeout));

  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPEN);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(
          connection, watcher, timeout));
}
项目:pbase    文件:TestMetaTableLocator.java   
/**
 * Test get of meta region fails properly if nothing to connect to.
 * @throws IOException
 * @throws InterruptedException
 * @throws KeeperException
 * @throws ServiceException
 */
@Test
public void testVerifyMetaRegionLocationFails()
throws IOException, InterruptedException, KeeperException, ServiceException {
  ClusterConnection connection = Mockito.mock(ClusterConnection.class);
  ServiceException connectException =
    new ServiceException(new ConnectException("Connection refused"));
  final AdminProtos.AdminService.BlockingInterface implementation =
    Mockito.mock(AdminProtos.AdminService.BlockingInterface.class);
  Mockito.when(implementation.getRegionInfo((RpcController)Mockito.any(),
    (GetRegionInfoRequest)Mockito.any())).thenThrow(connectException);
  Mockito.when(connection.getAdmin(Mockito.any(ServerName.class))).
    thenReturn(implementation);

  ServerName sn = ServerName.valueOf("example.com", 1234, System.currentTimeMillis());
  MetaTableLocator.setMetaLocation(this.watcher,
          sn,
          RegionState.State.OPENING);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(connection, watcher, 100));
  MetaTableLocator.setMetaLocation(this.watcher, sn, RegionState.State.OPEN);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(connection, watcher, 100));
}
项目:pbase    文件:TestMetaTableLocator.java   
/**
 * Test waiting on meat w/ no timeout specified.
 * @throws IOException
 * @throws InterruptedException
 * @throws KeeperException
 */
@Test public void testNoTimeoutWaitForMeta()
throws IOException, InterruptedException, KeeperException {
  final MetaTableLocator mtl = new MetaTableLocator();
  ServerName hsa = mtl.getMetaRegionLocation(watcher);
  assertNull(hsa);

  // Now test waiting on meta location getting set.
  Thread t = new WaitOnMetaThread();
  startWaitAliveThenWaitItLives(t, 1);
  // Set a meta location.
  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPEN);
  hsa = SN;
  // Join the thread... should exit shortly.
  t.join();
  // Now meta is available.
  assertTrue(mtl.getMetaRegionLocation(watcher).equals(hsa));
}
项目:pbase    文件:MetaTableLocator.java   
/**
 * Sets the location of <code>hbase:meta</code> in ZooKeeper to the
 * specified server address.
 * @param zookeeper zookeeper reference
 * @param serverName The server hosting <code>hbase:meta</code>
 * @param state The region transition state
 * @throws KeeperException unexpected zookeeper exception
 */
public static void setMetaLocation(ZooKeeperWatcher zookeeper,
    ServerName serverName, RegionState.State state) throws KeeperException {
  LOG.info("Setting hbase:meta region location in ZooKeeper as " + serverName);
  // Make the MetaRegionServer pb and then get its bytes and save this as
  // the znode content.
  MetaRegionServer pbrsr = MetaRegionServer.newBuilder()
    .setServer(ProtobufUtil.toServerName(serverName))
    .setRpcVersion(HConstants.RPC_CURRENT_VERSION)
    .setState(state.convert()).build();
  byte[] data = ProtobufUtil.prependPBMagic(pbrsr.toByteArray());
  try {
    ZKUtil.setData(zookeeper, zookeeper.metaServerZNode, data);
  } catch(KeeperException.NoNodeException nne) {
    LOG.debug("META region location doesn't existed, create it");
    ZKUtil.createAndWatch(zookeeper, zookeeper.metaServerZNode, data);
  }
}
项目:pbase    文件:ClusterStatus.java   
public ClusterStatus(final String hbaseVersion, final String clusterid,
    final Map<ServerName, ServerLoad> servers,
    final Collection<ServerName> deadServers,
    final ServerName master,
    final Collection<ServerName> backupMasters,
    final Map<String, RegionState> rit,
    final String[] masterCoprocessors,
    final Boolean balancerOn) {
  this.hbaseVersion = hbaseVersion;

  this.liveServers = servers;
  this.deadServers = deadServers;
  this.master = master;
  this.backupMasters = backupMasters;
  this.intransition = rit;
  this.clusterId = clusterid;
  this.masterCoprocessors = masterCoprocessors;
  this.balancerOn = balancerOn;
}
项目:HIndex    文件:OpenedRegionHandler.java   
@Override
public void process() {
  // Code to defend against case where we get SPLIT before region open
  // processing completes; temporary till we make SPLITs go via zk -- 0.92.
  RegionState regionState = this.assignmentManager.getRegionStates()
    .getRegionTransitionState(regionInfo.getEncodedName());
  boolean openedNodeDeleted = false;
  if (regionState != null && regionState.isOpened()) {
    openedNodeDeleted = deleteOpenedNode(expectedVersion);
    if (!openedNodeDeleted) {
      LOG.error("Znode of region " + regionInfo.getShortNameToLog() + " could not be deleted.");
    }
  } else {
    LOG.warn("Skipping the onlining of " + regionInfo.getShortNameToLog() +
      " because regions is NOT in RIT -- presuming this is because it SPLIT");
  }
  if (!openedNodeDeleted) {
    if (this.assignmentManager.getZKTable().isDisablingOrDisabledTable(regionInfo.getTable())) {
      debugLog(regionInfo, "Opened region "
          + regionInfo.getShortNameToLog() + " but "
          + "this table is disabled, triggering close of region");
      assignmentManager.unassign(regionInfo);
    }
  }
}
项目:HIndex    文件:ClosedRegionHandler.java   
@Override
public void process() {
  LOG.debug("Handling CLOSED event for " + regionInfo.getEncodedName());
  // Check if this table is being disabled or not
  if (this.assignmentManager.getZKTable().
      isDisablingOrDisabledTable(this.regionInfo.getTable())) {
    assignmentManager.offlineDisabledRegion(regionInfo);
    return;
  }
  // ZK Node is in CLOSED state, assign it.
  assignmentManager.getRegionStates().updateRegionState(
    regionInfo, RegionState.State.CLOSED);
  // This below has to do w/ online enable/disable of a table
  assignmentManager.removeClosedRegion(regionInfo);
  assignmentManager.assign(regionInfo, true);
}
项目:HIndex    文件:HBaseFsckRepair.java   
public static void waitUntilAssigned(HBaseAdmin admin,
    HRegionInfo region) throws IOException, InterruptedException {
  long timeout = admin.getConfiguration().getLong("hbase.hbck.assign.timeout", 120000);
  long expiration = timeout + System.currentTimeMillis();
  while (System.currentTimeMillis() < expiration) {
    try {
      Map<String, RegionState> rits=
          admin.getClusterStatus().getRegionsInTransition();

      if (rits.keySet() != null && !rits.keySet().contains(region.getEncodedName())) {
        // yay! no longer RIT
        return;
      }
      // still in rit
      LOG.info("Region still in transition, waiting for "
          + "it to become assigned: " + region);
    } catch (IOException e) {
      LOG.warn("Exception when waiting for region to become assigned,"
          + " retrying", e);
    }
    Thread.sleep(1000);
  }
  throw new IOException("Region " + region + " failed to move out of " +
      "transition within timeout " + timeout + "ms");
}
项目:HIndex    文件:ClusterStatus.java   
public ClusterStatus(final String hbaseVersion, final String clusterid,
    final Map<ServerName, ServerLoad> servers,
    final Collection<ServerName> deadServers,
    final ServerName master,
    final Collection<ServerName> backupMasters,
    final Map<String, RegionState> rit,
    final String[] masterCoprocessors,
    final Boolean balancerOn) {
  this.hbaseVersion = hbaseVersion;

  this.liveServers = servers;
  this.deadServers = deadServers;
  this.master = master;
  this.backupMasters = backupMasters;
  this.intransition = rit;
  this.clusterId = clusterid;
  this.masterCoprocessors = masterCoprocessors;
  this.balancerOn = balancerOn;
}
项目:HIndex    文件:IndexMasterObserver.java   
private boolean checkRegionInTransition(ObserverContext<MasterCoprocessorEnvironment> ctx,
    HRegionInfo hri) {
  MasterServices master = ctx.getEnvironment().getMasterServices();
  RegionStates regionStates = master.getAssignmentManager().getRegionStates();
  String tableName = hri.getTable().getNameAsString();
  if (!IndexUtils.isIndexTable(tableName)) {
    if (regionStates.isRegionInTransition(hri)) {
      return true;
    } else {
      String indexTableName = IndexUtils.getIndexTableName(tableName);
      for (Entry<String, RegionState> region : regionStates.getRegionsInTransition().entrySet()) {
        HRegionInfo regionInfo = region.getValue().getRegion();
        if (indexTableName.equals(regionInfo.getTable().getNameAsString())) {
          if (Bytes.compareTo(hri.getStartKey(), regionInfo.getStartKey()) == 0) {
            return true;
          }
        }
      }
    }
  }
  return false;
}
项目:hbase    文件:AssignmentManager.java   
private void update(final Collection<RegionState> regions, final long currentTime) {
  for (RegionState state: regions) {
    totalRITs++;
    final long ritTime = currentTime - state.getStamp();
    if (ritTime > ritThreshold) {
      if (ritsOverThreshold == null) {
        ritsOverThreshold = new HashMap<String, RegionState>();
      }
      ritsOverThreshold.put(state.getRegion().getEncodedName(), state);
      totalRITsTwiceThreshold += (ritTime > (ritThreshold * 2)) ? 1 : 0;
    }
    if (oldestRITTime < ritTime) {
      oldestRITTime = ritTime;
    }
  }
}
项目:hbase    文件:TestMetaTableLocator.java   
private void testVerifyMetaRegionLocationWithException(Exception ex)
throws IOException, InterruptedException, KeeperException, ServiceException {
  // Mock an ClientProtocol.
  final ClientProtos.ClientService.BlockingInterface implementation =
    Mockito.mock(ClientProtos.ClientService.BlockingInterface.class);

  ClusterConnection connection = mockConnection(null, implementation);

  // If a 'get' is called on mocked interface, throw connection refused.
  Mockito.when(implementation.get((RpcController) Mockito.any(), (GetRequest) Mockito.any())).
    thenThrow(new ServiceException(ex));

  long timeout = UTIL.getConfiguration().
          getLong("hbase.catalog.verification.timeout", 1000);
  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPENING);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(
    connection, watcher, timeout));

  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPEN);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(
          connection, watcher, timeout));
}
项目:hbase    文件:TestMetaTableLocator.java   
/**
 * Test get of meta region fails properly if nothing to connect to.
 * @throws IOException
 * @throws InterruptedException
 * @throws KeeperException
 * @throws ServiceException
 */
@Test
public void testVerifyMetaRegionLocationFails()
throws IOException, InterruptedException, KeeperException, ServiceException {
  ClusterConnection connection = Mockito.mock(ClusterConnection.class);
  ServiceException connectException =
    new ServiceException(new ConnectException("Connection refused"));
  final AdminProtos.AdminService.BlockingInterface implementation =
    Mockito.mock(AdminProtos.AdminService.BlockingInterface.class);
  Mockito.when(implementation.getRegionInfo((RpcController)Mockito.any(),
    (GetRegionInfoRequest)Mockito.any())).thenThrow(connectException);
  Mockito.when(connection.getAdmin(Mockito.any())).
    thenReturn(implementation);
      RpcControllerFactory controllerFactory = Mockito.mock(RpcControllerFactory.class);
      Mockito.when(controllerFactory.newController()).thenReturn(
        Mockito.mock(HBaseRpcController.class));
      Mockito.when(connection.getRpcControllerFactory()).thenReturn(controllerFactory);

  ServerName sn = ServerName.valueOf("example.com", 1234, System.currentTimeMillis());
  MetaTableLocator.setMetaLocation(this.watcher,
          sn,
          RegionState.State.OPENING);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(connection, watcher, 100));
  MetaTableLocator.setMetaLocation(this.watcher, sn, RegionState.State.OPEN);
  assertFalse(new MetaTableLocator().verifyMetaRegionLocation(connection, watcher, 100));
}
项目:hbase    文件:TestMetaTableLocator.java   
/**
 * Test waiting on meat w/ no timeout specified.
 * @throws IOException
 * @throws InterruptedException
 * @throws KeeperException
 */
@Test public void testNoTimeoutWaitForMeta()
throws IOException, InterruptedException, KeeperException {
  final MetaTableLocator mtl = new MetaTableLocator();
  ServerName hsa = mtl.getMetaRegionLocation(watcher);
  assertNull(hsa);

  // Now test waiting on meta location getting set.
  Thread t = new WaitOnMetaThread();
  startWaitAliveThenWaitItLives(t, 1);
  // Set a meta location.
  MetaTableLocator.setMetaLocation(this.watcher, SN, RegionState.State.OPEN);
  hsa = SN;
  // Join the thread... should exit shortly.
  t.join();
  // Now meta is available.
  assertTrue(mtl.getMetaRegionLocation(watcher).equals(hsa));
}
项目:hbase    文件:TestRegionMergeTransactionOnCluster.java   
@Override
public ReportRegionStateTransitionResponse reportRegionStateTransition(RpcController c,
    ReportRegionStateTransitionRequest req) throws ServiceException {
  ReportRegionStateTransitionResponse resp = super.reportRegionStateTransition(c, req);
  if (enabled.get() && req.getTransition(0).getTransitionCode()
      == TransitionCode.READY_TO_MERGE && !resp.hasErrorMessage()) {
    RegionStates regionStates = myMaster.getAssignmentManager().getRegionStates();
    for (RegionState regionState: regionStates.getRegionsStateInTransition()) {
      // Find the merging_new region and remove it
      if (regionState.isMergingNew()) {
        regionStates.deleteRegion(regionState.getRegion());
      }
    }
  }
  return resp;
}
项目:hbase    文件:MetaTableAccessor.java   
/**
 * Adds a hbase:meta row for each of the specified new regions. Initial state for new regions
 * is CLOSED.
 * @param connection connection we're using
 * @param regionInfos region information list
 * @param regionReplication
 * @param ts desired timestamp
 * @throws IOException if problem connecting or updating meta
 */
public static void addRegionsToMeta(Connection connection, List<RegionInfo> regionInfos,
    int regionReplication, long ts) throws IOException {
  List<Put> puts = new ArrayList<>();
  for (RegionInfo regionInfo : regionInfos) {
    if (RegionReplicaUtil.isDefaultReplica(regionInfo)) {
      Put put = makePutFromRegionInfo(regionInfo, ts);
      // New regions are added with initial state of CLOSED.
      addRegionStateToPut(put, RegionState.State.CLOSED);
      // Add empty locations for region replicas so that number of replicas can be cached
      // whenever the primary region is looked up from meta
      for (int i = 1; i < regionReplication; i++) {
        addEmptyLocation(put, i);
      }
      puts.add(put);
    }
  }
  putsToMetaTable(connection, puts);
  LOG.info("Added {} regions to meta.", puts.size());
}
项目:hbase    文件:ClusterMetricsBuilder.java   
ClusterMetricsImpl(String hbaseVersion, List<ServerName> deadServerNames,
    Map<ServerName, ServerMetrics> liveServerMetrics,
    ServerName masterName,
    List<ServerName> backupMasterNames,
    List<RegionState> regionsInTransition,
    String clusterId,
    List<String> masterCoprocessorNames,
    Boolean balancerOn,
    int masterInfoPort) {
  this.hbaseVersion = hbaseVersion;
  this.deadServerNames = Preconditions.checkNotNull(deadServerNames);
  this.liveServerMetrics = Preconditions.checkNotNull(liveServerMetrics);
  this.masterName = masterName;
  this.backupMasterNames = Preconditions.checkNotNull(backupMasterNames);
  this.regionsInTransition = Preconditions.checkNotNull(regionsInTransition);
  this.clusterId = clusterId;
  this.masterCoprocessorNames = Preconditions.checkNotNull(masterCoprocessorNames);
  this.balancerOn = balancerOn;
  this.masterInfoPort = masterInfoPort;
}
项目:hbase    文件:ClusterStatus.java   
/**
 * @deprecated As of release 2.0.0, this will be removed in HBase 3.0.0
 */
@Deprecated
public ClusterStatus(final String hbaseVersion, final String clusterid,
    final Map<ServerName, ServerLoad> servers,
    final Collection<ServerName> deadServers,
    final ServerName master,
    final Collection<ServerName> backupMasters,
    final List<RegionState> rit,
    final String[] masterCoprocessors,
    final Boolean balancerOn,
    final int masterInfoPort) {
  // TODO: make this constructor private
  this(ClusterMetricsBuilder.newBuilder().setHBaseVersion(hbaseVersion)
    .setDeadServerNames(new ArrayList<>(deadServers))
    .setLiveServerMetrics(servers.entrySet().stream()
    .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())))
    .setBackerMasterNames(new ArrayList<>(backupMasters)).setBalancerOn(balancerOn)
    .setClusterId(clusterid)
    .setMasterCoprocessorNames(Arrays.asList(masterCoprocessors))
    .setMasterName(master)
    .setMasterInfoPort(masterInfoPort)
    .setRegionsInTransition(rit)
    .build());
}
项目:PyroDB    文件:OpenedRegionHandler.java   
@Override
public void process() {
  // Code to defend against case where we get SPLIT before region open
  // processing completes; temporary till we make SPLITs go via zk -- 0.92.
  RegionState regionState = this.assignmentManager.getRegionStates()
    .getRegionTransitionState(regionInfo.getEncodedName());
  boolean openedNodeDeleted = false;
  if (regionState != null && regionState.isOpened()) {
    openedNodeDeleted = deleteOpenedNode(expectedVersion);
    if (!openedNodeDeleted) {
      LOG.error("Znode of region " + regionInfo.getShortNameToLog() + " could not be deleted.");
    }
  } else {
    LOG.warn("Skipping the onlining of " + regionInfo.getShortNameToLog() +
      " because regions is NOT in RIT -- presuming this is because it SPLIT");
  }
  if (!openedNodeDeleted) {
    if (this.assignmentManager.getTableStateManager().isTableState(regionInfo.getTable(),
      ZooKeeperProtos.Table.State.DISABLED, ZooKeeperProtos.Table.State.DISABLING)) {
      debugLog(regionInfo, "Opened region "
          + regionInfo.getShortNameToLog() + " but "
          + "this table is disabled, triggering close of region");
      assignmentManager.unassign(regionInfo);
    }
  }
}
项目:PyroDB    文件:ClosedRegionHandler.java   
@Override
public void process() {
  LOG.debug("Handling CLOSED event for " + regionInfo.getEncodedName());
  // Check if this table is being disabled or not
  if (this.assignmentManager.getTableStateManager().isTableState(this.regionInfo.getTable(),
      ZooKeeperProtos.Table.State.DISABLED, ZooKeeperProtos.Table.State.DISABLING)) {
    assignmentManager.offlineDisabledRegion(regionInfo);
    return;
  }
  // ZK Node is in CLOSED state, assign it.
  assignmentManager.getRegionStates().updateRegionState(
    regionInfo, RegionState.State.CLOSED);
  // This below has to do w/ online enable/disable of a table
  assignmentManager.removeClosedRegion(regionInfo);
  assignmentManager.assign(regionInfo, true);
}
项目:PyroDB    文件:HBaseFsckRepair.java   
public static void waitUntilAssigned(HBaseAdmin admin,
    HRegionInfo region) throws IOException, InterruptedException {
  long timeout = admin.getConfiguration().getLong("hbase.hbck.assign.timeout", 120000);
  long expiration = timeout + System.currentTimeMillis();
  while (System.currentTimeMillis() < expiration) {
    try {
      Map<String, RegionState> rits=
          admin.getClusterStatus().getRegionsInTransition();

      if (rits.keySet() != null && !rits.keySet().contains(region.getEncodedName())) {
        // yay! no longer RIT
        return;
      }
      // still in rit
      LOG.info("Region still in transition, waiting for "
          + "it to become assigned: " + region);
    } catch (IOException e) {
      LOG.warn("Exception when waiting for region to become assigned,"
          + " retrying", e);
    }
    Thread.sleep(1000);
  }
  throw new IOException("Region " + region + " failed to move out of " +
      "transition within timeout " + timeout + "ms");
}
项目:PyroDB    文件:ClusterStatus.java   
public ClusterStatus(final String hbaseVersion, final String clusterid,
    final Map<ServerName, ServerLoad> servers,
    final Collection<ServerName> deadServers,
    final ServerName master,
    final Collection<ServerName> backupMasters,
    final Map<String, RegionState> rit,
    final String[] masterCoprocessors,
    final Boolean balancerOn) {
  this.hbaseVersion = hbaseVersion;

  this.liveServers = servers;
  this.deadServers = deadServers;
  this.master = master;
  this.backupMasters = backupMasters;
  this.intransition = rit;
  this.clusterId = clusterid;
  this.masterCoprocessors = masterCoprocessors;
  this.balancerOn = balancerOn;
}
项目:c5    文件:OpenedRegionHandler.java   
@Override
public void process() {
  // Code to defend against case where we get SPLIT before region open
  // processing completes; temporary till we make SPLITs go via zk -- 0.92.
  RegionState regionState = this.assignmentManager.getRegionStates()
    .getRegionTransitionState(regionInfo.getEncodedName());
  boolean openedNodeDeleted = false;
  if (regionState != null && regionState.isOpened()) {
    openedNodeDeleted = deleteOpenedNode(expectedVersion);
    if (!openedNodeDeleted) {
      LOG.error("Znode of region " + regionInfo.getShortNameToLog() + " could not be deleted.");
    }
  } else {
    LOG.warn("Skipping the onlining of " + regionInfo.getShortNameToLog() +
      " because regions is NOT in RIT -- presuming this is because it SPLIT");
  }
  if (!openedNodeDeleted) {
    if (this.assignmentManager.getZKTable().isDisablingOrDisabledTable(regionInfo.getTable())) {
      debugLog(regionInfo, "Opened region "
          + regionInfo.getShortNameToLog() + " but "
          + "this table is disabled, triggering close of region");
      assignmentManager.unassign(regionInfo);
    }
  }
}
项目:c5    文件:ClosedRegionHandler.java   
@Override
public void process() {
  LOG.debug("Handling CLOSED event for " + regionInfo.getEncodedName());
  // Check if this table is being disabled or not
  if (this.assignmentManager.getZKTable().
      isDisablingOrDisabledTable(this.regionInfo.getTable())) {
    assignmentManager.offlineDisabledRegion(regionInfo);
    return;
  }
  // ZK Node is in CLOSED state, assign it.
  assignmentManager.getRegionStates().updateRegionState(
    regionInfo, RegionState.State.CLOSED);
  // This below has to do w/ online enable/disable of a table
  assignmentManager.removeClosedRegion(regionInfo);
  assignmentManager.assign(regionInfo, true);
}
项目:c5    文件:HBaseFsckRepair.java   
public static void waitUntilAssigned(HBaseAdmin admin,
    HRegionInfo region) throws IOException, InterruptedException {
  long timeout = admin.getConfiguration().getLong("hbase.hbck.assign.timeout", 120000);
  long expiration = timeout + System.currentTimeMillis();
  while (System.currentTimeMillis() < expiration) {
    try {
      Map<String, RegionState> rits=
          admin.getClusterStatus().getRegionsInTransition();

      if (rits.keySet() != null && !rits.keySet().contains(region.getEncodedName())) {
        // yay! no longer RIT
        return;
      }
      // still in rit
      LOG.info("Region still in transition, waiting for "
          + "it to become assigned: " + region);
    } catch (IOException e) {
      LOG.warn("Exception when waiting for region to become assigned,"
          + " retrying", e);
    }
    Thread.sleep(1000);
  }
  throw new IOException("Region " + region + " failed to move out of " +
      "transition within timeout " + timeout + "ms");
}
项目:c5    文件:ClusterStatus.java   
public ClusterStatus(final String hbaseVersion, final String clusterid,
    final Map<ServerName, ServerLoad> servers,
    final Collection<ServerName> deadServers,
    final ServerName master,
    final Collection<ServerName> backupMasters,
    final Map<String, RegionState> rit,
    final String[] masterCoprocessors,
    final Boolean balancerOn) {
  this.hbaseVersion = hbaseVersion;

  this.liveServers = servers;
  this.deadServers = deadServers;
  this.master = master;
  this.backupMasters = backupMasters;
  this.intransition = rit;
  this.clusterId = clusterid;
  this.masterCoprocessors = masterCoprocessors;
  this.balancerOn = balancerOn;
}
项目:DominoHBase    文件:ClosedRegionHandler.java   
@Override
public void process() {
  LOG.debug("Handling CLOSED event for " + regionInfo.getEncodedName());
  // Check if this table is being disabled or not
  if (this.assignmentManager.getZKTable().
      isDisablingOrDisabledTable(this.regionInfo.getTableNameAsString())) {
    assignmentManager.offlineDisabledRegion(regionInfo);
    return;
  }
  // ZK Node is in CLOSED state, assign it.
  assignmentManager.getRegionStates().updateRegionState(
    regionInfo, RegionState.State.CLOSED, null);
  // This below has to do w/ online enable/disable of a table
  assignmentManager.removeClosedRegion(regionInfo);
  assignmentManager.assign(regionInfo, true);
}
项目:DominoHBase    文件:HBaseFsckRepair.java   
public static void waitUntilAssigned(HBaseAdmin admin,
    HRegionInfo region) throws IOException, InterruptedException {
  long timeout = admin.getConfiguration().getLong("hbase.hbck.assign.timeout", 120000);
  long expiration = timeout + System.currentTimeMillis();
  while (System.currentTimeMillis() < expiration) {
    try {
      Map<String, RegionState> rits=
          admin.getClusterStatus().getRegionsInTransition();

      if (rits.keySet() != null && !rits.keySet().contains(region.getEncodedName())) {
        // yay! no longer RIT
        return;
      }
      // still in rit
      LOG.info("Region still in transition, waiting for "
          + "it to become assigned: " + region);
    } catch (IOException e) {
      LOG.warn("Exception when waiting for region to become assigned,"
          + " retrying", e);
    }
    Thread.sleep(1000);
  }
  throw new IOException("Region " + region + " failed to move out of " +
      "transition within timeout " + timeout + "ms");
}
项目:DominoHBase    文件:ClusterStatus.java   
public ClusterStatus(final String hbaseVersion, final String clusterid,
    final Map<ServerName, ServerLoad> servers,
    final Collection<ServerName> deadServers,
    final ServerName master,
    final Collection<ServerName> backupMasters,
    final Map<String, RegionState> rit,
    final String[] masterCoprocessors,
    final boolean balancerOn) {
  this.hbaseVersion = hbaseVersion;

  this.liveServers = servers;
  this.deadServers = deadServers;
  this.master = master;
  this.backupMasters = backupMasters;
  this.intransition = rit;
  this.clusterId = clusterid;
  this.masterCoprocessors = masterCoprocessors;
  this.balancerOn = balancerOn;
}
项目:ditb    文件:ZkOpenRegionCoordination.java   
@Override
public boolean commitOpenOnMasterSide(AssignmentManager assignmentManager,
                                      HRegionInfo regionInfo,
                                      OpenRegionDetails ord) {
  boolean committedSuccessfully = true;

  // Code to defend against case where we get SPLIT before region open
  // processing completes; temporary till we make SPLITs go via zk -- 0.92.
  RegionState regionState = assignmentManager.getRegionStates()
    .getRegionTransitionState(regionInfo.getEncodedName());
  boolean openedNodeDeleted = false;
  if (regionState != null && regionState.isOpened()) {
    openedNodeDeleted = deleteOpenedNode(regionInfo, ord);
    if (!openedNodeDeleted) {
      LOG.error("Znode of region " + regionInfo.getShortNameToLog() + " could not be deleted.");
    }
  } else {
    LOG.warn("Skipping the onlining of " + regionInfo.getShortNameToLog() +
      " because regions is NOT in RIT -- presuming this is because it SPLIT");
  }
  if (!openedNodeDeleted) {
    if (assignmentManager.getTableStateManager().isTableState(regionInfo.getTable(),
        ZooKeeperProtos.Table.State.DISABLED, ZooKeeperProtos.Table.State.DISABLING)) {
      debugLog(regionInfo, "Opened region "
        + regionInfo.getShortNameToLog() + " but "
        + "this table is disabled, triggering close of region");
      committedSuccessfully = false;
    }
  }

  return committedSuccessfully;
}