Java 类org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest 实例源码

项目:ditb    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testCloseByMasterWithoutZNode() throws Exception {

  // Transition in ZK on. This should fail, as there is no znode
  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    getRS().getServerName(), regionName, true);
  AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  // now waiting. After a while, the transition should be done
  while (!getRS().getRegionsInTransitionInRS().isEmpty()) {
    Thread.sleep(1);
  }

  // the region is still available, the close got rejected at the end
  Assert.assertTrue("The close should have failed", getRS().getRegion(regionName).isAvailable());
}
项目:ditb    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testOpenCloseByMasterWithZNode() throws Exception {

  ZKAssign.createNodeClosing(HTU.getZooKeeperWatcher(), hri, getRS().getServerName());

  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    getRS().getServerName(), regionName, true);
  AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  checkRegionIsClosed(HTU, getRS(), hri);

  ZKAssign.deleteClosedNode(HTU.getZooKeeperWatcher(), hri.getEncodedName(),
    getRS().getServerName());

  openRegion(HTU, getRS(), hri);
}
项目:ditb    文件:RequestConverter.java   
public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
  final byte[] regionName, final int versionOfClosingNode,
  ServerName destinationServer, final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.REGION_NAME, regionName);
  builder.setRegion(region);
  builder.setVersionOfClosingNode(versionOfClosingNode);
  builder.setTransitionInZK(transitionInZK);
  if (destinationServer != null){
    builder.setDestinationServer(ProtobufUtil.toServerName( destinationServer) );
  }
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:ditb    文件:ProtobufUtil.java   
/**
 * A helper to close a region given a region name
 * using admin protocol.
 *
 * @param admin
 * @param regionName
 * @param versionOfClosingNode
 * @return true if the region is closed
 * @throws IOException
 */
public static boolean closeRegion(final RpcController controller,
    final AdminService.BlockingInterface admin,
    final ServerName server,
    final byte[] regionName,
    final int versionOfClosingNode, final ServerName destinationServer,
    final boolean transitionInZK) throws IOException {
  CloseRegionRequest closeRegionRequest =
    RequestConverter.buildCloseRegionRequest(server,
      regionName, versionOfClosingNode, destinationServer, transitionInZK);
  try {
    CloseRegionResponse response = admin.closeRegion(controller, closeRegionRequest);
    return ResponseConverter.isClosed(response);
  } catch (ServiceException se) {
    throw getRemoteException(se);
  }
}
项目:pbase    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testCloseByMasterWithoutZNode() throws Exception {

  // Transition in ZK on. This should fail, as there is no znode
  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    getRS().getServerName(), regionName, true);
  AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  // now waiting. After a while, the transition should be done
  while (!getRS().getRegionsInTransitionInRS().isEmpty()) {
    Thread.sleep(1);
  }

  // the region is still available, the close got rejected at the end
  Assert.assertTrue("The close should have failed", getRS().getRegion(regionName).isAvailable());
}
项目:pbase    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testOpenCloseByMasterWithZNode() throws Exception {

  ZKAssign.createNodeClosing(HTU.getZooKeeperWatcher(), hri, getRS().getServerName());

  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    getRS().getServerName(), regionName, true);
  AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  checkRegionIsClosed();

  ZKAssign.deleteClosedNode(HTU.getZooKeeperWatcher(), hri.getEncodedName(),
    getRS().getServerName());

  reopenRegion();
}
项目:pbase    文件:RequestConverter.java   
public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
  final byte[] regionName, final int versionOfClosingNode,
  ServerName destinationServer, final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.REGION_NAME, regionName);
  builder.setRegion(region);
  builder.setVersionOfClosingNode(versionOfClosingNode);
  builder.setTransitionInZK(transitionInZK);
  if (destinationServer != null){
    builder.setDestinationServer(ProtobufUtil.toServerName( destinationServer) );
  }
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:pbase    文件:ProtobufUtil.java   
/**
 * A helper to close a region given a region name
 * using admin protocol.
 *
 * @param admin
 * @param regionName
 * @param versionOfClosingNode
 * @return true if the region is closed
 * @throws IOException
 */
