@Override public boolean equals(Object obj) { if (obj == null || obj.getClass() != LocateRequest.class) { return false; } LocateRequest that = (LocateRequest) obj; return locateType.equals(that.locateType) && Bytes.equals(row, that.row); } }
CompletableFuture<RegionLocations> getRegionLocations(TableName tableName, byte[] row, int replicaId, RegionLocateType locateType, boolean reload) { // as we know the exact row after us, so we can just create the new row, and use the same // algorithm to locate it. if (locateType.equals(RegionLocateType.AFTER)) { row = createClosestRowAfter(row); locateType = RegionLocateType.CURRENT; } return getRegionLocationsInternal(tableName, row, replicaId, locateType, reload); }
private RegionLocations locateInCache(TableCache tableCache, TableName tableName, byte[] row, int replicaId, RegionLocateType locateType) { return locateType.equals(RegionLocateType.BEFORE) ? locateRowBeforeInCache(tableCache, tableName, row, replicaId) : locateRowInCache(tableCache, tableName, row, replicaId); }
private CompletableFuture<RegionLocations> getRegionLocationsInternal(TableName tableName, byte[] row, int replicaId, RegionLocateType locateType, boolean reload) { assert !locateType.equals(RegionLocateType.AFTER); TableCache tableCache = getTableCache(tableName); if (!reload) {
if (req.locateType.equals(RegionLocateType.BEFORE)) {
if (req.locateType.equals(RegionLocateType.BEFORE)) { if (isEmptyStopRow(req.row)) { byte[] binaryTableName = tableName.getName();
@Override public boolean equals(Object obj) { if (obj == null || obj.getClass() != LocateRequest.class) { return false; } LocateRequest that = (LocateRequest) obj; return locateType.equals(that.locateType) && Bytes.equals(row, that.row); } }
CompletableFuture<HRegionLocation> getRegionLocation(TableName tableName, byte[] row, RegionLocateType locateType, boolean reload) { if (locateType.equals(RegionLocateType.BEFORE)) { return getRegionLocationInternal(tableName, row, locateType, reload); } else { // as we know the exact row after us, so we can just create the new row, and use the same // algorithm to locate it. if (locateType.equals(RegionLocateType.AFTER)) { row = createClosestRowAfter(row); } return getRegionLocationInternal(tableName, row, RegionLocateType.CURRENT, reload); } }
private HRegionLocation locateInCache(TableCache tableCache, TableName tableName, byte[] row, RegionLocateType locateType) { return locateType.equals(RegionLocateType.BEFORE) ? locateRowBeforeInCache(tableCache, tableName, row) : locateRowInCache(tableCache, tableName, row); }
private boolean tryComplete(LocateRequest req, CompletableFuture<HRegionLocation> future, Optional<HRegionLocation> location) { if (future.isDone()) { return true; } if (!location.isPresent()) { return false; } HRegionLocation loc = location.get(); boolean completed; if (req.locateType.equals(RegionLocateType.BEFORE)) { // for locating the row before current row, the common case is to find the previous region // in reverse scan, so we check the endKey first. In general, the condition should be // startKey < req.row and endKey >= req.row. Here we split it to endKey == req.row || // (endKey > req.row && startKey < req.row). The two conditions are equal since startKey < // endKey. int c = Bytes.compareTo(loc.getRegion().getEndKey(), req.row); completed = c == 0 || (c > 0 && Bytes.compareTo(loc.getRegion().getStartKey(), req.row) < 0); } else { completed = loc.getRegion().containsRow(req.row); } if (completed) { future.complete(loc); return true; } else { return false; } } }
private CompletableFuture<HRegionLocation> getRegionLocationInternal(TableName tableName, byte[] row, RegionLocateType locateType, boolean reload) { assert !locateType.equals(RegionLocateType.AFTER); TableCache tableCache = getTableCache(tableName); if (!reload) {
if (req.locateType.equals(RegionLocateType.BEFORE)) { if (isEmptyStopRow(req.row)) { byte[] binaryTableName = tableName.getName();
@Override public boolean equals(Object obj) { if (obj == null || obj.getClass() != LocateRequest.class) { return false; } LocateRequest that = (LocateRequest) obj; return locateType.equals(that.locateType) && Bytes.equals(row, that.row); } }
CompletableFuture<HRegionLocation> getRegionLocation(TableName tableName, byte[] row, RegionLocateType locateType, boolean reload) { if (locateType.equals(RegionLocateType.BEFORE)) { return getRegionLocationInternal(tableName, row, locateType, reload); } else { // as we know the exact row after us, so we can just create the new row, and use the same // algorithm to locate it. if (locateType.equals(RegionLocateType.AFTER)) { row = createClosestRowAfter(row); } return getRegionLocationInternal(tableName, row, RegionLocateType.CURRENT, reload); } }
private HRegionLocation locateInCache(TableCache tableCache, TableName tableName, byte[] row, RegionLocateType locateType) { return locateType.equals(RegionLocateType.BEFORE) ? locateRowBeforeInCache(tableCache, tableName, row) : locateRowInCache(tableCache, tableName, row); }
private boolean tryComplete(LocateRequest req, CompletableFuture<HRegionLocation> future, Optional<HRegionLocation> location) { if (future.isDone()) { return true; } if (!location.isPresent()) { return false; } HRegionLocation loc = location.get(); boolean completed; if (req.locateType.equals(RegionLocateType.BEFORE)) { // for locating the row before current row, the common case is to find the previous region // in reverse scan, so we check the endKey first. In general, the condition should be // startKey < req.row and endKey >= req.row. Here we split it to endKey == req.row || // (endKey > req.row && startKey < req.row). The two conditions are equal since startKey < // endKey. int c = Bytes.compareTo(loc.getRegion().getEndKey(), req.row); completed = c == 0 || (c > 0 && Bytes.compareTo(loc.getRegion().getStartKey(), req.row) < 0); } else { completed = loc.getRegion().containsRow(req.row); } if (completed) { future.complete(loc); return true; } else { return false; } } }
private CompletableFuture<HRegionLocation> getRegionLocationInternal(TableName tableName, byte[] row, RegionLocateType locateType, boolean reload) { assert !locateType.equals(RegionLocateType.AFTER); TableCache tableCache = getTableCache(tableName); if (!reload) {
if (req.locateType.equals(RegionLocateType.BEFORE)) { if (isEmptyStopRow(req.row)) { byte[] binaryTableName = tableName.getName();