diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ca2f147b..a1e33ca93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. - hadoop: Add `3.5.0` and `3.4.3` ([#1511]). - airflow: Add `3.2.2` ([#1519], [#1541]). - druid: Add `37.0.0` ([#1535]). +- hbase: Add `2.6.6` ([#1547]). ### Changed @@ -51,6 +52,7 @@ All notable changes to this project will be documented in this file. - hive: Remove `4.1.0` ([#1539]). - druid: Remove `34.0.0` ([#1535]). - java-base: Drop Java 8 ([#1548]). +- hbase: Remove `2.6.3` ([#1547]). [#1446]: https://github.com/stackabletech/docker-images/pull/1446 [#1452]: https://github.com/stackabletech/docker-images/pull/1452 @@ -81,6 +83,7 @@ All notable changes to this project will be documented in this file. [#1535]: https://github.com/stackabletech/docker-images/pull/1535 [#1539]: https://github.com/stackabletech/docker-images/pull/1539 [#1541]: https://github.com/stackabletech/docker-images/pull/1541 +[#1547]: https://github.com/stackabletech/docker-images/pull/1547 [#1548]: https://github.com/stackabletech/docker-images/pull/1548 ## [26.3.0] - 2026-03-16 diff --git a/hbase/boil-config.toml b/hbase/boil-config.toml index 3b529b813..cd3e93691 100644 --- a/hbase/boil-config.toml +++ b/hbase/boil-config.toml @@ -1,28 +1,32 @@ [metadata.registries] "oci.stackable.tech" = { namespace = "sdp" } -[versions."2.6.3".local-images] -"hbase/hbase" = "2.6.3" -"hbase/hbase-operator-tools" = "1.3.0-hbase2.6.3" -"hbase/phoenix" = "5.2.1-hbase2.6.3" +# Deprecated since 26.7.0 +[versions."2.6.4".local-images] +"hbase/hbase" = "2.6.4" +"hbase/hbase-operator-tools" = "1.3.0-hbase2.6.4" +"hbase/phoenix" = "5.3.0-hbase2.6.4" "hbase/hbase-opa-authorizer" = "0.3.0" -"hadoop/hadoop" = "3.4.2" # TODO: Bump to 3.4.3 +"hadoop/hadoop" = "3.4.3" java-base = "11" java-devel = "11" -[versions."2.6.3".build-arguments] +[versions."2.6.4".build-arguments] hbase-profile = "2.6" delete-caches = "true" -[versions."2.6.4".local-images] -"hbase/hbase" = "2.6.4" -"hbase/hbase-operator-tools" = "1.3.0-hbase2.6.4" -"hbase/phoenix" = "5.3.0-hbase2.6.4" + + +# LTS since 26.7.0 +[versions."2.6.6".local-images] +"hbase/hbase" = "2.6.6" +"hbase/hbase-operator-tools" = "1.3.0-hbase2.6.6" +"hbase/phoenix" = "5.3.1-hbase2.6.6" "hbase/hbase-opa-authorizer" = "0.3.0" -"hadoop/hadoop" = "3.4.2" # TODO: Bump to 3.4.3 +"hadoop/hadoop" = "3.4.3" java-base = "11" java-devel = "11" -[versions."2.6.4".build-arguments] +[versions."2.6.6".build-arguments] hbase-profile = "2.6" delete-caches = "true" diff --git a/hbase/hbase-operator-tools/boil-config.toml b/hbase/hbase-operator-tools/boil-config.toml index ceb2736e4..17807e0af 100644 --- a/hbase/hbase-operator-tools/boil-config.toml +++ b/hbase/hbase-operator-tools/boil-config.toml @@ -1,21 +1,21 @@ -[versions."1.3.0-hbase2.6.3".local-images] -"hadoop/hadoop" = "3.4.2" # TODO: Bump to 3.4.3 -"hbase/hbase" = "2.6.3" -"java-devel" = "11" - -[versions."1.3.0-hbase2.6.3".build-arguments] -hbase-operator-tools-version = "1.3.0" -hbase-thirdparty-version = "4.1.9" -delete-caches = "true" - # Note: The next Hbase version should use 1.4.0 if it is released. # At the time of writing, the latest commit is b22878f. [versions."1.3.0-hbase2.6.4".local-images] -"hadoop/hadoop" = "3.4.2" # TODO: Bump to 3.4.3 +"hadoop/hadoop" = "3.4.3" "hbase/hbase" = "2.6.4" "java-devel" = "11" [versions."1.3.0-hbase2.6.4".build-arguments] hbase-operator-tools-version = "1.3.0" -hbase-thirdparty-version = "4.1.9" +hbase-thirdparty-version = "4.1.12" # Needs to match https://github.com/apache/hbase/blob/rel/2.6.6/pom.xml +delete-caches = "true" + +[versions."1.3.0-hbase2.6.6".local-images] +"hadoop/hadoop" = "3.4.3" +"hbase/hbase" = "2.6.6" +"java-devel" = "11" + +[versions."1.3.0-hbase2.6.6".build-arguments] +hbase-operator-tools-version = "1.3.0" +hbase-thirdparty-version = "4.1.13" # Needs to match https://github.com/apache/hbase/blob/rel/2.6.6/pom.xml delete-caches = "true" diff --git a/hbase/hbase/boil-config.toml b/hbase/hbase/boil-config.toml index 7518e59b2..eb67a1be6 100644 --- a/hbase/hbase/boil-config.toml +++ b/hbase/hbase/boil-config.toml @@ -1,17 +1,21 @@ -[versions."2.6.3".local-images] -"hadoop/hadoop" = "3.4.2" # TODO: Bump to 3.4.3 +# Deprecated since 26.7.0 +[versions."2.6.4".local-images] +"hadoop/hadoop" = "3.4.3" java-base = "11" java-devel = "11" -[versions."2.6.3".build-arguments] +[versions."2.6.4".build-arguments] async-profiler-version = "2.9" delete-caches = "true" -[versions."2.6.4".local-images] -"hadoop/hadoop" = "3.4.2" # TODO: Bump to 3.4.3 + + +# LTS since 26.7.0 +[versions."2.6.6".local-images] +"hadoop/hadoop" = "3.4.3" java-base = "11" java-devel = "11" -[versions."2.6.4".build-arguments] +[versions."2.6.6".build-arguments] async-profiler-version = "2.9" delete-caches = "true" diff --git a/hbase/hbase/stackable/patches/2.6.3/0007-HBASE-29797-Should-not-create-wal-directory-when-cre.patch b/hbase/hbase/stackable/patches/2.6.3/0007-HBASE-29797-Should-not-create-wal-directory-when-cre.patch deleted file mode 100644 index c17a37430..000000000 --- a/hbase/hbase/stackable/patches/2.6.3/0007-HBASE-29797-Should-not-create-wal-directory-when-cre.patch +++ /dev/null @@ -1,672 +0,0 @@ -From c7d9a409304d124316d4bc552291beda331a2ae6 Mon Sep 17 00:00:00 2001 -From: Sebastian Bernauer -Date: Thu, 5 Feb 2026 14:38:22 +0100 -Subject: HBASE-29797 Should not create wal directory when creating WAL - instance - -Cherry-picked from https://github.com/apache/hbase/pull/7589 ---- - hbase-server/pom.xml | 5 ++ - .../hbase/master/region/MasterRegion.java | 2 +- - .../hbase/regionserver/HRegionServer.java | 4 +- - .../hbase/regionserver/wal/AbstractFSWAL.java | 6 +- - .../apache/hadoop/hbase/wal/WALFactory.java | 34 +++++++- - .../hadoop/hbase/HBaseTestingUtility.java | 5 +- - .../hadoop/hbase/master/TestWALFencing.java | 81 +++++++++++++++++++ - .../regionserver/TestCompactionPolicy.java | 1 + - .../regionserver/TestFailedAppendAndSync.java | 1 + - .../hbase/regionserver/TestHRegion.java | 22 ++--- - .../hbase/regionserver/TestLogRoller.java | 5 +- - .../hbase/regionserver/TestWALLockup.java | 2 + - .../regionserver/wal/AbstractTestFSWAL.java | 7 +- - .../wal/AbstractTestWALReplay.java | 1 + - .../wal/TestAsyncFSWALDurability.java | 2 +- - .../wal/TestAsyncFSWALRollStuck.java | 1 + - .../regionserver/wal/TestAsyncWALReplay.java | 4 +- - .../hbase/regionserver/wal/TestFSHLog.java | 3 + - .../wal/TestFSHLogDurability.java | 2 +- - .../hbase/regionserver/wal/TestWALReplay.java | 4 +- - .../wal/WALDurabilityTestBase.java | 8 +- - .../hadoop/hbase/wal/TestWALFactory.java | 15 ++-- - .../hadoop/hbase/wal/TestWALSplitToHFile.java | 5 +- - pom.xml | 7 ++ - 24 files changed, 190 insertions(+), 37 deletions(-) - create mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java - -diff --git a/hbase-server/pom.xml b/hbase-server/pom.xml -index 5b7a6aa09e..91e37188dc 100644 ---- a/hbase-server/pom.xml -+++ b/hbase-server/pom.xml -@@ -297,6 +297,11 @@ - junit - test - -+ -+ org.awaitility -+ awaitility -+ test -+ - - org.mockito - mockito-core -diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegion.java -index 7fd7f6fa5c..0cef601d5b 100644 ---- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegion.java -+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/region/MasterRegion.java -@@ -468,7 +468,7 @@ public final class MasterRegion { - params.archivedWalSuffix(), params.rollPeriodMs(), params.flushSize()); - walRoller.start(); - -- WALFactory walFactory = new WALFactory(conf, server.getServerName().toString()); -+ WALFactory walFactory = new WALFactory(conf, server.getServerName().toString(), server); - Path tableDir = CommonFSUtils.getTableDir(rootDir, td.getTableName()); - Path initializingFlag = new Path(tableDir, INITIALIZING_FLAG); - Path initializedFlag = new Path(tableDir, INITIALIZED_FLAG); -diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -index bf35b0a38a..e6d70dad3b 100644 ---- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -@@ -2123,8 +2123,8 @@ public class HRegionServer extends Thread - throw new RegionServerRunningException( - "Region server has already created directory at " + this.serverName.toString()); - } -- // Always create wal directory as now we need this when master restarts to find out the live -- // region servers. -+ // Create wal directory here and we will never create it again in other places. This is -+ // important to make sure that our fencing way takes effect. See HBASE-29797 for more details. - if (!this.walFs.mkdirs(logDir)) { - throw new IOException("Can not create wal directory " + logDir); - } -diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java -index 76e292bd85..efa151dd6f 100644 ---- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java -+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java -@@ -424,10 +424,8 @@ public abstract class AbstractFSWAL implements WAL { - this.conf = conf; - this.abortable = abortable; - -- if (!fs.exists(walDir) && !fs.mkdirs(walDir)) { -- throw new IOException("Unable to mkdir " + walDir); -- } -- -+ // Here we only crate archive dir, without wal dir. This is to make sure that our fencing way -+ // takes effect. See HBASE-29797 for more details. - if (!fs.exists(this.walArchiveDir)) { - if (!fs.mkdirs(this.walArchiveDir)) { - throw new IOException("Unable to mkdir " + this.walArchiveDir); -diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java -index 11a6c18042..cedeb46f43 100644 ---- a/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java -+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALFactory.java -@@ -17,6 +17,7 @@ - */ - package org.apache.hadoop.hbase.wal; - -+import com.google.errorprone.annotations.RestrictedApi; - import java.io.IOException; - import java.io.InterruptedIOException; - import java.util.List; -@@ -31,6 +32,7 @@ import org.apache.hadoop.hbase.regionserver.wal.MetricsWAL; - import org.apache.hadoop.hbase.regionserver.wal.ProtobufWALStreamReader; - import org.apache.hadoop.hbase.regionserver.wal.ProtobufWALTailingReader; - import org.apache.hadoop.hbase.util.CancelableProgressable; -+import org.apache.hadoop.hbase.util.CommonFSUtils; - import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; - import org.apache.hadoop.hbase.util.LeaseNotRecoveredException; - import org.apache.hadoop.hbase.wal.WALProvider.Writer; -@@ -203,8 +205,10 @@ public class WALFactory { - return provider; - } - -+ @RestrictedApi(explanation = "Should only be called in tests", link = "", -+ allowedOnPath = ".*/src/test/.*|.*/HBaseTestingUtility.java|.*/WALPerformanceEvaluation.java") - public WALFactory(Configuration conf, String factoryId) throws IOException { -- this(conf, factoryId, null); -+ this(conf, factoryId, null, true); - } - - /** -@@ -213,6 +217,30 @@ public class WALFactory { - * @param abortable the server to abort - */ - public WALFactory(Configuration conf, String factoryId, Abortable abortable) throws IOException { -+ this(conf, factoryId, abortable, false); -+ } -+ -+ private static void createWALDirectory(Configuration conf, String factoryId) throws IOException { -+ FileSystem walFs = CommonFSUtils.getWALFileSystem(conf); -+ Path walRootDir = CommonFSUtils.getWALRootDir(conf); -+ Path walDir = new Path(walRootDir, AbstractFSWALProvider.getWALDirectoryName(factoryId)); -+ if (!walFs.exists(walDir) && !walFs.mkdirs(walDir)) { -+ throw new IOException("Can not create wal directory " + walDir); -+ } -+ } -+ -+ /** -+ * @param conf must not be null, will keep a reference to read params in later -+ * reader/writer instances. -+ * @param factoryId a unique identifier for this factory. used i.e. by filesystem -+ * implementations to make a directory -+ * @param abortable the server associated with this WAL file -+ * @param createWalDirectory pass {@code true} for testing purpose, to create the wal directory -+ * automatically. In normal code path, we should create it in -+ * HRegionServer setup. -+ */ -+ private WALFactory(Configuration conf, String factoryId, Abortable abortable, -+ boolean createWalDirectory) throws IOException { - // until we've moved reader/writer construction down into providers, this initialization must - // happen prior to provider initialization, in case they need to instantiate a reader/writer. - timeoutMillis = conf.getInt("hbase.hlog.open.timeout", 300000); -@@ -229,6 +257,10 @@ public class WALFactory { - this.abortable = abortable; - // end required early initialization - if (conf.getBoolean(WAL_ENABLED, true)) { -+ if (createWalDirectory) { -+ // for testing only -+ createWALDirectory(conf, factoryId); -+ } - provider = getProvider(WAL_PROVIDER, DEFAULT_WAL_PROVIDER, null); - } else { - // special handling of existing configuration behavior. -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java -index 01a9c4f06f..de3c6e4c19 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java -@@ -2583,8 +2583,9 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility { - // The WAL subsystem will use the default rootDir rather than the passed in rootDir - // unless I pass along via the conf. - Configuration confForWAL = new Configuration(conf); -- confForWAL.set(HConstants.HBASE_DIR, rootDir.toString()); -- return new WALFactory(confForWAL, "hregion-" + RandomStringUtils.randomNumeric(8)).getWAL(hri); -+ CommonFSUtils.setRootDir(confForWAL, rootDir); -+ return new WALFactory(confForWAL, "hregion-" + RandomStringUtils.insecure().nextNumeric(8)) -+ .getWAL(hri); - } - - /** -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java -new file mode 100644 -index 0000000000..9341dcd5d9 ---- /dev/null -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java -@@ -0,0 +1,81 @@ -+/* -+ * Licensed to the Apache Software Foundation (ASF) under one -+ * or more contributor license agreements. See the NOTICE file -+ * distributed with this work for additional information -+ * regarding copyright ownership. The ASF licenses this file -+ * to you under the Apache License, Version 2.0 (the -+ * "License"); you may not use this file except in compliance -+ * with the License. You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+package org.apache.hadoop.hbase.master; -+ -+import static org.awaitility.Awaitility.await; -+ -+import java.io.IOException; -+import java.time.Duration; -+import java.util.Collections; -+import org.apache.hadoop.fs.FileStatus; -+import org.apache.hadoop.fs.Path; -+import org.apache.hadoop.hbase.HBaseTestingUtility; -+import org.apache.hadoop.hbase.TableName; -+import org.apache.hadoop.hbase.client.RegionInfo; -+import org.apache.hadoop.hbase.regionserver.HRegionServer; -+import org.apache.hadoop.hbase.regionserver.Region; -+import org.apache.hadoop.hbase.testclassification.MasterTests; -+import org.apache.hadoop.hbase.testclassification.MediumTests; -+import org.apache.hadoop.hbase.util.RecoverLeaseFSUtils; -+import org.junit.jupiter.api.AfterAll; -+import org.junit.jupiter.api.BeforeAll; -+import org.junit.jupiter.api.Tag; -+import org.junit.jupiter.api.Test; -+ -+/** -+ * Testcase for HBASE-29797, where the lazy initialized WALProvider may recreate the WAL directory -+ * and cause our fencing way loses efficacy. -+ */ -+@Tag(MasterTests.TAG) -+@Tag(MediumTests.TAG) -+public class TestWALFencing { -+ -+ private static final HBaseTestingUtility UTIL = new HBaseTestingUtility(); -+ -+ @BeforeAll -+ public static void setUp() throws Exception { -+ UTIL.startMiniCluster(3); -+ UTIL.getAdmin().balancerSwitch(false, true); -+ } -+ -+ @AfterAll -+ public static void tearDown() throws IOException { -+ UTIL.shutdownMiniCluster(); -+ } -+ -+ @Test -+ public void testMoveMeta() throws Exception { -+ HRegionServer metaRs = UTIL.getRSForFirstRegionInTable(TableName.META_TABLE_NAME); -+ HRegionServer otherRs = UTIL.getOtherRegionServer(metaRs); -+ // do fencing here, i.e, kill otherRs -+ Path splittingDir = UTIL.getMiniHBaseCluster().getMaster().getMasterWalManager() -+ .getLogDirs(Collections.singleton(otherRs.getServerName())).get(0); -+ for (FileStatus walFile : otherRs.getWALFileSystem().listStatus(splittingDir)) { -+ RecoverLeaseFSUtils.recoverFileLease(otherRs.getWALFileSystem(), walFile.getPath(), -+ otherRs.getConfiguration()); -+ } -+ // move meta region to otherRs, which should fail and crash otherRs, and then master will try to -+ // assign meta region to another rs -+ RegionInfo metaRegionInfo = metaRs.getRegions().stream().map(Region::getRegionInfo) -+ .filter(RegionInfo::isMetaRegion).findAny().get(); -+ UTIL.getAdmin().move(metaRegionInfo.getEncodedNameAsBytes(), otherRs.getServerName()); -+ // make sure that meta region is not on otherRs -+ await().during(Duration.ofSeconds(5)).atMost(Duration.ofSeconds(6)) -+ .until(() -> otherRs.getRegions(TableName.META_TABLE_NAME).isEmpty()); -+ } -+} -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.java -index dcd900ec33..5265445229 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.java -@@ -98,6 +98,7 @@ public class TestCompactionPolicy { - htd.addFamily(hcd); - HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false); - -+ fs.mkdirs(new Path(basedir, logName)); - hlog = new FSHLog(fs, basedir, logName, conf); - ChunkCreator.initialize(MemStoreLAB.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null, - MemStoreLAB.INDEX_CHUNK_SIZE_PERCENTAGE_DEFAULT); -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.java -index 676151f3eb..a460aa4922 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.java -@@ -194,6 +194,7 @@ public class TestFailedAppendAndSync { - // the test. - FileSystem fs = FileSystem.get(CONF); - Path rootDir = new Path(dir + getName()); -+ fs.mkdirs(new Path(rootDir, getName())); - DodgyFSLog dodgyWAL = new DodgyFSLog(fs, services, rootDir, getName(), CONF); - dodgyWAL.init(); - LogRoller logRoller = new LogRoller(services); -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java -index 0599350840..ebea0953ba 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java -@@ -366,8 +366,9 @@ public class TestHRegion { - } - - FileSystem fs = FileSystem.get(CONF); -- Path rootDir = new Path(dir + "testMemstoreSnapshotSize"); -- MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, "testMemstoreSnapshotSize", CONF); -+ Path rootDir = new Path(dir + method); -+ fs.mkdirs(new Path(rootDir, method)); -+ MyFaultyFSLog faultyLog = new MyFaultyFSLog(fs, rootDir, method, CONF); - region = initHRegion(tableName, null, null, CONF, false, Durability.SYNC_WAL, faultyLog, - COLUMN_FAMILY_BYTES); - -@@ -410,10 +411,10 @@ public class TestHRegion { - - @Test - public void testMemstoreSizeAccountingWithFailedPostBatchMutate() throws IOException { -- String testName = "testMemstoreSizeAccountingWithFailedPostBatchMutate"; - FileSystem fs = FileSystem.get(CONF); -- Path rootDir = new Path(dir + testName); -- FSHLog hLog = new FSHLog(fs, rootDir, testName, CONF); -+ Path rootDir = new Path(dir + method); -+ fs.mkdirs(new Path(rootDir, method)); -+ FSHLog hLog = new FSHLog(fs, rootDir, method, CONF); - hLog.init(); - HRegion region = initHRegion(tableName, null, null, CONF, false, Durability.SYNC_WAL, hLog, - COLUMN_FAMILY_BYTES); -@@ -1249,8 +1250,10 @@ public class TestHRegion { - }; - } - } -- FailAppendFlushMarkerWAL wal = new FailAppendFlushMarkerWAL(FileSystem.get(walConf), -- CommonFSUtils.getRootDir(walConf), method, walConf); -+ FileSystem fs = FileSystem.get(walConf); -+ Path rootDir = CommonFSUtils.getRootDir(walConf); -+ fs.mkdirs(new Path(rootDir, method)); -+ FailAppendFlushMarkerWAL wal = new FailAppendFlushMarkerWAL(fs, rootDir, method, walConf); - wal.init(); - this.region = initHRegion(tableName, HConstants.EMPTY_START_ROW, HConstants.EMPTY_END_ROW, CONF, - false, Durability.USE_DEFAULT, wal, family); -@@ -3351,8 +3354,9 @@ public class TestHRegion { - @Test - public void testDataInMemoryWithoutWAL() throws IOException { - FileSystem fs = FileSystem.get(CONF); -- Path rootDir = new Path(dir + "testDataInMemoryWithoutWAL"); -- FSHLog hLog = new FSHLog(fs, rootDir, "testDataInMemoryWithoutWAL", CONF); -+ Path rootDir = new Path(dir + method); -+ fs.mkdirs(new Path(rootDir, method)); -+ FSHLog hLog = new FSHLog(fs, rootDir, method, CONF); - hLog.init(); - // This chunk creation is done throughout the code base. Do we want to move it into core? - // It is missing from this test. W/o it we NPE. -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java -index 154b2a839b..f1d0aa4c6f 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestLogRoller.java -@@ -58,12 +58,13 @@ public class TestLogRoller { - private static FileSystem FS; - - @Before -- public void setup() throws Exception { -+ public void setUp() throws Exception { - CONF = TEST_UTIL.getConfiguration(); - CONF.setInt("hbase.regionserver.logroll.period", LOG_ROLL_PERIOD); - CONF.setInt(HConstants.THREAD_WAKE_FREQUENCY, 300); - ROOT_DIR = TEST_UTIL.getRandomDir(); - FS = FileSystem.get(CONF); -+ FS.mkdirs(new Path(ROOT_DIR, LOG_DIR)); - RegionServerServices services = Mockito.mock(RegionServerServices.class); - Mockito.when(services.getConfiguration()).thenReturn(CONF); - ROLLER = new LogRoller(services); -@@ -74,7 +75,7 @@ public class TestLogRoller { - public void tearDown() throws Exception { - ROLLER.close(); - FS.close(); -- TEST_UTIL.shutdownMiniCluster(); -+ TEST_UTIL.cleanupTestDir(); - } - - /** -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java -index 7925fe0073..731781bfc1 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java -@@ -216,6 +216,7 @@ public class TestWALLockup { - // OK. Now I have my mocked up Server & RegionServerServices and dodgy WAL, go ahead with test. - FileSystem fs = FileSystem.get(CONF); - Path rootDir = new Path(dir + getName()); -+ fs.mkdirs(new Path(rootDir, getName())); - DodgyFSLog dodgyWAL = new DodgyFSLog(fs, rootDir, getName(), CONF); - dodgyWAL.init(); - Path originalWAL = dodgyWAL.getCurrentFileName(); -@@ -394,6 +395,7 @@ public class TestWALLockup { - // OK. Now I have my mocked up Server & RegionServerServices and dodgy WAL, go ahead with test. - FileSystem fs = FileSystem.get(CONF); - Path rootDir = new Path(dir + getName()); -+ fs.mkdirs(new Path(rootDir, getName())); - final DodgyFSLog dodgyWAL = new DodgyFSLog(fs, rootDir, getName(), CONF); - dodgyWAL.init(); - // I need a log roller running. -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java -index 1f04e2718b..ea1d6e6de0 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java -@@ -120,6 +120,7 @@ public abstract class AbstractTestFSWAL { - final Path hbaseWALDir = TEST_UTIL.createWALRootDir(); - DIR = new Path(hbaseWALDir, currentTest.getMethodName()); - assertNotEquals(hbaseDir, hbaseWALDir); -+ FS.mkdirs(DIR); - } - - @BeforeClass -@@ -392,9 +393,8 @@ public abstract class AbstractTestFSWAL { - @Test(expected = IOException.class) - public void testFailedToCreateWALIfParentRenamed() - throws IOException, CommonFSUtils.StreamLacksCapabilityException { -- final String name = "testFailedToCreateWALIfParentRenamed"; -- AbstractFSWAL wal = newWAL(FS, CommonFSUtils.getWALRootDir(CONF), name, -- HConstants.HREGION_OLDLOGDIR_NAME, CONF, null, true, null, null); -+ AbstractFSWAL wal = newWAL(FS, CommonFSUtils.getWALRootDir(CONF), -+ currentTest.getMethodName(), HConstants.HREGION_OLDLOGDIR_NAME, CONF, null, true, null, null); - long filenum = EnvironmentEdgeManager.currentTime(); - Path path = wal.computeFilename(filenum); - wal.createWriterInstance(path); -@@ -535,6 +535,7 @@ public abstract class AbstractTestFSWAL { - - private AbstractFSWAL createHoldingWAL(String testName, AtomicBoolean startHoldingForAppend, - CountDownLatch holdAppend) throws IOException { -+ FS.mkdirs(new Path(CommonFSUtils.getRootDir(CONF), testName)); - AbstractFSWAL wal = newWAL(FS, CommonFSUtils.getRootDir(CONF), testName, - HConstants.HREGION_OLDLOGDIR_NAME, CONF, null, true, null, null); - wal.init(); -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java -index 2ef7ece92d..4db251b8a0 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java -@@ -1029,6 +1029,7 @@ public abstract class AbstractTestWALReplay { - } - - private MockWAL createMockWAL() throws IOException { -+ fs.mkdirs(new Path(hbaseRootDir, logName)); - MockWAL wal = new MockWAL(fs, hbaseRootDir, logName, conf); - wal.init(); - // Set down maximum recovery so we dfsclient doesn't linger retrying something -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWALDurability.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWALDurability.java -index 8402617c44..3e4a58ce84 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWALDurability.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWALDurability.java -@@ -57,7 +57,7 @@ public class TestAsyncFSWALDurability extends WALDurabilityTestBase { - HBaseClassTestRule.forClass(TestFSHLogDurability.class); - - @Override -- protected CustomFSHLog getWAL(FileSystem fs, Path root, String logDir, Configuration conf) -+ protected CustomFSHLog getWAL0(FileSystem fs, Path root, String logDir, Configuration conf) - throws IOException { - CustomFSHLog wal = new CustomFSHLog(fs, root, logDir, conf); - wal.init(); -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java -index 8adf15876a..ef2932d4c4 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java -@@ -47,7 +47,9 @@ public class TestWALReplay extends AbstractTestWALReplay { - - @Override - protected WAL createWAL(Configuration c, Path hbaseRootDir, String logName) throws IOException { -- FSHLog wal = new FSHLog(FileSystem.get(c), hbaseRootDir, logName, c); -+ FileSystem fs = hbaseRootDir.getFileSystem(c); -+ fs.mkdirs(new Path(hbaseRootDir, logName)); -+ FSHLog wal = new FSHLog(fs, hbaseRootDir, logName, c); - wal.init(); - // Set down maximum recovery so we dfsclient doesn't linger retrying something - // long gone. -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/WALDurabilityTestBase.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/WALDurabilityTestBase.java -index 81ac0bfbfd..e731fabbea 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/WALDurabilityTestBase.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/WALDurabilityTestBase.java -@@ -69,7 +69,13 @@ public abstract class WALDurabilityTestBase { - TEST_UTIL.cleanupTestDir(); - } - -- protected abstract T getWAL(FileSystem fs, Path root, String logDir, Configuration conf) -+ protected final T getWAL(FileSystem fs, Path root, String logDir, Configuration conf) -+ throws IOException { -+ fs.mkdirs(new Path(root, logDir)); -+ return getWAL0(fs, root, logDir, conf); -+ } -+ -+ protected abstract T getWAL0(FileSystem fs, Path root, String logDir, Configuration conf) - throws IOException; - - protected abstract void resetSyncFlag(T wal); -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java -index 1afdc6e0fa..11c1667466 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALFactory.java -@@ -621,7 +621,7 @@ public class TestWALFactory { - @Test - public void testWALProviders() throws IOException { - Configuration conf = new Configuration(); -- WALFactory walFactory = new WALFactory(conf, this.currentServername.toString()); -+ WALFactory walFactory = new WALFactory(conf, this.currentServername.toString(), null); - assertEquals(walFactory.getWALProvider().getClass(), walFactory.getMetaProvider().getClass()); - } - -@@ -629,7 +629,7 @@ public class TestWALFactory { - public void testOnlySetWALProvider() throws IOException { - Configuration conf = new Configuration(); - conf.set(WAL_PROVIDER, WALFactory.Providers.multiwal.name()); -- WALFactory walFactory = new WALFactory(conf, this.currentServername.toString()); -+ WALFactory walFactory = new WALFactory(conf, this.currentServername.toString(), null); - - assertEquals(WALFactory.Providers.multiwal.clazz, walFactory.getWALProvider().getClass()); - assertEquals(WALFactory.Providers.multiwal.clazz, walFactory.getMetaProvider().getClass()); -@@ -639,7 +639,7 @@ public class TestWALFactory { - public void testOnlySetMetaWALProvider() throws IOException { - Configuration conf = new Configuration(); - conf.set(META_WAL_PROVIDER, WALFactory.Providers.asyncfs.name()); -- WALFactory walFactory = new WALFactory(conf, this.currentServername.toString()); -+ WALFactory walFactory = new WALFactory(conf, this.currentServername.toString(), null); - - assertEquals(WALFactory.Providers.defaultProvider.clazz, - walFactory.getWALProvider().getClass()); -@@ -650,14 +650,15 @@ public class TestWALFactory { - public void testDefaultProvider() throws IOException { - final Configuration conf = new Configuration(); - // AsyncFSWal is the default, we should be able to request any WAL. -- final WALFactory normalWalFactory = new WALFactory(conf, this.currentServername.toString()); -+ final WALFactory normalWalFactory = -+ new WALFactory(conf, this.currentServername.toString(), null); - Class fshLogProvider = - normalWalFactory.getProviderClass(WALFactory.WAL_PROVIDER, Providers.filesystem.name()); - assertEquals(Providers.filesystem.clazz, fshLogProvider); - - // Imagine a world where MultiWAL is the default - final WALFactory customizedWalFactory = -- new WALFactory(conf, this.currentServername.toString()) { -+ new WALFactory(conf, this.currentServername.toString(), null) { - @Override - Providers getDefaultProvider() { - return Providers.multiwal; -@@ -673,7 +674,7 @@ public class TestWALFactory { - public void testCustomProvider() throws IOException { - final Configuration config = new Configuration(); - config.set(WALFactory.WAL_PROVIDER, IOTestProvider.class.getName()); -- final WALFactory walFactory = new WALFactory(config, this.currentServername.toString()); -+ final WALFactory walFactory = new WALFactory(config, this.currentServername.toString(), null); - Class walProvider = - walFactory.getProviderClass(WALFactory.WAL_PROVIDER, Providers.filesystem.name()); - assertEquals(IOTestProvider.class, walProvider); -@@ -685,7 +686,7 @@ public class TestWALFactory { - public void testCustomMetaProvider() throws IOException { - final Configuration config = new Configuration(); - config.set(WALFactory.META_WAL_PROVIDER, IOTestProvider.class.getName()); -- final WALFactory walFactory = new WALFactory(config, this.currentServername.toString()); -+ final WALFactory walFactory = new WALFactory(config, this.currentServername.toString(), null); - Class walProvider = - walFactory.getProviderClass(WALFactory.WAL_PROVIDER, Providers.filesystem.name()); - assertEquals(Providers.filesystem.clazz, walProvider); -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitToHFile.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitToHFile.java -index 9bd4e32279..cac63289ed 100644 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitToHFile.java -+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/wal/TestWALSplitToHFile.java -@@ -171,12 +171,15 @@ public class TestWALSplitToHFile { - } - - private WAL createWAL(Configuration c, Path hbaseRootDir, String logName) throws IOException { -- FSHLog wal = new FSHLog(FileSystem.get(c), hbaseRootDir, logName, c); -+ FileSystem fs = hbaseRootDir.getFileSystem(c); -+ fs.mkdirs(new Path(hbaseRootDir, logName)); -+ FSHLog wal = new FSHLog(fs, hbaseRootDir, logName, c); - wal.init(); - return wal; - } - - private WAL createWAL(FileSystem fs, Path hbaseRootDir, String logName) throws IOException { -+ fs.mkdirs(new Path(hbaseRootDir, logName)); - FSHLog wal = new FSHLog(fs, hbaseRootDir, logName, this.conf); - wal.init(); - return wal; -diff --git a/pom.xml b/pom.xml -index f6a47dd880..ef6cfbc3a6 100644 ---- a/pom.xml -+++ b/pom.xml -@@ -597,6 +597,7 @@ - 9.0.106 - 9.3.15.0 - 4.13.2 -+ 4.3.0 - 1.3 - 1.49.0 - 1.29.0-alpha -@@ -1388,6 +1389,12 @@ - junit - ${junit.version} - -+ -+ org.awaitility -+ awaitility -+ ${awaitility.version} -+ test -+ - - org.hamcrest - hamcrest-core diff --git a/hbase/hbase/stackable/patches/2.6.3/0008-Remove-test-class-that-requires-jupiter-libs.patch b/hbase/hbase/stackable/patches/2.6.3/0008-Remove-test-class-that-requires-jupiter-libs.patch deleted file mode 100644 index 1982b1972..000000000 --- a/hbase/hbase/stackable/patches/2.6.3/0008-Remove-test-class-that-requires-jupiter-libs.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 6d1c6b265a91a5e8496dccc3bceec656f15629be Mon Sep 17 00:00:00 2001 -From: Andrew Kenworthy -Date: Mon, 9 Feb 2026 15:47:22 +0100 -Subject: remove test class that requires jupiter libs - ---- - .../hadoop/hbase/master/TestWALFencing.java | 81 ------------------- - 1 file changed, 81 deletions(-) - delete mode 100644 hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java - -diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java -deleted file mode 100644 -index 9341dcd5d9..0000000000 ---- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestWALFencing.java -+++ /dev/null -@@ -1,81 +0,0 @@ --/* -- * Licensed to the Apache Software Foundation (ASF) under one -- * or more contributor license agreements. See the NOTICE file -- * distributed with this work for additional information -- * regarding copyright ownership. The ASF licenses this file -- * to you under the Apache License, Version 2.0 (the -- * "License"); you may not use this file except in compliance -- * with the License. You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ --package org.apache.hadoop.hbase.master; -- --import static org.awaitility.Awaitility.await; -- --import java.io.IOException; --import java.time.Duration; --import java.util.Collections; --import org.apache.hadoop.fs.FileStatus; --import org.apache.hadoop.fs.Path; --import org.apache.hadoop.hbase.HBaseTestingUtility; --import org.apache.hadoop.hbase.TableName; --import org.apache.hadoop.hbase.client.RegionInfo; --import org.apache.hadoop.hbase.regionserver.HRegionServer; --import org.apache.hadoop.hbase.regionserver.Region; --import org.apache.hadoop.hbase.testclassification.MasterTests; --import org.apache.hadoop.hbase.testclassification.MediumTests; --import org.apache.hadoop.hbase.util.RecoverLeaseFSUtils; --import org.junit.jupiter.api.AfterAll; --import org.junit.jupiter.api.BeforeAll; --import org.junit.jupiter.api.Tag; --import org.junit.jupiter.api.Test; -- --/** -- * Testcase for HBASE-29797, where the lazy initialized WALProvider may recreate the WAL directory -- * and cause our fencing way loses efficacy. -- */ --@Tag(MasterTests.TAG) --@Tag(MediumTests.TAG) --public class TestWALFencing { -- -- private static final HBaseTestingUtility UTIL = new HBaseTestingUtility(); -- -- @BeforeAll -- public static void setUp() throws Exception { -- UTIL.startMiniCluster(3); -- UTIL.getAdmin().balancerSwitch(false, true); -- } -- -- @AfterAll -- public static void tearDown() throws IOException { -- UTIL.shutdownMiniCluster(); -- } -- -- @Test -- public void testMoveMeta() throws Exception { -- HRegionServer metaRs = UTIL.getRSForFirstRegionInTable(TableName.META_TABLE_NAME); -- HRegionServer otherRs = UTIL.getOtherRegionServer(metaRs); -- // do fencing here, i.e, kill otherRs -- Path splittingDir = UTIL.getMiniHBaseCluster().getMaster().getMasterWalManager() -- .getLogDirs(Collections.singleton(otherRs.getServerName())).get(0); -- for (FileStatus walFile : otherRs.getWALFileSystem().listStatus(splittingDir)) { -- RecoverLeaseFSUtils.recoverFileLease(otherRs.getWALFileSystem(), walFile.getPath(), -- otherRs.getConfiguration()); -- } -- // move meta region to otherRs, which should fail and crash otherRs, and then master will try to -- // assign meta region to another rs -- RegionInfo metaRegionInfo = metaRs.getRegions().stream().map(Region::getRegionInfo) -- .filter(RegionInfo::isMetaRegion).findAny().get(); -- UTIL.getAdmin().move(metaRegionInfo.getEncodedNameAsBytes(), otherRs.getServerName()); -- // make sure that meta region is not on otherRs -- await().during(Duration.ofSeconds(5)).atMost(Duration.ofSeconds(6)) -- .until(() -> otherRs.getRegions(TableName.META_TABLE_NAME).isEmpty()); -- } --} diff --git a/hbase/hbase/stackable/patches/2.6.4/0001-HBASE-28242-Updates-async-profiler-support.patch b/hbase/hbase/stackable/patches/2.6.4/0001-HBASE-28242-Updates-async-profiler-support.patch index 79f966d44..57e34dc39 100644 --- a/hbase/hbase/stackable/patches/2.6.4/0001-HBASE-28242-Updates-async-profiler-support.patch +++ b/hbase/hbase/stackable/patches/2.6.4/0001-HBASE-28242-Updates-async-profiler-support.patch @@ -4,8 +4,8 @@ Date: Tue, 6 Feb 2024 16:10:54 +0100 Subject: HBASE-28242: Updates async-profiler support --- - .../hadoop/hbase/http/ProfileServlet.java | 207 +++++++++++------- - 1 file changed, 122 insertions(+), 85 deletions(-) + .../hadoop/hbase/http/ProfileServlet.java | 205 +++++++++++------- + 1 file changed, 121 insertions(+), 84 deletions(-) diff --git a/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java b/hbase-http/src/main/java/org/apache/hadoop/hbase/http/ProfileServlet.java index 122d04ff17..5c2df0076d 100644 @@ -106,22 +106,21 @@ index 122d04ff17..5c2df0076d 100644 ALLOC("alloc"), LOCK("lock"), - PAGE_FAULTS("page-faults"), -- CONTEXT_SWITCHES("context-switches"), -- CYCLES("cycles"), -- INSTRUCTIONS("instructions"), -- CACHE_REFERENCES("cache-references"), -- CACHE_MISSES("cache-misses"), -- BRANCHES("branches"), + ITIMER("itimer"), + BRANCH_INSTRUCTIONS("branch-instructions"), - BRANCH_MISSES("branch-misses"), - BUS_CYCLES("bus-cycles"), ++ BRANCH_MISSES("branch-misses"), ++ BUS_CYCLES("bus-cycles"), + CACHE_MISSES("cache-misses"), + CACHE_REFERENCES("cache-references"), -+ CONTEXT_SWITCHES("context-switches"), -+ CYCLES("cycles"), + CONTEXT_SWITCHES("context-switches"), + CYCLES("cycles"), + DTLB_LOAD_MISSES("dTLB-load-misses"), -+ INSTRUCTIONS("instructions"), + INSTRUCTIONS("instructions"), +- CACHE_REFERENCES("cache-references"), +- CACHE_MISSES("cache-misses"), +- BRANCHES("branches"), +- BRANCH_MISSES("branch-misses"), +- BUS_CYCLES("bus-cycles"), L1_DCACHE_LOAD_MISSES("L1-dcache-load-misses"), LLC_LOAD_MISSES("LLC-load-misses"), - DTLB_LOAD_MISSES("dTLB-load-misses"), diff --git a/hbase/hbase/stackable/patches/2.6.4/0008-Add-jcip-annotations-dependency-for-Hadoop-3.4.3-com.patch b/hbase/hbase/stackable/patches/2.6.4/0008-Add-jcip-annotations-dependency-for-Hadoop-3.4.3-com.patch new file mode 100644 index 000000000..95548e97e --- /dev/null +++ b/hbase/hbase/stackable/patches/2.6.4/0008-Add-jcip-annotations-dependency-for-Hadoop-3.4.3-com.patch @@ -0,0 +1,73 @@ +From aecdd61fa521da9a3683b9e03c76f7019996b86a Mon Sep 17 00:00:00 2001 +From: Maxi Wittich +Date: Fri, 19 Jun 2026 12:22:37 +0200 +Subject: Add jcip-annotations dependency for Hadoop 3.4.3 compatibility + +When upgrading Hadoop from 3.4.2 to 3.4.3, jcip-annotations is no longer + pulled in transitively. BuiltInProviderSelector.java imports + net.jcip.annotations.NotThreadSafe, so we must declare the dependency + explicitly. Matches the fix HBase 2.6.6 upstream. +--- + hbase-client/pom.xml | 6 ++++++ + hbase-server/pom.xml | 6 ++++++ + pom.xml | 6 ++++++ + 3 files changed, 18 insertions(+) + +diff --git a/hbase-client/pom.xml b/hbase-client/pom.xml +index 54a3b2baed..165526b7de 100644 +--- a/hbase-client/pom.xml ++++ b/hbase-client/pom.xml +@@ -89,6 +89,12 @@ + compile + true + ++ ++ com.github.stephenc.jcip ++ jcip-annotations ++ compile ++ true ++ + + commons-codec + commons-codec +diff --git a/hbase-server/pom.xml b/hbase-server/pom.xml +index 64e3c3a477..2bf30fdb5d 100644 +--- a/hbase-server/pom.xml ++++ b/hbase-server/pom.xml +@@ -197,6 +197,12 @@ + compile + true + ++ ++ com.github.stephenc.jcip ++ jcip-annotations ++ compile ++ true ++ + + com.github.ben-manes.caffeine + caffeine +diff --git a/pom.xml b/pom.xml +index 568bc41540..ce780c04c9 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -658,6 +658,7 @@ + 12.1.0 + 1.7.1 + 1.3.9-1 ++ 1.0-1 + 4.7.3 + 4.7.3.6 + 3.5.3 +@@ -1142,6 +1143,11 @@ + findbugs-annotations + ${findbugs-annotations.version} + ++ ++ com.github.stephenc.jcip ++ jcip-annotations ++ ${jcip-annotations.version} ++ + -- 4.1.121.Final -+ 4.1.122.Final - - 0.13.0 - 0.13.0 - 1.11.4 + 1.11.5 - 2.8.1 + 2.8.8 1.15 2.18.0 - 3.17.0 + 3.18.0 3.6.1 1.5.0 3.4.4 @@ -39,27 +30,17 @@ index d6ee146971..98ba66f00d 100644 3.2.6 - 2.2.1 @@ -67,14 +48,13 @@ index d6ee146971..98ba66f00d 100644 + 2.2.6 + 1.0.63 2.12.3 -- 1.78 + 1.84 - 1.5.1 -+ 1.78.1 + 1.5.3 1.0.1 1.1.0 5.7.1 -@@ -646,29 +646,29 @@ +@@ -645,19 +645,19 @@ 1.0.0 1.8 3.3.0 @@ -86,25 +66,22 @@ index d6ee146971..98ba66f00d 100644 + 3.4.1 3.8.1 - 1.1.0 + 3.9.0 + 1.1.2 - 3.1.2 12.1.0 - 1.5.0.Final + 1.7.1 1.3.9-1 + 1.0-1 4.7.3 - 4.7.2.1 -- 3.1.0 + 4.7.3.6 -+ 3.1.2 + 3.5.3 2.12 1.0.1 - 2.44.4 -- 3.12.0 -+ 3.12.1 - - 0.27 +@@ -667,8 +667,8 @@ + 2.0.3 1.11.0 - 1.8.0 + 1.10.4 - 1.1.10.4 - 1.5.7-2 + 1.1.10.7 diff --git a/hbase/hbase/stackable/patches/2.6.3/0003-Include-jackson-dataformat-xml.patch b/hbase/hbase/stackable/patches/2.6.6/0003-Include-jackson-dataformat-xml.patch similarity index 65% rename from hbase/hbase/stackable/patches/2.6.3/0003-Include-jackson-dataformat-xml.patch rename to hbase/hbase/stackable/patches/2.6.6/0003-Include-jackson-dataformat-xml.patch index 806d0fb48..d9589ad61 100644 --- a/hbase/hbase/stackable/patches/2.6.3/0003-Include-jackson-dataformat-xml.patch +++ b/hbase/hbase/stackable/patches/2.6.6/0003-Include-jackson-dataformat-xml.patch @@ -1,4 +1,4 @@ -From 9c9617bcdf23d94d1ecc3ed38b2211409c6dac00 Mon Sep 17 00:00:00 2001 +From 5c2b9cf1fecb60229225e597e4df3acab6409f88 Mon Sep 17 00:00:00 2001 From: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> Date: Fri, 12 Jul 2024 17:30:12 -0400 Subject: Include jackson-dataformat-xml. @@ -7,12 +7,12 @@ This is needed for XmlLayout to work so our structured logging works. It is an optional dependency of log4j2 so we need to make sure to include it. --- - hbase-assembly/pom.xml | 5 +++++ - pom.xml | 12 ++++++++++++ - 2 files changed, 17 insertions(+) + hbase-assembly/pom.xml | 5 +++++ + pom.xml | 7 +++++++ + 2 files changed, 12 insertions(+) diff --git a/hbase-assembly/pom.xml b/hbase-assembly/pom.xml -index 459d3d2cb9..a5ae653d02 100644 +index 8ff8fcdf2a..1e425d3c05 100644 --- a/hbase-assembly/pom.xml +++ b/hbase-assembly/pom.xml @@ -221,6 +221,11 @@ @@ -28,22 +28,10 @@ index 459d3d2cb9..a5ae653d02 100644 org.apache.logging.log4j log4j-slf4j-impl diff --git a/pom.xml b/pom.xml -index 98ba66f00d..f41e50c3bb 100644 +index ed13ea269b..495d62bd4e 100644 --- a/pom.xml +++ b/pom.xml -@@ -1173,6 +1173,11 @@ - log4j-core - ${log4j2.version} - -+ -+ org.apache.logging.log4j -+ log4j-core -+ ${log4j2.version} -+ - - org.apache.logging.log4j - log4j-slf4j-impl -@@ -1183,6 +1188,13 @@ +@@ -1196,6 +1196,13 @@ log4j-1.2-api ${log4j2.version} @@ -51,7 +39,7 @@ index 98ba66f00d..f41e50c3bb 100644 + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml -+ ${jackson.databind.version} ++ ${jackson.version} + + diff --git a/hbase/hbase/stackable/patches/2.6.3/0004-Bump-cyclonedx-maven-plugin-to-version-2.9.1-and-twe.patch b/hbase/hbase/stackable/patches/2.6.6/0004-Bump-cyclonedx-maven-plugin-to-version-2.9.1-and-twe.patch similarity index 86% rename from hbase/hbase/stackable/patches/2.6.3/0004-Bump-cyclonedx-maven-plugin-to-version-2.9.1-and-twe.patch rename to hbase/hbase/stackable/patches/2.6.6/0004-Bump-cyclonedx-maven-plugin-to-version-2.9.1-and-twe.patch index 0823bfbf6..cbfe33b2a 100644 --- a/hbase/hbase/stackable/patches/2.6.3/0004-Bump-cyclonedx-maven-plugin-to-version-2.9.1-and-twe.patch +++ b/hbase/hbase/stackable/patches/2.6.6/0004-Bump-cyclonedx-maven-plugin-to-version-2.9.1-and-twe.patch @@ -1,4 +1,4 @@ -From 646a90225985605e3dab3bbca3b04182a004bb2b Mon Sep 17 00:00:00 2001 +From aed9e367d3eab8504a6c667444ae0f2fb27988f7 Mon Sep 17 00:00:00 2001 From: Lukas Voetmand Date: Fri, 6 Sep 2024 17:53:52 +0200 Subject: Bump cyclonedx-maven-plugin to version 2.9.1 and tweak its @@ -9,10 +9,10 @@ Subject: Bump cyclonedx-maven-plugin to version 2.9.1 and tweak its 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml -index f41e50c3bb..f6a47dd880 100644 +index 495d62bd4e..5c939a77e0 100644 --- a/pom.xml +++ b/pom.xml -@@ -3315,7 +3315,11 @@ +@@ -3366,7 +3366,11 @@ org.cyclonedx cyclonedx-maven-plugin diff --git a/hbase/hbase/stackable/patches/2.6.3/0005-Allow-overriding-ipc-bind-port-and-use-alternative-p.patch b/hbase/hbase/stackable/patches/2.6.6/0005-Allow-overriding-ipc-bind-port-and-use-alternative-p.patch similarity index 88% rename from hbase/hbase/stackable/patches/2.6.3/0005-Allow-overriding-ipc-bind-port-and-use-alternative-p.patch rename to hbase/hbase/stackable/patches/2.6.6/0005-Allow-overriding-ipc-bind-port-and-use-alternative-p.patch index b67fd3558..e0bb3413d 100644 --- a/hbase/hbase/stackable/patches/2.6.3/0005-Allow-overriding-ipc-bind-port-and-use-alternative-p.patch +++ b/hbase/hbase/stackable/patches/2.6.6/0005-Allow-overriding-ipc-bind-port-and-use-alternative-p.patch @@ -1,17 +1,17 @@ -From 8deb539a05bdf88189b6b269ec961ff6abe6a174 Mon Sep 17 00:00:00 2001 +From f5e6f7cd42dcb15473afb2bb84c0b58614ff5efd Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Mon, 16 Jun 2025 14:44:32 +0200 Subject: Allow overriding ipc bind port and use alternative port from listener --- .../org/apache/hadoop/hbase/HConstants.java | 29 ++++++++++-- - .../apache/hadoop/hbase/master/HMaster.java | 20 +++++++-- - .../hbase/regionserver/HRegionServer.java | 45 +++++++++++++------ + .../apache/hadoop/hbase/master/HMaster.java | 20 ++++++-- + .../hbase/regionserver/HRegionServer.java | 46 +++++++++++++------ .../hbase/regionserver/RSRpcServices.java | 8 +++- - 4 files changed, 80 insertions(+), 22 deletions(-) + 4 files changed, 81 insertions(+), 22 deletions(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java -index 14d7073d5d..f0e286d666 100644 +index fbe563d60d..8b10ad1e97 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java @@ -195,18 +195,27 @@ public final class HConstants { @@ -74,7 +74,7 @@ index 14d7073d5d..f0e286d666 100644 /** A flag that enables automatic selection of regionserver info port */ public static final String REGIONSERVER_INFO_PORT_AUTO = REGIONSERVER_INFO_PORT + ".auto"; -@@ -1402,6 +1420,9 @@ public final class HConstants { +@@ -1405,6 +1423,9 @@ public final class HConstants { /** Configuration key for setting RPC codec class name */ public static final String RPC_CODEC_CONF_KEY = "hbase.client.rpc.codec"; @@ -85,7 +85,7 @@ index 14d7073d5d..f0e286d666 100644 public static final String REPLICATION_CODEC_CONF_KEY = "hbase.replication.rpc.codec"; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java -index e099760a7a..7eab15970c 100644 +index 0e2e426f8d..22a1049ef7 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -17,6 +17,8 @@ @@ -97,8 +97,8 @@ index e099760a7a..7eab15970c 100644 import static org.apache.hadoop.hbase.HConstants.DEFAULT_HBASE_SPLIT_COORDINATED_BY_ZK; import static org.apache.hadoop.hbase.HConstants.HBASE_MASTER_LOGCLEANER_PLUGINS; import static org.apache.hadoop.hbase.HConstants.HBASE_SPLIT_WAL_COORDINATED_BY_ZK; -@@ -571,6 +573,18 @@ public class HMaster extends HRegionServer implements MasterServices { - return conf.get(MASTER_HOSTNAME_KEY); +@@ -577,6 +579,18 @@ public class HMaster extends HRegionServer implements MasterServices { + return DNS.ServerType.MASTER; } + @Override @@ -116,7 +116,7 @@ index e099760a7a..7eab15970c 100644 private void registerConfigurationObservers() { configurationManager.registerObserver(this.rpcServices); configurationManager.registerObserver(this); -@@ -598,8 +612,8 @@ public class HMaster extends HRegionServer implements MasterServices { +@@ -604,8 +618,8 @@ public class HMaster extends HRegionServer implements MasterServices { registerConfigurationObservers(); Threads.setDaemonThreadRunning(new Thread(() -> TraceUtil.trace(() -> { try { @@ -127,7 +127,7 @@ index e099760a7a..7eab15970c 100644 } catch (Throwable t) { // Make sure we log the exception. String error = "Failed to become Active Master"; -@@ -3017,7 +3031,7 @@ public class HMaster extends HRegionServer implements MasterServices { +@@ -3038,7 +3052,7 @@ public class HMaster extends HRegionServer implements MasterServices { } case MASTER_INFO_PORT: { if (infoServer != null) { @@ -137,7 +137,7 @@ index e099760a7a..7eab15970c 100644 break; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -index 810e10f1c5..454c5580c4 100644 +index 4bd6e9f67f..9801f7c7fc 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -24,6 +24,9 @@ import static org.apache.hadoop.hbase.HConstants.DEFAULT_HBASE_SPLIT_WAL_MAX_SPL @@ -150,7 +150,7 @@ index 810e10f1c5..454c5580c4 100644 import static org.apache.hadoop.hbase.master.waleventtracker.WALEventTrackerTableCreator.WAL_EVENT_TRACKER_ENABLED_DEFAULT; import static org.apache.hadoop.hbase.master.waleventtracker.WALEventTrackerTableCreator.WAL_EVENT_TRACKER_ENABLED_KEY; import static org.apache.hadoop.hbase.namequeues.NamedQueueServiceChore.NAMED_QUEUE_CHORE_DURATION_DEFAULT; -@@ -505,6 +508,10 @@ public class HRegionServer extends Thread +@@ -503,6 +506,10 @@ public class HRegionServer extends Thread */ protected String useThisHostnameInstead; @@ -161,25 +161,25 @@ index 810e10f1c5..454c5580c4 100644 /** * @deprecated since 2.4.0 and will be removed in 4.0.0. Use * {@link HRegionServer#UNSAFE_RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY} instead. -@@ -669,6 +676,8 @@ public class HRegionServer extends Thread - this.namedQueueRecorder = NamedQueueRecorder.getInstance(this.conf); +@@ -671,13 +678,16 @@ public class HRegionServer extends Thread + // has not logged in yet, UGI bootstraps from the ticket cache and spawns a TGT renewer + // for whichever principal happens to be there. + String hostName = resolveHostName(conf, useThisHostnameInstead); ++ + // login the zookeeper client principal (if using security) + ZKAuthentication.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE, + HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName); + // login the server principal (if using secure Hadoop) + login(userProvider, hostName); rpcServices = createRpcServices(); - useThisHostnameInstead = getUseThisHostnameInstead(conf); +- serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode); + useThisPortInstead = getUseThisPortInstead(conf); + useThisInfoPortInstead = getUseThisInfoPortInstead(conf); - - // if use-ip is enabled, we will use ip to expose Master/RS service for client, - // see HBASE-27304 for details. -@@ -678,7 +687,7 @@ public class HRegionServer extends Thread - useIp ? rpcServices.isa.getAddress().getHostAddress() : rpcServices.isa.getHostName(); - String hostName = - StringUtils.isBlank(useThisHostnameInstead) ? isaHostName : useThisHostnameInstead; -- serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode); + serverName = ServerName.valueOf(hostName, useThisPortInstead, this.startcode); rpcControllerFactory = RpcControllerFactory.instantiate(this.conf); rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf, -@@ -715,7 +724,7 @@ public class HRegionServer extends Thread +@@ -711,7 +721,7 @@ public class HRegionServer extends Thread // Some unit tests don't need a cluster, so no zookeeper at all // Open connection to zookeeper and set primary watcher @@ -188,7 +188,7 @@ index 810e10f1c5..454c5580c4 100644 canCreateBaseZNode()); // If no master in cluster, skip trying to track one or look for a cluster status. if (!this.masterless) { -@@ -776,6 +785,16 @@ public class HRegionServer extends Thread +@@ -772,6 +782,16 @@ public class HRegionServer extends Thread } } @@ -205,7 +205,7 @@ index 810e10f1c5..454c5580c4 100644 private void setupSignalHandlers() { if (!SystemUtils.IS_OS_WINDOWS) { HBasePlatformDependent.handle("HUP", (number, name) -> { -@@ -958,7 +977,7 @@ public class HRegionServer extends Thread +@@ -971,7 +991,7 @@ public class HRegionServer extends Thread } // Setup RPC client for master communication this.rpcClient = RpcClientFactory.createClient(conf, clusterId, @@ -214,7 +214,7 @@ index 810e10f1c5..454c5580c4 100644 clusterConnection.getConnectionMetrics(), Collections.emptyMap()); span.setStatus(StatusCode.OK); } catch (Throwable t) { -@@ -972,6 +991,11 @@ public class HRegionServer extends Thread +@@ -985,6 +1005,11 @@ public class HRegionServer extends Thread } } @@ -226,8 +226,8 @@ index 810e10f1c5..454c5580c4 100644 /** * Bring up connection to zk ensemble and then wait until a master for this cluster and then after * that, wait until cluster 'up' flag has been set. This is the order in which master does things. -@@ -1528,11 +1552,7 @@ public class HRegionServer extends Thread - +@@ -1546,11 +1571,7 @@ public class HRegionServer extends Thread + } serverLoad.setReportStartTime(reportStartTime); serverLoad.setReportEndTime(reportEndTime); - if (this.infoServer != null) { @@ -239,7 +239,7 @@ index 810e10f1c5..454c5580c4 100644 MetricsUserAggregateSource userSource = metricsRegionServer.getMetricsUserAggregate().getSource(); if (userSource != null) { -@@ -1688,7 +1708,7 @@ public class HRegionServer extends Thread +@@ -1706,7 +1727,7 @@ public class HRegionServer extends Thread if (key.equals(HConstants.KEY_FOR_HOSTNAME_SEEN_BY_MASTER)) { String hostnameFromMasterPOV = e.getValue(); this.serverName = ServerName.valueOf(hostnameFromMasterPOV, @@ -248,7 +248,7 @@ index 810e10f1c5..454c5580c4 100644 String expectedHostName = rpcServices.getSocketAddress().getHostName(); // if Master use-ip is enabled, RegionServer use-ip will be enabled by default even if it // is set to disable. so we will use the ip of the RegionServer to compare with the -@@ -1814,7 +1834,7 @@ public class HRegionServer extends Thread +@@ -1832,7 +1853,7 @@ public class HRegionServer extends Thread private void createMyEphemeralNode() throws KeeperException { RegionServerInfo.Builder rsInfo = RegionServerInfo.newBuilder(); @@ -257,7 +257,7 @@ index 810e10f1c5..454c5580c4 100644 rsInfo.setVersionInfo(ProtobufUtil.getVersionInfo()); byte[] data = ProtobufUtil.prependPBMagic(rsInfo.build().toByteArray()); ZKUtil.createEphemeralNodeAndWatch(this.zooKeeper, getMyEphemeralNodePath(), data); -@@ -2487,7 +2507,7 @@ public class HRegionServer extends Thread +@@ -2507,7 +2528,7 @@ public class HRegionServer extends Thread LOG.info("Retry starting http info server with port: " + port); } } @@ -266,7 +266,7 @@ index 810e10f1c5..454c5580c4 100644 conf.setInt(HConstants.REGIONSERVER_INFO_PORT, port); int masterInfoPort = conf.getInt(HConstants.MASTER_INFO_PORT, HConstants.DEFAULT_MASTER_INFOPORT); -@@ -3081,12 +3101,11 @@ public class HRegionServer extends Thread +@@ -3101,12 +3122,11 @@ public class HRegionServer extends Thread LOG.info("reportForDuty to master=" + masterServerName + " with isa=" + rpcServices.isa + ", startcode=" + this.startcode); long now = EnvironmentEdgeManager.currentTime(); @@ -281,10 +281,10 @@ index 810e10f1c5..454c5580c4 100644 request.setServerCurrentTime(now); result = rss.regionServerStartup(null, request.build()); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java -index 00ba123342..bcb68822cc 100644 +index e246da4bd8..d8408bb3d0 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java -@@ -282,6 +282,10 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.BulkLoadDescr +@@ -283,6 +283,10 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.BulkLoadDescr import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor; import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor; import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor; @@ -295,7 +295,7 @@ index 00ba123342..bcb68822cc 100644 /** * Implements the regionserver RPC services. -@@ -1272,14 +1276,14 @@ public class RSRpcServices implements HBaseRPCErrorHandler, AdminService.Blockin +@@ -1273,14 +1277,14 @@ public class RSRpcServices implements HBaseRPCErrorHandler, AdminService.Blockin int port = conf.getInt(HConstants.MASTER_PORT, HConstants.DEFAULT_MASTER_PORT); // Creation of a HSA will force a resolve. initialIsa = new InetSocketAddress(hostname, port); diff --git a/hbase/hbase/stackable/patches/2.6.3/0006-Update-property-usage-for-bound-ports.patch b/hbase/hbase/stackable/patches/2.6.6/0006-Update-property-usage-for-bound-ports.patch similarity index 94% rename from hbase/hbase/stackable/patches/2.6.3/0006-Update-property-usage-for-bound-ports.patch rename to hbase/hbase/stackable/patches/2.6.6/0006-Update-property-usage-for-bound-ports.patch index 4947d5e72..89876cbc2 100644 --- a/hbase/hbase/stackable/patches/2.6.3/0006-Update-property-usage-for-bound-ports.patch +++ b/hbase/hbase/stackable/patches/2.6.6/0006-Update-property-usage-for-bound-ports.patch @@ -1,4 +1,4 @@ -From 5c2d5d0cf2fceec60fff75736776f9e0ae0ff178 Mon Sep 17 00:00:00 2001 +From 1125b70c8a607e80e90f81519ca29865b78938f7 Mon Sep 17 00:00:00 2001 From: Andrew Kenworthy Date: Thu, 26 Jun 2025 16:58:47 +0200 Subject: Update property usage for bound ports @@ -11,7 +11,7 @@ Subject: Update property usage for bound ports 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java -index f0e286d666..cd329b08e6 100644 +index 8b10ad1e97..7dabad8f9c 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java @@ -213,7 +213,7 @@ public final class HConstants { @@ -64,7 +64,7 @@ index 816ef997cb..2114725986 100644 } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java -index 7eab15970c..8f9a95c506 100644 +index 22a1049ef7..9eb9acb87a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -17,7 +17,7 @@ @@ -76,7 +76,7 @@ index 7eab15970c..8f9a95c506 100644 import static org.apache.hadoop.hbase.HConstants.MASTER_PORT; import static org.apache.hadoop.hbase.HConstants.DEFAULT_HBASE_SPLIT_COORDINATED_BY_ZK; import static org.apache.hadoop.hbase.HConstants.HBASE_MASTER_LOGCLEANER_PLUGINS; -@@ -581,7 +581,7 @@ public class HMaster extends HRegionServer implements MasterServices { +@@ -587,7 +587,7 @@ public class HMaster extends HRegionServer implements MasterServices { @Override protected int getUseThisInfoPortInstead(Configuration conf) { @@ -85,7 +85,7 @@ index 7eab15970c..8f9a95c506 100644 return port != 0 ? port : this.infoServer != null ? this.infoServer.getPort() : -1; } -@@ -3169,7 +3169,7 @@ public class HMaster extends HRegionServer implements MasterServices { +@@ -3190,7 +3190,7 @@ public class HMaster extends HRegionServer implements MasterServices { public int getRegionServerInfoPort(final ServerName sn) { int port = this.serverManager.getInfoPort(sn); return port == 0 @@ -95,7 +95,7 @@ index 7eab15970c..8f9a95c506 100644 } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java -index 454c5580c4..bf35b0a38a 100644 +index 9801f7c7fc..ba022b0c9a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -25,6 +25,7 @@ import static org.apache.hadoop.hbase.HConstants.DEFAULT_SLOW_LOG_SYS_TABLE_CHOR @@ -106,7 +106,7 @@ index 454c5580c4..bf35b0a38a 100644 import static org.apache.hadoop.hbase.HConstants.REGIONSERVER_PORT; import static org.apache.hadoop.hbase.HConstants.RPC_CLIENT_BIND_ADDRESS; import static org.apache.hadoop.hbase.master.waleventtracker.WALEventTrackerTableCreator.WAL_EVENT_TRACKER_ENABLED_DEFAULT; -@@ -791,7 +792,7 @@ public class HRegionServer extends Thread +@@ -788,7 +789,7 @@ public class HRegionServer extends Thread } protected int getUseThisInfoPortInstead(Configuration conf) { @@ -115,7 +115,7 @@ index 454c5580c4..bf35b0a38a 100644 return port != 0 ? port : this.infoServer != null ? this.infoServer.getPort() : -1; } -@@ -2465,12 +2466,14 @@ public class HRegionServer extends Thread +@@ -2486,12 +2487,14 @@ public class HRegionServer extends Thread */ private void putUpWebUI() throws IOException { int port = @@ -132,7 +132,7 @@ index 454c5580c4..bf35b0a38a 100644 addr = this.conf.get("hbase.master.info.bindAddress", "0.0.0.0"); isMaster = true; } -@@ -2507,12 +2510,18 @@ public class HRegionServer extends Thread +@@ -2528,12 +2531,18 @@ public class HRegionServer extends Thread LOG.info("Retry starting http info server with port: " + port); } } diff --git a/hbase/hbase/stackable/patches/2.6.3/patchable.toml b/hbase/hbase/stackable/patches/2.6.6/patchable.toml similarity index 51% rename from hbase/hbase/stackable/patches/2.6.3/patchable.toml rename to hbase/hbase/stackable/patches/2.6.6/patchable.toml index a3f9f961c..cf8512f7e 100644 --- a/hbase/hbase/stackable/patches/2.6.3/patchable.toml +++ b/hbase/hbase/stackable/patches/2.6.6/patchable.toml @@ -1,2 +1,2 @@ mirror = "https://github.com/stackabletech/hbase.git" -base = "01ac2f51f3bb4cee623ea7dced75bfccbb6b562e" +base = "d5f63f523c065f963992ea4e74db268d17816631" diff --git a/hbase/phoenix/boil-config.toml b/hbase/phoenix/boil-config.toml index 7c547b15a..35027a1cf 100644 --- a/hbase/phoenix/boil-config.toml +++ b/hbase/phoenix/boil-config.toml @@ -1,19 +1,19 @@ -[versions."5.2.1-hbase2.6.3".local-images] -"hbase/hbase" = "2.6.3" -"hadoop/hadoop" = "3.4.2" # TODO: Bump to 3.4.3 +[versions."5.3.0-hbase2.6.4".local-images] +"hbase/hbase" = "2.6.4" +"hadoop/hadoop" = "3.4.3" java-devel = "11" -[versions."5.2.1-hbase2.6.3".build-arguments] -phoenix-version = "5.2.1" +[versions."5.3.0-hbase2.6.4".build-arguments] +phoenix-version = "5.3.0" hbase-profile = "2.6" delete-caches = "true" -[versions."5.3.0-hbase2.6.4".local-images] -"hbase/hbase" = "2.6.4" -"hadoop/hadoop" = "3.4.2" # TODO: Bump to 3.4.3 +[versions."5.3.1-hbase2.6.6".local-images] +"hbase/hbase" = "2.6.6" +"hadoop/hadoop" = "3.4.3" java-devel = "11" -[versions."5.3.0-hbase2.6.4".build-arguments] -phoenix-version = "5.3.0" +[versions."5.3.1-hbase2.6.6".build-arguments] +phoenix-version = "5.3.1" hbase-profile = "2.6" delete-caches = "true" diff --git a/hbase/phoenix/stackable/patches/5.2.1/0002-Fix-CVE-2023-34455.patch b/hbase/phoenix/stackable/patches/5.2.1/0002-Fix-CVE-2023-34455.patch deleted file mode 100644 index 0dbe1c0d8..000000000 --- a/hbase/phoenix/stackable/patches/5.2.1/0002-Fix-CVE-2023-34455.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 24a0779c5e24caec82d23988f0b4b026e4bc7c8c Mon Sep 17 00:00:00 2001 -From: dervoeti -Date: Thu, 13 Mar 2025 22:01:52 +0100 -Subject: Fix CVE-2023-34455 - -See https://github.com/stackabletech/vulnerabilities/issues/558 ---- - phoenix-core-client/pom.xml | 6 ++++++ - phoenix-core-server/pom.xml | 8 +++++++- - phoenix-pherf/pom.xml | 6 ++++++ - phoenix-tracing-webapp/pom.xml | 6 ++++++ - pom.xml | 7 +++++++ - 5 files changed, 32 insertions(+), 1 deletion(-) - -diff --git a/phoenix-core-client/pom.xml b/phoenix-core-client/pom.xml -index eaf92a75e..cbbebc9d5 100644 ---- a/phoenix-core-client/pom.xml -+++ b/phoenix-core-client/pom.xml -@@ -233,6 +233,12 @@ - org.apache.hadoop - hadoop-auth - -+ -+ -+ org.xerial.snappy -+ snappy-java -+ 1.1.10.4 -+ - - - -diff --git a/phoenix-core-server/pom.xml b/phoenix-core-server/pom.xml -index bb582d408..61cfeef6d 100644 ---- a/phoenix-core-server/pom.xml -+++ b/phoenix-core-server/pom.xml -@@ -59,6 +59,12 @@ - org.apache.hadoop - hadoop-mapreduce-client-core - -+ -+ -+ org.xerial.snappy -+ snappy-java -+ 1.1.10.4 -+ - - - -@@ -192,4 +198,4 @@ - - - -- -\ No newline at end of file -+ -diff --git a/phoenix-pherf/pom.xml b/phoenix-pherf/pom.xml -index 787137edc..017cb5dd5 100644 ---- a/phoenix-pherf/pom.xml -+++ b/phoenix-pherf/pom.xml -@@ -159,6 +159,12 @@ - org.apache.hbase - hbase-server - -+ -+ -+ org.xerial.snappy -+ snappy-java -+ 1.1.10.4 -+ - - - -diff --git a/phoenix-tracing-webapp/pom.xml b/phoenix-tracing-webapp/pom.xml -index 681e68043..3f28979e7 100755 ---- a/phoenix-tracing-webapp/pom.xml -+++ b/phoenix-tracing-webapp/pom.xml -@@ -89,6 +89,12 @@ - org.apache.hbase - hbase-common - -+ -+ -+ org.xerial.snappy -+ snappy-java -+ 1.1.10.4 -+ - - - -diff --git a/pom.xml b/pom.xml -index f8534b4ad..ec98a082a 100644 ---- a/pom.xml -+++ b/pom.xml -@@ -892,6 +892,13 @@ - - - -+ -+ -+ org.xerial.snappy -+ snappy-java -+ 1.1.10.4 -+ -+ - - org.apache.hadoop - hadoop-common diff --git a/hbase/phoenix/stackable/patches/5.2.1/0001-Add-CycloneDX-plugin.patch b/hbase/phoenix/stackable/patches/5.3.1/0001-Add-CycloneDX-plugin.patch similarity index 70% rename from hbase/phoenix/stackable/patches/5.2.1/0001-Add-CycloneDX-plugin.patch rename to hbase/phoenix/stackable/patches/5.3.1/0001-Add-CycloneDX-plugin.patch index f57d3b516..102f0b641 100644 --- a/hbase/phoenix/stackable/patches/5.2.1/0001-Add-CycloneDX-plugin.patch +++ b/hbase/phoenix/stackable/patches/5.3.1/0001-Add-CycloneDX-plugin.patch @@ -1,6 +1,6 @@ -From 7727bee78aa96e3342da8cb9b3221327f29c43db Mon Sep 17 00:00:00 2001 -From: dervoeti -Date: Thu, 13 Mar 2025 22:00:03 +0100 +From ec17a2143178f2a48cb7cfdc1d3b7b5f0dc53e0e Mon Sep 17 00:00:00 2001 +From: Nick Larsen +Date: Mon, 26 Jan 2026 11:10:17 +0100 Subject: Add CycloneDX plugin --- @@ -8,10 +8,10 @@ Subject: Add CycloneDX plugin 1 file changed, 17 insertions(+) diff --git a/pom.xml b/pom.xml -index ed97bb870..f8534b4ad 100644 +index 119bb498a..b30f1b8b6 100644 --- a/pom.xml +++ b/pom.xml -@@ -697,6 +697,23 @@ +@@ -1918,6 +1918,23 @@ true true @@ -32,6 +32,6 @@ index ed97bb870..f8534b4ad 100644 + + + - - - + + com.diffplug.spotless + spotless-maven-plugin diff --git a/hbase/phoenix/stackable/patches/5.2.1/0003-Adjust-version-regex-to-match-custom-stackable-versi.patch b/hbase/phoenix/stackable/patches/5.3.1/0002-Adjust-version-regex-to-match-custom-stackable-versi.patch similarity index 71% rename from hbase/phoenix/stackable/patches/5.2.1/0003-Adjust-version-regex-to-match-custom-stackable-versi.patch rename to hbase/phoenix/stackable/patches/5.3.1/0002-Adjust-version-regex-to-match-custom-stackable-versi.patch index 1ff478d11..0030cc9f3 100644 --- a/hbase/phoenix/stackable/patches/5.2.1/0003-Adjust-version-regex-to-match-custom-stackable-versi.patch +++ b/hbase/phoenix/stackable/patches/5.3.1/0002-Adjust-version-regex-to-match-custom-stackable-versi.patch @@ -1,6 +1,6 @@ -From 7efd58083a39cf19fe027c9a29b78bc9d7cec2b8 Mon Sep 17 00:00:00 2001 -From: dervoeti -Date: Tue, 15 Apr 2025 11:11:36 +0200 +From c92e7e24fc58bc48511748599b90e053f6b16c5a Mon Sep 17 00:00:00 2001 +From: Nick Larsen +Date: Mon, 26 Jan 2026 13:03:56 +0100 Subject: Adjust version regex to match custom stackable versions --- @@ -8,11 +8,11 @@ Subject: Adjust version regex to match custom stackable versions 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phoenix-core-client/pom.xml b/phoenix-core-client/pom.xml -index cbbebc9d5..ae0b37387 100644 +index e1ba8727f..90794c228 100644 --- a/phoenix-core-client/pom.xml +++ b/phoenix-core-client/pom.xml -@@ -48,7 +48,7 @@ - import java.util.regex.Pattern; +@@ -275,7 +275,7 @@ + import java.util.regex.Pattern; import java.lang.Integer; - versionPattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)[^.]*$"); diff --git a/hbase/phoenix/stackable/patches/5.2.1/patchable.toml b/hbase/phoenix/stackable/patches/5.3.1/patchable.toml similarity index 52% rename from hbase/phoenix/stackable/patches/5.2.1/patchable.toml rename to hbase/phoenix/stackable/patches/5.3.1/patchable.toml index a0b11000b..9ea651602 100644 --- a/hbase/phoenix/stackable/patches/5.2.1/patchable.toml +++ b/hbase/phoenix/stackable/patches/5.3.1/patchable.toml @@ -1,2 +1,2 @@ -base = "b738d66cb5863b759bb98eaa417b3b5731d41f95" mirror = "https://github.com/stackabletech/phoenix.git" +base = "5c43c0f5bfcd310fd91d6c7bffcf45f356729cf8"