@Override public int compare(RegionInfo l, RegionInfo r) { long diff = r.getRegionId() - l.getRegionId(); if (diff < 0) return -1; if (diff > 0) return 1; return 0; } }
private static long getMergedRegionIdTimestamp(final RegionInfo regionToMergeA, final RegionInfo regionToMergeB) { long rid = EnvironmentEdgeManager.currentTime(); // Region Id is a timestamp. Merged region's id can't be less than that of // merging regions else will insert at wrong location in hbase:meta (See HBASE-710). if (rid < regionToMergeA.getRegionId() || rid < regionToMergeB.getRegionId()) { LOG.warn("Clock skew; merging regions id are " + regionToMergeA.getRegionId() + " and " + regionToMergeB.getRegionId() + ", but current time here is " + rid); rid = Math.max(regionToMergeA.getRegionId(), regionToMergeB.getRegionId()) + 1; } return rid; }
/** * Calculate daughter regionid to use. * @param hri Parent {@link RegionInfo} * @return Daughter region id (timestamp) to use. */ private static long getDaughterRegionIdTimestamp(final RegionInfo hri) { long rid = EnvironmentEdgeManager.currentTime(); // Regionid is timestamp. Can't be less than that of parent else will insert // at wrong location in hbase:meta (See HBASE-710). if (rid < hri.getRegionId()) { LOG.warn("Clock skew; parent regions id is " + hri.getRegionId() + " but current time here is " + rid); rid = hri.getRegionId() + 1; } return rid; }
region.startKey = ByteBuffer.wrap(info.getStartKey()); region.endKey = ByteBuffer.wrap(info.getEndKey()); region.id = info.getRegionId(); region.name = ByteBuffer.wrap(info.getRegionName());
if (regionInfoA.getRegionId() > regionInfoB.getRegionId()) { return 1; } else if (regionInfoA.getRegionId() < regionInfoB.getRegionId()) { return -1;
ServerName addr = e.getValue(); model.add( new TableRegionModel(tableName.getNameAsString(), hri.getRegionId(), hri.getStartKey(), hri.getEndKey(), addr.getHostAndPort()));
private void addNewRegions() { try { List<HRegionLocation> locations = connection.getRegionLocator(tableName).getAllRegionLocations(); for (HRegionLocation location : locations) { if (location.getRegion().getRegionId() > timestamp) { Optional<MajorCompactionRequest> compactionRequest = MajorCompactionRequest .newRequest(connection.getConfiguration(), location.getRegion(), storesToCompact, timestamp); compactionRequest.ifPresent(request -> clusterCompactionQueues .addToCompactionQueue(location.getServerName(), request)); } } } catch (IOException e) { throw new RuntimeException(e); } }
private void recordAndTryFail(ObserverContext<RegionCoprocessorEnvironment> c) throws IOException { RegionInfo region = c.getEnvironment().getRegionInfo(); if (!region.getTable().equals(TABLE_NAME)) { return; } REPLICA_ID_TO_COUNT.computeIfAbsent(region.getReplicaId(), k -> new AtomicInteger()) .incrementAndGet(); if (region.getRegionId() == RegionReplicaUtil.DEFAULT_REPLICA_ID && FAIL_PRIMARY_GET) { throw new IOException("Inject error"); } }
/** * Costruct a copy of another HRegionInfo * * @param other */ public HRegionInfo(RegionInfo other) { super(); this.endKey = other.getEndKey(); this.offLine = other.isOffline(); this.regionId = other.getRegionId(); this.regionName = other.getRegionName(); this.split = other.isSplit(); this.startKey = other.getStartKey(); this.hashCode = other.hashCode(); this.encodedName = other.getEncodedName(); this.tableName = other.getTable(); this.replicaId = other.getReplicaId(); }
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(); }
region.setStartKey(regionInfo.getStartKey()); region.setEndKey(regionInfo.getEndKey()); region.id = regionInfo.getRegionId(); region.setName(regionInfo.getRegionName());
hri = ri.getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID ? HRegionInfo.FIRST_META_REGIONINFO : new HRegionInfo(ri.getRegionId(), ri.getTable(), ri.getReplicaId()); } else { hri = new HRegionInfo( ri.getEndKey(), ri.isSplit(), ri.getRegionId(), ri.getReplicaId()); if (proto.hasOffline()) {
for (HRegion r: hrs) { assertTrue("Region should not be double assigned", r.getRegionInfo().getRegionId() != hri.getRegionId());
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(); }
private HRegionInfo convert(RegionInfo ri) { HRegionInfo hri = new HRegionInfo( ri.getTable(), ri.getStartKey(), ri.getEndKey(), ri.isSplit(), ri.getRegionId()); hri.setOffline(ri.isOffline()); return hri; } }
private HRegionInfo convert(RegionInfo ri) { HRegionInfo hri =new HRegionInfo(ri.getTable(), ri.getStartKey(), ri.getEndKey(), ri.isSplit(), ri.getRegionId()); hri.setOffline(ri.isOffline()); return hri; } }
.setRegionId(regionInfo.getRegionId()) .setReplicaId(replicaId) .setOffline(regionInfo.isOffline()) .setEndKey(regionInfo.getEndKey()) .setSplit(regionInfo.isSplit()) .setRegionId(regionInfo.getRegionId()) .setReplicaId(replicaId) .setOffline(regionInfo.isOffline())
for (RegionInfo rinfo: regions) { errors.detail(" " + rinfo.getRegionNameAsString() + " id: " + rinfo.getRegionId() + " encoded_name: " + rinfo.getEncodedName() + " start: " + Bytes.toStringBinary(rinfo.getStartKey()) +
/** * Convert a RegionInfo to a Proto RegionInfo * * @param info the RegionInfo to convert * @return the converted Proto RegionInfo */ public static HBaseProtos.RegionInfo toRegionInfo(final org.apache.hadoop.hbase.client.RegionInfo info) { if (info == null) return null; HBaseProtos.RegionInfo.Builder builder = HBaseProtos.RegionInfo.newBuilder(); builder.setTableName(ProtobufUtil.toProtoTableName(info.getTable())); builder.setRegionId(info.getRegionId()); if (info.getStartKey() != null) { builder.setStartKey(UnsafeByteOperations.unsafeWrap(info.getStartKey())); } if (info.getEndKey() != null) { builder.setEndKey(UnsafeByteOperations.unsafeWrap(info.getEndKey())); } builder.setOffline(info.isOffline()); builder.setSplit(info.isSplit()); builder.setReplicaId(info.getReplicaId()); return builder.build(); }
@Test public void testBuilder() { TableName tn = TableName.valueOf("test"); RegionInfoBuilder builder = RegionInfoBuilder.newBuilder(tn); byte[] startKey = Bytes.toBytes("a"); builder.setStartKey(startKey); byte[] endKey = Bytes.toBytes("z"); builder.setEndKey(endKey); int regionId = 1; builder.setRegionId(1); int replicaId = 2; builder.setReplicaId(replicaId); boolean offline = true; builder.setOffline(offline); boolean isSplit = true; builder.setSplit(isSplit); RegionInfo ri = builder.build(); assertEquals(tn, ri.getTable()); assertArrayEquals(startKey, ri.getStartKey()); assertArrayEquals(endKey, ri.getEndKey()); assertEquals(regionId, ri.getRegionId()); assertEquals(replicaId, ri.getReplicaId()); assertEquals(offline, ri.isOffline()); assertEquals(isSplit, ri.isSplit()); }