public static boolean closeRegion(final AdminService.BlockingInterface admin,
    final ServerName server,
    final byte[] regionName,
    final int versionOfClosingNode, final ServerName destinationServer,
    final boolean transitionInZK) throws IOException {
  CloseRegionRequest closeRegionRequest =
    RequestConverter.buildCloseRegionRequest(server,
      regionName, versionOfClosingNode, destinationServer, transitionInZK);
  try {
    CloseRegionResponse response = admin.closeRegion(null, closeRegionRequest);
    return ResponseConverter.isClosed(response);
  } catch (ServiceException se) {
    throw getRemoteException(se);
  }
}
项目:pbase    文件:HBaseAdmin.java   
/**
 * For expert-admins. Runs close on the regionserver. Closes a region based on
 * the encoded region name. The region server name is mandatory. If the
 * servername is provided then based on the online regions in the specified
 * regionserver the specified region will be closed. The master will not be
 * informed of the close. Note that the regionname is the encoded regionname.
 *
 * @param encodedRegionName
 *          The encoded region name; i.e. the hash that makes up the region
 *          name suffix: e.g. if regionname is
 *          <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>
 *          , then the encoded region name is:
 *          <code>527db22f95c8a9e0116f0cc13c680396</code>.
 * @param serverName
 *          The servername of the regionserver. A server name is made of host,
 *          port and startcode. This is mandatory. Here is an example:
 *          <code> host187.example.com,60020,1289493121758</code>
 * @return true if the region was closed, false if not.
 * @throws IOException
 *           if a remote or network exception occurs
 */
@Override
public boolean closeRegionWithEncodedRegionName(final String encodedRegionName,
    final String serverName) throws IOException {
  if (null == serverName || ("").equals(serverName.trim())) {
    throw new IllegalArgumentException(
        "The servername cannot be null or empty.");
  }
  ServerName sn = ServerName.valueOf(serverName);
  AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
  // Close the region without updating zk state.
  CloseRegionRequest request =
    RequestConverter.buildCloseRegionRequest(sn, encodedRegionName, false);
  try {
    CloseRegionResponse response = admin.closeRegion(null, request);
    boolean isRegionClosed = response.getClosed();
    if (false == isRegionClosed) {
      LOG.error("Not able to close the region " + encodedRegionName + ".");
    }
    return isRegionClosed;
  } catch (ServiceException se) {
    throw ProtobufUtil.getRemoteException(se);
  }
}
项目:HIndex    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testCloseByMasterWithoutZNode() throws Exception {

  // Transition in ZK on. This should fail, as there is no znode
  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    getRS().getServerName(), regionName, true);
  AdminProtos.CloseRegionResponse responseClose = getRS().closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  // now waiting. After a while, the transition should be done
  while (!getRS().getRegionsInTransitionInRS().isEmpty()) {
    Thread.sleep(1);
  }

  // the region is still available, the close got rejected at the end
  Assert.assertTrue("The close should have failed", getRS().getRegion(regionName).isAvailable());
}
项目:HIndex    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testOpenCloseByMasterWithZNode() throws Exception {

  ZKAssign.createNodeClosing(HTU.getZooKeeperWatcher(), hri, getRS().getServerName());

  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    getRS().getServerName(), regionName, true);
  AdminProtos.CloseRegionResponse responseClose = getRS().closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  checkRegionIsClosed();

  ZKAssign.deleteClosedNode(HTU.getZooKeeperWatcher(), hri.getEncodedName(),
    getRS().getServerName());

  reopenRegion();
}
项目:HIndex    文件:RequestConverter.java   
public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
  final byte[] regionName, final int versionOfClosingNode,
  ServerName destinationServer, final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.REGION_NAME, regionName);
  builder.setRegion(region);
  builder.setVersionOfClosingNode(versionOfClosingNode);
  builder.setTransitionInZK(transitionInZK);
  if (destinationServer != null){
    builder.setDestinationServer(ProtobufUtil.toServerName( destinationServer) );
  }
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:HIndex    文件:ProtobufUtil.java   
/**
 * A helper to close a region given a region name
 * using admin protocol.
 *
 * @param admin
 * @param regionName
 * @param versionOfClosingNode
 * @return true if the region is closed
 * @throws IOException
 */
