Skip to content

Commit

Permalink
HBASE-22923 Consider minVersionToMoveSysTables while moving region an…
Browse files Browse the repository at this point in the history
…d creating regionPlan (ADDENDUM) (#3456) (#3455)

Signed-off-by: David Manning <[email protected]>
Signed-off-by: Bharath Vissapragada <[email protected]>
  • Loading branch information
virajjasani authored Jul 3, 2021
1 parent 7d0a72b commit cad219d
Showing 1 changed file with 7 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2571,18 +2571,6 @@ private int setOfflineInZooKeeper(final RegionState state, final ServerName dest
return versionOfOfflineNode;
}

/**
* For a given cluster with mixed versions of servers, get a list of
* servers with lower versions, where system table regions should not be
* assigned to.
* For system table, we must assign regions to a server with highest version.
* RS will report to master before register on zk, and only when RS have registered on zk we can
* know the version. So in fact we will never assign a system region to a RS without registering on zk.
*/
public List<ServerName> getExcludedServersForSystemTable() {
return getExcludedServersForSystemTable(false);
}

/**
* For a given cluster with mixed versions of servers, get a list of
* servers with lower versions, where system table regions should not be
Expand All @@ -2592,15 +2580,9 @@ public List<ServerName> getExcludedServersForSystemTable() {
* "hbase.min.version.move.system.tables" if checkForMinVersion is true.
* Detailed explanation available with definition of minVersionToMoveSysTables.
*
* @param checkForMinVersion If false, return a list of servers with lower version. If true,
* compare higher version with minVersionToMoveSysTables. Only if higher version is greater
* than minVersionToMoveSysTables, this method returns list of servers with lower version. If
* higher version is less than or equal to minVersionToMoveSysTables, returns empty list.
* An example is provided with definition of minVersionToMoveSysTables.
* @return List of Excluded servers for System table regions.
*/
private List<ServerName> getExcludedServersForSystemTable(
boolean checkForMinVersion) {
public List<ServerName> getExcludedServersForSystemTable() {
List<Pair<ServerName, String>> serverList = new ArrayList<>();
for (ServerName s : serverManager.getOnlineServersList()) {
serverList.add(new Pair<>(s, server.getRegionServerVersion(s)));
Expand All @@ -2615,13 +2597,11 @@ public int compare(Pair<ServerName, String> o1, Pair<ServerName, String> o2) {
return VersionInfo.compareVersion(o1.getSecond(), o2.getSecond());
}
}).getSecond();
if (checkForMinVersion) {
if (!DEFAULT_MIN_VERSION_MOVE_SYS_TABLES_CONFIG.equals(minVersionToMoveSysTables)) {
int comparedValue = VersionInfo
.compareVersion(minVersionToMoveSysTables, highestVersion);
if (comparedValue > 0) {
return Collections.emptyList();
}
if (!DEFAULT_MIN_VERSION_MOVE_SYS_TABLES_CONFIG.equals(minVersionToMoveSysTables)) {
int comparedValue = VersionInfo.compareVersion(minVersionToMoveSysTables,
highestVersion);
if (comparedValue > 0) {
return Collections.emptyList();
}
}
List<ServerName> res = new ArrayList<>();
Expand Down Expand Up @@ -2754,7 +2734,7 @@ public void run() {
synchronized (checkIfShouldMoveSystemRegionLock) {
// RS register on ZK after reports startup on master
List<HRegionInfo> regionsShouldMove = new ArrayList<>();
for (ServerName server : getExcludedServersForSystemTable(true)) {
for (ServerName server : getExcludedServersForSystemTable()) {
regionsShouldMove.addAll(getCarryingSystemTables(server));
}
if (!regionsShouldMove.isEmpty()) {
Expand Down

0 comments on commit cad219d

Please sign in to comment.