private boolean isOptionsSupported(String[] args) { boolean result = true; String hbaseServerVersion = status.getHBaseVersion(); if (VersionInfo.compareVersion("2.any.any", hbaseServerVersion) < 0) { // Process command-line args. for (String arg : args) { if (unsupportedOptionsInV2.contains(arg)) { errors.reportError(ERROR_CODE.UNSUPPORTED_OPTION, "option '" + arg + "' is not " + "supportted!"); result = false; break; } } } return result; }
/** * Get a list of servers that this region cannot be assigned to. * For system tables, we must assign them to a server with highest version. */ public List<ServerName> getExcludedServersForSystemTable() { // TODO: This should be a cached list kept by the ServerManager rather than calculated on each // move or system region assign. The RegionServerTracker keeps list of online Servers with // RegionServerInfo that includes Version. List<Pair<ServerName, String>> serverList = master.getServerManager().getOnlineServersList() .stream() .map((s)->new Pair<>(s, master.getRegionServerVersion(s))) .collect(Collectors.toList()); if (serverList.isEmpty()) { return Collections.emptyList(); } String highestVersion = Collections.max(serverList, (o1, o2) -> VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond(); return serverList.stream() .filter((p)->!p.getSecond().equals(highestVersion)) .map(Pair::getFirst) .collect(Collectors.toList()); }
@Test public void testCompareVersion() { assertTrue(VersionInfo.compareVersion("1.0.0", "0.98.11") > 0); assertTrue(VersionInfo.compareVersion("0.98.11", "1.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0", "1.4.0") > 0); assertTrue(VersionInfo.compareVersion("2.0.0", "2.0.0-SNAPSHOT") > 0); assertTrue(VersionInfo.compareVersion("0.94.6.1", "0.96.1.1") < 0); assertTrue(VersionInfo.compareVersion("0.96.1.1", "0.98.6.1") < 0); assertTrue(VersionInfo.compareVersion("0.98.6.1", "0.98.10.1") < 0); assertTrue(VersionInfo.compareVersion("0.98.10.1", "0.98.12.1") < 0); assertTrue(VersionInfo.compareVersion("0.98.12.1", "0.98.16.1") < 0); assertTrue(VersionInfo.compareVersion("0.98.16.1", "1.0.1.1") < 0); assertTrue(VersionInfo.compareVersion("1.0.1.1", "1.1.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.0..1", "2.0.0") > 0); assertTrue(VersionInfo.compareVersion("2.0.0", "2.0.0") == 0); assertTrue(VersionInfo.compareVersion("1.99.14", "2.0.0-alpha-1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-alpha-1", "2.0.0-beta-3") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-beta-3", "2.0.0-SNAPSHOT") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-SNAPSHOT", "2.0") < 0); assertTrue(VersionInfo.compareVersion("2.0", "2.0.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0.1", "2.0.1") < 0); assertTrue(VersionInfo.compareVersion("3.0.0-alpha-2", "3.0.0-alpha-11") < 0); assertTrue(VersionInfo.compareVersion("3.0.0-beta-2", "3.0.0-beta-11") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-foobar", "2.0.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.any.any", "2.0.0") < 0); assertTrue(VersionInfo.compareVersion("2.0.0", "2.any.any") > 0); assertTrue(VersionInfo.compareVersion("2.any.any", "2.0.0-alpha-1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-alpha-1", "2.any.any") > 0); assertTrue(VersionInfo.compareVersion("2.any.any", "2.0.0-beta-5-SNAPSHOT") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-beta-5-SNAPSHOT", "2.any.any") > 0);
static void checkVersion(final String versionStr) { if (VersionInfo.compareVersion(MININUM_VERSION, versionStr) > 0) { throw new UnsupportedOperationException("Requires " + MININUM_VERSION + " at least."); } // except 2.1.0 didn't ship with support if (VersionInfo.compareVersion(TWO_POINT_ONE, versionStr) == 0) { throw new UnsupportedOperationException(TWO_POINT_ONE + " has no support for hbck2"); } }
@Test public void testCompareVersion() { assertTrue(VersionInfo.compareVersion("1.0.0", "0.98.11") > 0); assertTrue(VersionInfo.compareVersion("0.98.11", "1.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0", "1.4.0") > 0); assertTrue(VersionInfo.compareVersion("2.0.0", "2.0.0-SNAPSHOT") < 0); } }
@Test public void testCompareVersion() { assertTrue(VersionInfo.compareVersion("1.0.0", "0.98.11") > 0); assertTrue(VersionInfo.compareVersion("0.98.11", "1.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0", "1.4.0") > 0); assertTrue(VersionInfo.compareVersion("2.0.0", "2.0.0-SNAPSHOT") > 0); assertTrue(VersionInfo.compareVersion("0.94.6.1", "0.96.1.1") < 0); assertTrue(VersionInfo.compareVersion("0.96.1.1", "0.98.6.1") < 0); assertTrue(VersionInfo.compareVersion("0.98.6.1", "0.98.10.1") < 0); assertTrue(VersionInfo.compareVersion("0.98.10.1", "0.98.12.1") < 0); assertTrue(VersionInfo.compareVersion("0.98.12.1", "0.98.16.1") < 0); assertTrue(VersionInfo.compareVersion("0.98.16.1", "1.0.1.1") < 0); assertTrue(VersionInfo.compareVersion("1.0.1.1", "1.1.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.0..1", "2.0.0") > 0); assertTrue(VersionInfo.compareVersion("2.0.0", "2.0.0") == 0); assertTrue(VersionInfo.compareVersion("1.99.14", "2.0.0-alpha-1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-alpha-1", "2.0.0-beta-3") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-beta-3", "2.0.0-SNAPSHOT") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-SNAPSHOT", "2.0") < 0); assertTrue(VersionInfo.compareVersion("2.0", "2.0.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0.1", "2.0.1") < 0); assertTrue(VersionInfo.compareVersion("3.0.0-alpha-2", "3.0.0-alpha-11") < 0); assertTrue(VersionInfo.compareVersion("3.0.0-beta-2", "3.0.0-beta-11") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-foobar", "2.0.0.1") < 0); assertTrue(VersionInfo.compareVersion("2.any.any", "2.0.0") < 0); assertTrue(VersionInfo.compareVersion("2.0.0", "2.any.any") > 0); assertTrue(VersionInfo.compareVersion("2.any.any", "2.0.0-alpha-1") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-alpha-1", "2.any.any") > 0); assertTrue(VersionInfo.compareVersion("2.any.any", "2.0.0-beta-5-SNAPSHOT") < 0); assertTrue(VersionInfo.compareVersion("2.0.0-beta-5-SNAPSHOT", "2.any.any") > 0);