public static boolean closeRegion(final AdminService.BlockingInterface admin,
    final ServerName server,
    final byte[] regionName,
    final int versionOfClosingNode, final ServerName destinationServer,
    final boolean transitionInZK) throws IOException {
  CloseRegionRequest closeRegionRequest =
    RequestConverter.buildCloseRegionRequest(server,
      regionName, versionOfClosingNode, destinationServer, transitionInZK);
  try {
    CloseRegionResponse response = admin.closeRegion(null, closeRegionRequest);
    return ResponseConverter.isClosed(response);
  } catch (ServiceException se) {
    throw getRemoteException(se);
  }
}
项目:HIndex    文件:HBaseAdmin.java   
/**
 * For expert-admins. Runs close on the regionserver. Closes a region based on
 * the encoded region name. The region server name is mandatory. If the
 * servername is provided then based on the online regions in the specified
 * regionserver the specified region will be closed. The master will not be
 * informed of the close. Note that the regionname is the encoded regionname.
 *
 * @param encodedRegionName
 *          The encoded region name; i.e. the hash that makes up the region
 *          name suffix: e.g. if regionname is
 *          <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>
 *          , then the encoded region name is:
 *          <code>527db22f95c8a9e0116f0cc13c680396</code>.
 * @param serverName
 *          The servername of the regionserver. A server name is made of host,
 *          port and startcode. This is mandatory. Here is an example:
 *          <code> host187.example.com,60020,1289493121758</code>
 * @return true if the region was closed, false if not.
 * @throws IOException
 *           if a remote or network exception occurs
 */
public boolean closeRegionWithEncodedRegionName(final String encodedRegionName,
    final String serverName) throws IOException {
  if (null == serverName || ("").equals(serverName.trim())) {
    throw new IllegalArgumentException(
        "The servername cannot be null or empty.");
  }
  ServerName sn = ServerName.valueOf(serverName);
  AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
  // Close the region without updating zk state.
  CloseRegionRequest request =
    RequestConverter.buildCloseRegionRequest(sn, encodedRegionName, false);
  try {
    CloseRegionResponse response = admin.closeRegion(null, request);
    boolean isRegionClosed = response.getClosed();
    if (false == isRegionClosed) {
      LOG.error("Not able to close the region " + encodedRegionName + ".");
    }
    return isRegionClosed;
  } catch (ServiceException se) {
    throw ProtobufUtil.getRemoteException(se);
  }
}
项目:PyroDB    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testCloseByMasterWithoutZNode() throws Exception {

  // Transition in ZK on. This should fail, as there is no znode
  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    getRS().getServerName(), regionName, true);
  AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  // now waiting. After a while, the transition should be done
  while (!getRS().getRegionsInTransitionInRS().isEmpty()) {
    Thread.sleep(1);
  }

  // the region is still available, the close got rejected at the end
  Assert.assertTrue("The close should have failed", getRS().getRegion(regionName).isAvailable());
}
项目:PyroDB    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testOpenCloseByMasterWithZNode() throws Exception {

  ZKAssign.createNodeClosing(HTU.getZooKeeperWatcher(), hri, getRS().getServerName());

  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    getRS().getServerName(), regionName, true);
  AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  checkRegionIsClosed();

  ZKAssign.deleteClosedNode(HTU.getZooKeeperWatcher(), hri.getEncodedName(),
    getRS().getServerName());

  reopenRegion();
}
项目:PyroDB    文件:RequestConverter.java   
public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
  final byte[] regionName, final int versionOfClosingNode,
  ServerName destinationServer, final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.REGION_NAME, regionName);
  builder.setRegion(region);
  builder.setVersionOfClosingNode(versionOfClosingNode);
  builder.setTransitionInZK(transitionInZK);
  if (destinationServer != null){
    builder.setDestinationServer(ProtobufUtil.toServerName( destinationServer) );
  }
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:PyroDB    文件:ProtobufUtil.java   
/**
 * A helper to close a region given a region name
 * using admin protocol.
 *
 * @param admin
 * @param regionName
 * @param versionOfClosingNode
 * @return true if the region is closed
 * @throws IOException
 */
public static boolean closeRegion(final AdminService.BlockingInterface admin,
    final ServerName server,
    final byte[] regionName,
    final int versionOfClosingNode, final ServerName destinationServer,
    final boolean transitionInZK) throws IOException {
  CloseRegionRequest closeRegionRequest =
    RequestConverter.buildCloseRegionRequest(server,
      regionName, versionOfClosingNode, destinationServer, transitionInZK);
  try {
    CloseRegionResponse response = admin.closeRegion(null, closeRegionRequest);
    return ResponseConverter.isClosed(response);
  } catch (ServiceException se) {
    throw getRemoteException(se);
  }
}
项目:PyroDB    文件:HBaseAdmin.java   
/**
 * For expert-admins. Runs close on the regionserver. Closes a region based on
 * the encoded region name. The region server name is mandatory. If the
 * servername is provided then based on the online regions in the specified
 * regionserver the specified region will be closed. The master will not be
 * informed of the close. Note that the regionname is the encoded regionname.
 *
 * @param encodedRegionName
 *          The encoded region name; i.e. the hash that makes up the region
 *          name suffix: e.g. if regionname is
 *          <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>
 *          , then the encoded region name is:
 *          <code>527db22f95c8a9e0116f0cc13c680396</code>.
 * @param serverName
 *          The servername of the regionserver. A server name is made of host,
 *          port and startcode. This is mandatory. Here is an example:
 *          <code> host187.example.com,60020,1289493121758</code>
 * @return true if the region was closed, false if not.
 * @throws IOException
 *           if a remote or network exception occurs
 */
