/** * @return Region name as a String for use in logging, etc. */ @Override public String getRegionNameAsString() { return RegionInfo.getRegionNameAsString(this, this.regionName); }
private RegionInfoBuilder(RegionInfo regionInfo) { this.tableName = regionInfo.getTable(); this.startKey = regionInfo.getStartKey(); this.endKey = regionInfo.getEndKey(); this.offLine = regionInfo.isOffline(); this.split = regionInfo.isSplit(); this.regionId = regionInfo.getRegionId(); this.replicaId = regionInfo.getReplicaId(); this.regionName = regionInfo.getRegionName(); this.encodedName = regionInfo.getEncodedName(); }
private void cleanUpAndReportFailure(IOException error) throws IOException { LOG.warn("Failed to open region {}, will report to master", regionInfo.getRegionNameAsString(), error); RegionServerServices rs = getServer(); rs.getRegionsInTransitionInRS().remove(regionInfo.getEncodedNameAsBytes(), Boolean.TRUE); if (!rs.reportRegionStateTransition(new RegionStateTransitionContext(TransitionCode.FAILED_OPEN, HConstants.NO_SEQNUM, masterSystemTime, regionInfo))) { throw new IOException( "Failed to report failed open to master: " + regionInfo.getRegionNameAsString()); } }
public FlushRegionCallable(ClusterConnection connection, RpcControllerFactory rpcControllerFactory, RegionInfo regionInfo, boolean writeFlushWalMarker) { this(connection, rpcControllerFactory, regionInfo.getTable(), regionInfo.getRegionName(), regionInfo.getStartKey(), writeFlushWalMarker); }
public RegionReplicaReplayCallable(ClusterConnection connection, RpcControllerFactory rpcControllerFactory, TableName tableName, HRegionLocation location, RegionInfo regionInfo, byte[] row,List<Entry> entries, AtomicLong skippedEntries) { super(connection, rpcControllerFactory, location, tableName, row, regionInfo.getReplicaId()); this.entries = entries; this.skippedEntries = skippedEntries; this.initialEncodedRegionName = regionInfo.getEncodedNameAsBytes(); }
public static RegionInfo cloneRegionInfo(TableName tableName, RegionInfo snapshotRegionInfo) { return RegionInfoBuilder.newBuilder(tableName) .setStartKey(snapshotRegionInfo.getStartKey()) .setEndKey(snapshotRegionInfo.getEndKey()) .setSplit(snapshotRegionInfo.isSplit()) .setRegionId(snapshotRegionInfo.getRegionId()) .setOffline(snapshotRegionInfo.isOffline()) .build(); }
public void checkQuotaToSplitRegion(RegionInfo hri) throws IOException { if (!stateManager.isInitialized()) { throw new IOException( "Split operation is being performed even before namespace auditor is initialized."); } else if (!stateManager .checkAndUpdateNamespaceRegionCount(hri.getTable(), hri.getRegionName(), 1)) { throw new QuotaExceededException("Region split not possible for :" + hri.getEncodedName() + " as quota limits are exceeded "); } }
private boolean isValidRegion(RegionInfo hri) { // An offline split parent region should be excluded. if (hri.isOffline() && (hri.isSplit() || hri.isSplitParent())) { return false; } return PrivateCellUtil.overlappingKeys(scan.getStartRow(), scan.getStopRow(), hri.getStartKey(), hri.getEndKey()); }
private static List<RegionInfo> recreateRegionInfo(final List<RegionInfo> regions) { ArrayList<RegionInfo> newRegions = new ArrayList<>(regions.size()); for (RegionInfo hri: regions) { newRegions.add(RegionInfoBuilder.newBuilder(hri.getTable()) .setStartKey(hri.getStartKey()) .setEndKey(hri.getEndKey()) .build()); } return newRegions; }
private void split(final RegionInfo hri, final HRegionServer server, final int regionCount) throws IOException, InterruptedException { admin.splitRegionAsync(hri.getRegionName(), null); for (int i = 0; cluster.getRegions(hri.getTable()).size() <= regionCount && i < 60; i++) { LOG.debug("Waiting on region " + hri.getRegionNameAsString() + " to split"); Thread.sleep(2000); } assertFalse("Waited too long for split", cluster.getRegions(hri.getTable()).size() <= regionCount); }
public static boolean rowIsInRange(RegionInfo info, final byte [] row, final int offset, final short length) { return ((info.getStartKey().length == 0) || (Bytes.compareTo(info.getStartKey(), 0, info.getStartKey().length, row, offset, length) <= 0)) && ((info.getEndKey().length == 0) || (Bytes.compareTo(info.getEndKey(), 0, info.getEndKey().length, row, offset, length) > 0)); }
private void assertMetaRegionLocation(HRegionLocation loc, int replicaId) { RegionInfo region = loc.getRegion(); assertArrayEquals(HConstants.EMPTY_START_ROW, region.getStartKey()); assertArrayEquals(HConstants.EMPTY_END_ROW, region.getEndKey()); assertEquals(replicaId, region.getReplicaId()); ServerName expected = findRegionLocation(TableName.META_TABLE_NAME, region.getStartKey(), replicaId); assertEquals(expected, loc.getServerName()); }
private long getRegionSize(RegionInfo hri) { ServerName sn = masterServices.getAssignmentManager().getRegionStates(). getRegionServerOfRegion(hri); RegionMetrics regionLoad = masterServices.getServerManager().getLoad(sn). getRegionMetrics().get(hri.getRegionName()); if (regionLoad == null) { LOG.debug(hri.getRegionNameAsString() + " was not found in RegionsLoad"); return -1; } return (long) regionLoad.getStoreFileSize().get(Size.Unit.MEGABYTE); } }
/** * Create a new HFileLink name * * @param hfileRegionInfo - Linked HFile Region Info * @param hfileName - Linked HFile name * @return file name of the HFile Link */ public static String createHFileLinkName(final RegionInfo hfileRegionInfo, final String hfileName) { return createHFileLinkName(hfileRegionInfo.getTable(), hfileRegionInfo.getEncodedName(), hfileName); }
String getOnlineRegionsAsPrintableString() { StringBuilder sb = new StringBuilder(); for (Region r: this.onlineRegions.values()) { if (sb.length() > 0) sb.append(", "); sb.append(r.getRegionInfo().getEncodedName()); } return sb.toString(); }
@VisibleForTesting RegionStateNode createRegionStateNode(RegionInfo regionInfo) { RegionStateNode newNode = new RegionStateNode(regionInfo, regionInTransition); RegionStateNode oldNode = regionsMap.putIfAbsent(regionInfo.getRegionName(), newNode); return oldNode != null ? oldNode : newNode; }
public String getScanDetailsWithId(long scannerId) { RegionScanner scanner = getScanner(scannerId); if (scanner == null) { return null; } StringBuilder builder = new StringBuilder(); builder.append("table: ").append(scanner.getRegionInfo().getTable().getNameAsString()); builder.append(" region: ").append(scanner.getRegionInfo().getRegionNameAsString()); return builder.toString(); }
@Override public void prePut(ObserverContext<RegionCoprocessorEnvironment> e, Put put, WALEdit edit, Durability durability) throws IOException { Region region = e.getEnvironment().getRegion(); if (!region.getRegionInfo().isMetaRegion() && !region.getRegionInfo().getTable().isSystemTable()) { if (put.getAttribute(TEST_ATR_KEY) != null) { LOG.debug("allow any put to happen " + region.getRegionInfo().getRegionNameAsString()); } else { e.bypass(); } } } }
private static List<RegionInfo> testGettingTableRegions(final Connection connection, final TableName name, final int regionCount) throws IOException, InterruptedException { List<RegionInfo> regions = MetaTableAccessor.getTableRegions(connection, name); assertEquals(regionCount, regions.size()); Pair<RegionInfo, ServerName> pair = MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName()); assertEquals(regions.get(0).getEncodedName(), pair.getFirst().getEncodedName()); return regions; }
private List<RegionInfo> filterRegions(List<RegionInfo> regions) { List<RegionInfo> ret = Lists.newArrayList(); for (RegionInfo hri : regions) { if (hri.isMetaRegion() || (!hbck.checkMetaOnly && hbck.isTableIncluded(hri.getTable()))) { ret.add(hri); } } return ret; } }