/** * Split a region on the region server. * * @param controller the RPC controller * @param request the request * @throws ServiceException */ @Override @QosPriority(priority=HConstants.HIGH_QOS) public SplitRegionResponse splitRegion(final RpcController controller, final SplitRegionRequest request) throws ServiceException { try { checkOpen(); requestCount.increment(); HRegion region = getRegion(request.getRegion()); region.startRegionOperation(Operation.SPLIT_REGION); LOG.info("Splitting " + region.getRegionNameAsString()); region.flushcache(); byte[] splitPoint = null; if (request.hasSplitPoint()) { splitPoint = request.getSplitPoint().toByteArray(); } region.forceSplit(splitPoint); compactSplitThread.requestSplit(region, region.checkSplit()); return SplitRegionResponse.newBuilder().build(); } catch (IOException ie) { throw new ServiceException(ie); } }
/** * Shen Li: add parameter reuseFile */ public static SplitRegionRequest buildSplitRegionRequest( final byte[] regionName, final byte[] splitPoint, boolean reuseFile) { SplitRegionRequest.Builder builder = SplitRegionRequest.newBuilder(); RegionSpecifier region = buildRegionSpecifier( RegionSpecifierType.REGION_NAME, regionName); builder.setRegion(region); if (splitPoint != null) { builder.setSplitPoint(HBaseZeroCopyByteString.wrap(splitPoint)); } if (reuseFile) { builder.setReuseFile(reuseFile); } return builder.build(); }
/** * Split a region on the region server. * * @param controller the RPC controller * @param request the request * @throws ServiceException */ @Override @QosPriority(priority=HConstants.HIGH_QOS) public SplitRegionResponse splitRegion(final RpcController controller, final SplitRegionRequest request) throws ServiceException { try { checkOpen(); requestCount.increment(); HRegion region = getRegion(request.getRegion()); LOG.info("Splitting " + region.getRegionNameAsString()); region.flushcache(); byte[] splitPoint = null; if (request.hasSplitPoint()) { splitPoint = request.getSplitPoint().toByteArray(); } region.forceSplit(splitPoint); compactSplitThread.requestSplit(region, region.checkSplit()); return SplitRegionResponse.newBuilder().build(); } catch (IOException ie) { throw new ServiceException(ie); } }
/** * Split a region on the region server. * * @param controller the RPC controller * @param request the request * @throws ServiceException */ @Override @QosPriority(priority=HConstants.ADMIN_QOS) public SplitRegionResponse splitRegion(final RpcController controller, final SplitRegionRequest request) throws ServiceException { try { checkOpen(); requestCount.increment(); Region region = getRegion(request.getRegion()); region.startRegionOperation(Operation.SPLIT_REGION); if (region.getRegionInfo().getReplicaId() != HRegionInfo.DEFAULT_REPLICA_ID) { throw new IOException("Can't split replicas directly. " + "Replicas are auto-split when their primary is split."); } LOG.info("Splitting " + region.getRegionInfo().getRegionNameAsString()); long startTime = EnvironmentEdgeManager.currentTime(); FlushResult flushResult = region.flush(true); if (flushResult.isFlushSucceeded()) { long endTime = EnvironmentEdgeManager.currentTime(); regionServer.metricsRegionServer.updateFlushTime(endTime - startTime); } byte[] splitPoint = null; if (request.hasSplitPoint()) { splitPoint = request.getSplitPoint().toByteArray(); } ((HRegion)region).forceSplit(splitPoint); regionServer.compactSplitThread.requestSplit(region, ((HRegion)region).checkSplit(), RpcServer.getRequestUser()); return SplitRegionResponse.newBuilder().build(); } catch (DroppedSnapshotException ex) { regionServer.abort("Replay of WAL required. Forcing server shutdown", ex); throw new ServiceException(ex); } catch (IOException ie) { throw new ServiceException(ie); } }
/** * Create a SplitRegionRequest for a given region name * * @param regionName the name of the region to split * @param splitPoint the split point * @return a SplitRegionRequest */ public static SplitRegionRequest buildSplitRegionRequest( final byte[] regionName, final byte[] splitPoint) { SplitRegionRequest.Builder builder = SplitRegionRequest.newBuilder(); RegionSpecifier region = buildRegionSpecifier( RegionSpecifierType.REGION_NAME, regionName); builder.setRegion(region); if (splitPoint != null) { builder.setSplitPoint(ByteStringer.wrap(splitPoint)); } return builder.build(); }
/** * A helper to split a region using admin protocol. * * @param admin * @param hri * @param splitPoint * @throws IOException */ public static void split(final RpcController controller, final AdminService.BlockingInterface admin, final HRegionInfo hri, byte[] splitPoint) throws IOException { SplitRegionRequest request = RequestConverter.buildSplitRegionRequest(hri.getRegionName(), splitPoint); try { admin.splitRegion(controller, request); } catch (ServiceException se) { throw ProtobufUtil.getRemoteException(se); } }
/** * Split a region on the region server. * * @param controller the RPC controller * @param request the request * @throws ServiceException */ @Override @QosPriority(priority = HConstants.ADMIN_QOS) public SplitRegionResponse splitRegion(final RpcController controller, final SplitRegionRequest request) throws ServiceException { try { checkOpen(); requestCount.increment(); HRegion region = getRegion(request.getRegion()); region.startRegionOperation(Operation.SPLIT_REGION); LOG.info("Splitting " + region.getRegionNameAsString()); long startTime = EnvironmentEdgeManager.currentTime(); HRegion.FlushResult flushResult = region.flushcache(); if (flushResult.isFlushSucceeded()) { long endTime = EnvironmentEdgeManager.currentTime(); regionServer.metricsRegionServer.updateFlushTime(endTime - startTime); } byte[] splitPoint = null; if (request.hasSplitPoint()) { splitPoint = request.getSplitPoint().toByteArray(); } region.forceSplit(splitPoint); regionServer.compactSplitThread.requestSplit(region, region.checkSplit()); return SplitRegionResponse.newBuilder().build(); } catch (IOException ie) { throw new ServiceException(ie); } }
/** * A helper to split a region using admin protocol. * * @param admin * @param hri * @param splitPoint * @throws IOException */ public static void split(final AdminService.BlockingInterface admin, final HRegionInfo hri, byte[] splitPoint) throws IOException { SplitRegionRequest request = RequestConverter.buildSplitRegionRequest(hri.getRegionName(), splitPoint); try { admin.splitRegion(null, request); } catch (ServiceException se) { throw ProtobufUtil.getRemoteException(se); } }
/** * Create a SplitRegionRequest for a given region name * * @param regionName the name of the region to split * @param splitPoint the split point * @return a SplitRegionRequest */ public static SplitRegionRequest buildSplitRegionRequest( final byte[] regionName, final byte[] splitPoint) { SplitRegionRequest.Builder builder = SplitRegionRequest.newBuilder(); RegionSpecifier region = buildRegionSpecifier( RegionSpecifierType.REGION_NAME, regionName); builder.setRegion(region); if (splitPoint != null) { builder.setSplitPoint(HBaseZeroCopyByteString.wrap(splitPoint)); } return builder.build(); }
/** * Split a region on the region server. * * @param controller the RPC controller * @param request the request * @throws ServiceException */ @Override @QosPriority(priority=HConstants.HIGH_QOS) public SplitRegionResponse splitRegion(final RpcController controller, final SplitRegionRequest request) throws ServiceException { // Shen Li: add a reuseFile field to request try { checkOpen(); requestCount.increment(); HRegion region = getRegion(request.getRegion()); boolean reuseFile = request.getReuseFile(); // TODO: should not ask client to provide dest hostnames // do it in SplitRequest region.startRegionOperation(Operation.SPLIT_REGION); LOG.info("Shen Li: Splitting " + region.getRegionNameAsString()); region.flushcache(); byte[] splitPoint = null; if (request.hasSplitPoint()) { splitPoint = request.getSplitPoint().toByteArray(); } region.forceSplit(splitPoint); regionServer.compactSplitThread .requestSplit(region, region.checkSplit(), reuseFile); return SplitRegionResponse.newBuilder().build(); } catch (IOException ie) { throw new ServiceException(ie); } }
/** * Shen Li: add parameter reuseFile */ public static void split(final AdminService.BlockingInterface admin, final HRegionInfo hri, byte[] splitPoint, boolean reuseFile) throws IOException { SplitRegionRequest request = RequestConverter.buildSplitRegionRequest(hri.getRegionName(), splitPoint, reuseFile); try { admin.splitRegion(null, request); } catch (ServiceException se) { throw ProtobufUtil.getRemoteException(se); } }
/** * Create a SplitRegionRequest for a given region name * * @param regionName the name of the region to split * @param splitPoint the split point * @return a SplitRegionRequest */ public static SplitRegionRequest buildSplitRegionRequest( final byte[] regionName, final byte[] splitPoint) { SplitRegionRequest.Builder builder = SplitRegionRequest.newBuilder(); RegionSpecifier region = buildRegionSpecifier( RegionSpecifierType.REGION_NAME, regionName); builder.setRegion(region); if (splitPoint != null) { builder.setSplitPoint(ZeroCopyLiteralByteString.wrap(splitPoint)); } return builder.build(); }
/** * Create a SplitRegionRequest for a given region name * * @param regionName the name of the region to split * @param splitPoint the split point * @return a SplitRegionRequest */ public static SplitRegionRequest buildSplitRegionRequest( final byte[] regionName, final byte[] splitPoint) { SplitRegionRequest.Builder builder = SplitRegionRequest.newBuilder(); RegionSpecifier region = buildRegionSpecifier( RegionSpecifierType.REGION_NAME, regionName); builder.setRegion(region); if (splitPoint != null) { builder.setSplitPoint(ByteString.copyFrom(splitPoint)); } return builder.build(); }
/** * A helper to split a region using admin protocol. * * @param admin * @param hri * @param splitPoint * @throws IOException */ public static void split(final AdminProtocol admin, final HRegionInfo hri, byte[] splitPoint) throws IOException { SplitRegionRequest request = RequestConverter.buildSplitRegionRequest(hri.getRegionName(), splitPoint); try { admin.splitRegion(null, request); } catch (ServiceException se) { throw ProtobufUtil.getRemoteException(se); } }
@Override public SplitRegionResponse splitRegion(RpcController controller, SplitRegionRequest request) throws ServiceException { // TODO Auto-generated method stub return null; }
/** * Create a SplitRegionRequest for a given region name * * @param regionName the name of the region to split * @param splitPoint the split point * @return a SplitRegionRequest */ public static SplitRegionRequest buildSplitRegionRequest( final byte[] regionName, final byte[] splitPoint) { return buildSplitRegionRequest(regionName, splitPoint, false); }