public boolean closeRegionWithEncodedRegionName(final String encodedRegionName,
    final String serverName) throws IOException {
  if (null == serverName || ("").equals(serverName.trim())) {
    throw new IllegalArgumentException(
        "The servername cannot be null or empty.");
  }
  ServerName sn = ServerName.valueOf(serverName);
  AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
  // Close the region without updating zk state.
  CloseRegionRequest request =
    RequestConverter.buildCloseRegionRequest(sn, encodedRegionName, false);
  try {
    CloseRegionResponse response = admin.closeRegion(null, request);
    boolean isRegionClosed = response.getClosed();
    if (false == isRegionClosed) {
      LOG.error("Not able to close the region " + encodedRegionName + ".");
    }
    return isRegionClosed;
  } catch (ServiceException se) {
    throw ProtobufUtil.getRemoteException(se);
  }
}
项目:c5    文件:HBaseAdmin.java   
/**
 * For expert-admins. Runs close on the regionserver. Closes a region based on
 * the encoded region name. The region server name is mandatory. If the
 * servername is provided then based on the online regions in the specified
 * regionserver the specified region will be closed. The master will not be
 * informed of the close. Note that the regionname is the encoded regionname.
 *
 * @param encodedRegionName
 *          The encoded region name; i.e. the hash that makes up the region
 *          name suffix: e.g. if regionname is
 *          <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>
 *          , then the encoded region name is:
 *          <code>527db22f95c8a9e0116f0cc13c680396</code>.
 * @param serverName
 *          The servername of the regionserver. A server name is made of host,
 *          port and startcode. This is mandatory. Here is an example:
 *          <code> host187.example.com,60020,1289493121758</code>
 * @return true if the region was closed, false if not.
 * @throws IOException
 *           if a remote or network exception occurs
 */
public boolean closeRegionWithEncodedRegionName(final String encodedRegionName,
    final String serverName) throws IOException {
  if (null == serverName || ("").equals(serverName.trim())) {
    throw new IllegalArgumentException(
        "The servername cannot be null or empty.");
  }
  ServerName sn = ServerName.valueOf(serverName);
  AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
  // Close the region without updating zk state.
  CloseRegionRequest request =
    RequestConverter.buildCloseRegionRequest(encodedRegionName, false);
  try {
    CloseRegionResponse response = admin.closeRegion(null, request);
    boolean isRegionClosed = response.getClosed();
    if (false == isRegionClosed) {
      LOG.error("Not able to close the region " + encodedRegionName + ".");
    }
    return isRegionClosed;
  } catch (ServiceException se) {
    throw ProtobufUtil.getRemoteException(se);
  }
}
项目:DominoHBase    文件:HBaseAdmin.java   
/**
 * For expert-admins. Runs close on the regionserver. Closes a region based on
 * the encoded region name. The region server name is mandatory. If the
 * servername is provided then based on the online regions in the specified
 * regionserver the specified region will be closed. The master will not be
 * informed of the close. Note that the regionname is the encoded regionname.
 *
 * @param encodedRegionName
 *          The encoded region name; i.e. the hash that makes up the region
 *          name suffix: e.g. if regionname is
 *          <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>
 *          , then the encoded region name is:
 *          <code>527db22f95c8a9e0116f0cc13c680396</code>.
 * @param serverName
 *          The servername of the regionserver. A server name is made of host,
 *          port and startcode. This is mandatory. Here is an example:
 *          <code> host187.example.com,60020,1289493121758</code>
 * @return true if the region was closed, false if not.
 * @throws IOException
 *           if a remote or network exception occurs
 */
public boolean closeRegionWithEncodedRegionName(final String encodedRegionName,
    final String serverName) throws IOException {
  if (null == serverName || ("").equals(serverName.trim())) {
    throw new IllegalArgumentException(
        "The servername cannot be null or empty.");
  }
  ServerName sn = new ServerName(serverName);
  AdminProtocol admin = this.connection.getAdmin(
      sn.getHostname(), sn.getPort());
  // Close the region without updating zk state.
  CloseRegionRequest request =
    RequestConverter.buildCloseRegionRequest(encodedRegionName, false);
  try {
    CloseRegionResponse response = admin.closeRegion(null, request);
    boolean isRegionClosed = response.getClosed();
    if (false == isRegionClosed) {
      LOG.error("Not able to close the region " + encodedRegionName + ".");
    }
    return isRegionClosed;
  } catch (ServiceException se) {
    throw ProtobufUtil.getRemoteException(se);
  }
}
项目:ditb    文件:RSRpcServices.java   
/**
 * Close a region on the region server.
 *
 * @param controller the RPC controller
 * @param request the request
 * @throws ServiceException
 */
@Override
@QosPriority(priority=HConstants.ADMIN_QOS)
public CloseRegionResponse closeRegion(final RpcController controller,
    final CloseRegionRequest request) throws ServiceException {
  final ServerName sn = (request.hasDestinationServer() ?
    ProtobufUtil.toServerName(request.getDestinationServer()) : null);

  try {
    checkOpen();
    if (request.hasServerStartCode()) {
      // check that we are the same server that this RPC is intended for.
      long serverStartCode = request.getServerStartCode();
      if (regionServer.serverName.getStartcode() !=  serverStartCode) {
        throw new ServiceException(new DoNotRetryIOException("This RPC was intended for a " +
            "different server with startCode: " + serverStartCode + ", this server is: "
            + regionServer.serverName));
      }
    }
    final String encodedRegionName = ProtobufUtil.getRegionEncodedName(request.getRegion());

    // Can be null if we're calling close on a region that's not online
    final Region region = regionServer.getFromOnlineRegions(encodedRegionName);
    if ((region  != null) && (region .getCoprocessorHost() != null)) {
      region.getCoprocessorHost().preClose(false);
    }

    requestCount.increment();
    LOG.info("Close " + encodedRegionName + ", moving to " + sn);
    CloseRegionCoordination.CloseRegionDetails crd = regionServer.getCoordinatedStateManager()
      .getCloseRegionCoordination().parseFromProtoRequest(request);

    boolean closed = regionServer.closeRegion(encodedRegionName, false, crd, sn);
    CloseRegionResponse.Builder builder = CloseRegionResponse.newBuilder().setClosed(closed);
    return builder.build();
  } catch (IOException ie) {
    throw new ServiceException(ie);
  }
}
项目:ditb    文件:TestRegionServerNoMaster.java   
public static void closeRegion(HBaseTestingUtility HTU, HRegionServer rs, HRegionInfo hri)
    throws Exception {
  ZKAssign.createNodeClosing(HTU.getZooKeeperWatcher(), hri, rs.getServerName());
  AdminProtos.CloseRegionRequest crr = RequestConverter.buildCloseRegionRequest(
    rs.getServerName(), hri.getEncodedName(), true);
  AdminProtos.CloseRegionResponse responseClose = rs.rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());
  checkRegionIsClosed(HTU, rs, hri);
  ZKAssign.deleteClosedNode(HTU.getZooKeeperWatcher(), hri.getEncodedName(), null);
}
项目:ditb    文件:TestRegionServerNoMaster.java   
/**
 * Close the region without using ZK
 */
private void closeRegionNoZK() throws Exception {
  // no transition in ZK
  AdminProtos.CloseRegionRequest crr =
      RequestConverter.buildCloseRegionRequest(getRS().getServerName(), regionName, false);
  AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  // now waiting & checking. After a while, the transition should be done and the region closed
  checkRegionIsClosed(HTU, getRS(), hri);
}
项目:ditb    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testMultipleCloseFromMaster() throws Exception {

  // As opening, we must support multiple requests on the same region
  ZKAssign.createNodeClosing(HTU.getZooKeeperWatcher(), hri, getRS().getServerName());
  for (int i = 0; i < 10; i++) {
    AdminProtos.CloseRegionRequest crr =
        RequestConverter.buildCloseRegionRequest(getRS().getServerName(), regionName, 0, null, true);
    try {
      AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
      Assert.assertEquals("The first request should succeeds", 0, i);
      Assert.assertTrue("request " + i + " failed",
          responseClose.getClosed() || responseClose.hasClosed());
    } catch (ServiceException se) {
      Assert.assertTrue("The next queries should throw an exception.", i > 0);
    }
  }

  checkRegionIsClosed(HTU, getRS(), hri);

  Assert.assertTrue(
    ZKAssign.deleteClosedNode(HTU.getZooKeeperWatcher(), hri.getEncodedName(),
      getRS().getServerName())
  );

  openRegion(HTU, getRS(), hri);
}
项目:ditb    文件:RequestConverter.java   
/**
 * Create a CloseRegionRequest for a given region name
 *
 * @param regionName the name of the region to close
 * @param transitionInZK indicator if to transition in ZK
 * @return a CloseRegionRequest
 */
public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
    final byte[] regionName, final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.REGION_NAME, regionName);
  builder.setRegion(region);
  builder.setTransitionInZK(transitionInZK);
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:ditb    文件:RequestConverter.java   
/**
 * Create a CloseRegionRequest for a given encoded region name
 *
 * @param encodedRegionName the name of the region to close
 * @param transitionInZK indicator if to transition in ZK
 * @return a CloseRegionRequest
 */
public static CloseRegionRequest
    buildCloseRegionRequest(ServerName server, final String encodedRegionName,
      final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.ENCODED_REGION_NAME,
    Bytes.toBytes(encodedRegionName));
  builder.setRegion(region);
  builder.setTransitionInZK(transitionInZK);
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:ditb    文件:ProtobufUtil.java   
/**
 * A helper to close a region given a region name
 * using admin protocol.
 *
 * @param admin
 * @param regionName
 * @param transitionInZK
 * @throws IOException
 */
public static void closeRegion(final RpcController controller, 
    final AdminService.BlockingInterface admin, final ServerName server, final byte[] regionName,
    final boolean transitionInZK) throws IOException {
  CloseRegionRequest closeRegionRequest =
    RequestConverter.buildCloseRegionRequest(server, regionName, transitionInZK);
  try {
    admin.closeRegion(controller, closeRegionRequest);
  } catch (ServiceException se) {
    throw getRemoteException(se);
  }
}
项目:ditb    文件:HBaseAdmin.java   
/**
 * For expert-admins. Runs close on the regionserver. Closes a region based on
 * the encoded region name. The region server name is mandatory. If the
 * servername is provided then based on the online regions in the specified
 * regionserver the specified region will be closed. The master will not be
 * informed of the close. Note that the regionname is the encoded regionname.
 *
 * @param encodedRegionName
 *          The encoded region name; i.e. the hash that makes up the region
 *          name suffix: e.g. if regionname is
 *          <code>TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.</code>
 *          , then the encoded region name is:
 *          <code>527db22f95c8a9e0116f0cc13c680396</code>.
 * @param serverName
 *          The servername of the regionserver. A server name is made of host,
 *          port and startcode. This is mandatory. Here is an example:
 *          <code> host187.example.com,60020,1289493121758</code>
 * @return true if the region was closed, false if not.
 * @throws IOException
 *           if a remote or network exception occurs
 */
@Override
public boolean closeRegionWithEncodedRegionName(final String encodedRegionName,
    final String serverName) throws IOException {
  if (null == serverName || ("").equals(serverName.trim())) {
    throw new IllegalArgumentException(
        "The servername cannot be null or empty.");
  }
  ServerName sn = ServerName.valueOf(serverName);
  AdminService.BlockingInterface admin = this.connection.getAdmin(sn);
  // Close the region without updating zk state.
  CloseRegionRequest request =
    RequestConverter.buildCloseRegionRequest(sn, encodedRegionName, false);
  try {
    PayloadCarryingRpcController controller = rpcControllerFactory.newController();

    // TODO: this does not do retries, it should. Set priority and timeout in controller
    CloseRegionResponse response = admin.closeRegion(controller, request);
    boolean isRegionClosed = response.getClosed();
    if (false == isRegionClosed) {
      LOG.error("Not able to close the region " + encodedRegionName + ".");
    }
    return isRegionClosed;
  } catch (ServiceException se) {
    throw ProtobufUtil.getRemoteException(se);
  }
}
项目:pbase    文件:RSRpcServices.java   
/**
 * Close a region on the region server.
 *
 * @param controller the RPC controller
 * @param request    the request
 * @throws ServiceException
 */
@Override
@QosPriority(priority = HConstants.ADMIN_QOS)
public CloseRegionResponse closeRegion(final RpcController controller,
                                       final CloseRegionRequest request) throws ServiceException {
    final ServerName sn = (request.hasDestinationServer() ?
            ProtobufUtil.toServerName(request.getDestinationServer()) : null);

    try {
        checkOpen();
        if (request.hasServerStartCode()) {
            // check that we are the same server that this RPC is intended for.
            long serverStartCode = request.getServerStartCode();
            if (regionServer.serverName.getStartcode() != serverStartCode) {
                throw new ServiceException(new DoNotRetryIOException("This RPC was intended for a " +
                        "different server with startCode: " + serverStartCode + ", this server is: "
                        + regionServer.serverName));
            }
        }
        final String encodedRegionName = ProtobufUtil.getRegionEncodedName(request.getRegion());

        // Can be null if we're calling close on a region that's not online
        final HRegion region = regionServer.getFromOnlineRegions(encodedRegionName);
        if ((region != null) && (region.getCoprocessorHost() != null)) {
            region.getCoprocessorHost().preClose(false);
        }

        requestCount.increment();
        LOG.info("Close " + encodedRegionName + ", moving to " + sn);
        CloseRegionCoordination.CloseRegionDetails crd = regionServer.getCoordinatedStateManager()
                .getCloseRegionCoordination().parseFromProtoRequest(request);

        boolean closed = regionServer.closeRegion(encodedRegionName, false, crd, sn);
        CloseRegionResponse.Builder builder = CloseRegionResponse.newBuilder().setClosed(closed);
        return builder.build();
    } catch (IOException ie) {
        throw new ServiceException(ie);
    }
}
项目:pbase    文件:TestRegionServerNoMaster.java   
/**
 * Close the region without using ZK
 */
private void closeNoZK() throws Exception {
  // no transition in ZK
  AdminProtos.CloseRegionRequest crr =
      RequestConverter.buildCloseRegionRequest(getRS().getServerName(), regionName, false);
  AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  // now waiting & checking. After a while, the transition should be done and the region closed
  checkRegionIsClosed();
}
项目:pbase    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testMultipleCloseFromMaster() throws Exception {

  // As opening, we must support multiple requests on the same region
  ZKAssign.createNodeClosing(HTU.getZooKeeperWatcher(), hri, getRS().getServerName());
  for (int i = 0; i < 10; i++) {
    AdminProtos.CloseRegionRequest crr =
        RequestConverter.buildCloseRegionRequest(getRS().getServerName(), regionName, 0, null, true);
    try {
      AdminProtos.CloseRegionResponse responseClose = getRS().rpcServices.closeRegion(null, crr);
      Assert.assertEquals("The first request should succeeds", 0, i);
      Assert.assertTrue("request " + i + " failed",
          responseClose.getClosed() || responseClose.hasClosed());
    } catch (ServiceException se) {
      Assert.assertTrue("The next queries should throw an exception.", i > 0);
    }
  }

  checkRegionIsClosed();

  Assert.assertTrue(
    ZKAssign.deleteClosedNode(HTU.getZooKeeperWatcher(), hri.getEncodedName(),
      getRS().getServerName())
  );

  reopenRegion();
}
项目:pbase    文件:RequestConverter.java   
/**
 * Create a CloseRegionRequest for a given region name
 *
 * @param regionName the name of the region to close
 * @param transitionInZK indicator if to transition in ZK
 * @return a CloseRegionRequest
 */
public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
    final byte[] regionName, final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.REGION_NAME, regionName);
  builder.setRegion(region);
  builder.setTransitionInZK(transitionInZK);
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:pbase    文件:RequestConverter.java   
/**
 * Create a CloseRegionRequest for a given encoded region name
 *
 * @param encodedRegionName the name of the region to close
 * @param transitionInZK indicator if to transition in ZK
 * @return a CloseRegionRequest
 */
public static CloseRegionRequest
    buildCloseRegionRequest(ServerName server, final String encodedRegionName,
      final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.ENCODED_REGION_NAME,
    Bytes.toBytes(encodedRegionName));
  builder.setRegion(region);
  builder.setTransitionInZK(transitionInZK);
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:pbase    文件:ProtobufUtil.java   
/**
 * A helper to close a region given a region name
 * using admin protocol.
 *
 * @param admin
 * @param regionName
 * @param transitionInZK
 * @throws IOException
 */
public static void closeRegion(final AdminService.BlockingInterface admin,
    final ServerName server, final byte[] regionName, final boolean transitionInZK) throws IOException {
  CloseRegionRequest closeRegionRequest =
    RequestConverter.buildCloseRegionRequest(server, regionName, transitionInZK);
  try {
    admin.closeRegion(null, closeRegionRequest);
  } catch (ServiceException se) {
    throw getRemoteException(se);
  }
}
项目:HIndex    文件:TestRegionServerNoMaster.java   
/**
 * Close the region without using ZK
 */
private void closeNoZK() throws Exception {
  // no transition in ZK
  AdminProtos.CloseRegionRequest crr =
      RequestConverter.buildCloseRegionRequest(getRS().getServerName(), regionName, false);
  AdminProtos.CloseRegionResponse responseClose = getRS().closeRegion(null, crr);
  Assert.assertTrue(responseClose.getClosed());

  // now waiting & checking. After a while, the transition should be done and the region closed
  checkRegionIsClosed();
}
项目:HIndex    文件:TestRegionServerNoMaster.java   
@Test(timeout = 60000)
public void testMultipleCloseFromMaster() throws Exception {

  // As opening, we must support multiple requests on the same region
  ZKAssign.createNodeClosing(HTU.getZooKeeperWatcher(), hri, getRS().getServerName());
  for (int i = 0; i < 10; i++) {
    AdminProtos.CloseRegionRequest crr =
        RequestConverter.buildCloseRegionRequest(getRS().getServerName(), regionName, 0, null, true);
    try {
      AdminProtos.CloseRegionResponse responseClose = getRS().closeRegion(null, crr);
      Assert.assertEquals("The first request should succeeds", 0, i);
      Assert.assertTrue("request " + i + " failed",
          responseClose.getClosed() || responseClose.hasClosed());
    } catch (ServiceException se) {
      Assert.assertTrue("The next queries should throw an exception.", i > 0);
    }
  }

  checkRegionIsClosed();

  Assert.assertTrue(
    ZKAssign.deleteClosedNode(HTU.getZooKeeperWatcher(), hri.getEncodedName(),
      getRS().getServerName())
  );

  reopenRegion();
}
项目:HIndex    文件:TestRegionServerNoMaster.java   
/**
 * Test that if we do a close while opening it stops the opening.
 */
@Test(timeout = 60000)
public void testCancelOpeningWithoutZK() throws Exception {
  // We close
  closeNoZK();
  checkRegionIsClosed();

  // Let do the initial steps, without having a handler
  ZKAssign.createNodeOffline(HTU.getZooKeeperWatcher(), hri, getRS().getServerName());
  getRS().getRegionsInTransitionInRS().put(hri.getEncodedNameAsBytes(), Boolean.TRUE);

  // That's a close without ZK.
  AdminProtos.CloseRegionRequest crr =
      RequestConverter.buildCloseRegionRequest(getRS().getServerName(), regionName, false);
  try {
    getRS().closeRegion(null, crr);
    Assert.assertTrue(false);
  } catch (ServiceException expected) {
  }

  // The state in RIT should have changed to close
  Assert.assertEquals(Boolean.FALSE, getRS().getRegionsInTransitionInRS().get(
      hri.getEncodedNameAsBytes()));

  // Let's start the open handler
  HTableDescriptor htd = getRS().tableDescriptors.get(hri.getTable());
  getRS().service.submit(new OpenRegionHandler(getRS(), getRS(), hri, htd, 0));

  // The open handler should have removed the region from RIT but kept the region closed
  checkRegionIsClosed();

  // The open handler should have updated the value in ZK.
  Assert.assertTrue(ZKAssign.deleteNode(
      getRS().getZooKeeperWatcher(), hri.getEncodedName(),
      EventType.RS_ZK_REGION_FAILED_OPEN, 1)
  );

  reopenRegion();
}
项目:HIndex    文件:RequestConverter.java   
/**
 * Create a CloseRegionRequest for a given region name
 *
 * @param regionName the name of the region to close
 * @param transitionInZK indicator if to transition in ZK
 * @return a CloseRegionRequest
 */
public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
    final byte[] regionName, final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.REGION_NAME, regionName);
  builder.setRegion(region);
  builder.setTransitionInZK(transitionInZK);
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}
项目:HIndex    文件:RequestConverter.java   
/**
 * Create a CloseRegionRequest for a given encoded region name
 *
 * @param encodedRegionName the name of the region to close
 * @param transitionInZK indicator if to transition in ZK
 * @return a CloseRegionRequest
 */
public static CloseRegionRequest
    buildCloseRegionRequest(ServerName server, final String encodedRegionName,
      final boolean transitionInZK) {
  CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
  RegionSpecifier region = buildRegionSpecifier(
    RegionSpecifierType.ENCODED_REGION_NAME,
    Bytes.toBytes(encodedRegionName));
  builder.setRegion(region);
  builder.setTransitionInZK(transitionInZK);
  if (server != null) {
    builder.setServerStartCode(server.getStartcode());
  }
  return builder.build();
}