From ccf150434d90673a56f90142a4ba127194d3bf9a Mon Sep 17 00:00:00 2001 From: Yutong Xiao Date: Thu, 25 Nov 2021 16:25:44 +0800 Subject: [PATCH] Backport HBASE-26477 Fix MiniMapReduceCluster failure under Java17 to branch-2 (#3878) Signed-off-by: Duo Zhang --- .../org/apache/hadoop/hbase/HBaseTestingUtility.java | 9 +++++++++ 1 file changed, 9 insertions(+) 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 353a48dce28..72e12043c0e 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 @@ -123,6 +123,7 @@ import org.apache.hadoop.hbase.util.CommonFSUtils; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import org.apache.hadoop.hbase.util.FSTableDescriptors; import org.apache.hadoop.hbase.util.FSUtils; +import org.apache.hadoop.hbase.util.JVM; import org.apache.hadoop.hbase.util.JVMClusterUtil; import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread; import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread; @@ -2908,6 +2909,14 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility { conf.setBoolean("mapreduce.reduce.speculative", false); //// + // Yarn container runs in independent JVM. We need to pass the argument manually here if the + // JDK version >= 17. Otherwise, the MiniMRCluster will fail. + if (JVM.getJVMSpecVersion() >= 17) { + String jvmOpts = conf.get("yarn.app.mapreduce.am.command-opts", ""); + conf.set("yarn.app.mapreduce.am.command-opts", + jvmOpts + " --add-opens java.base/java.lang=ALL-UNNAMED"); + } + // Allow the user to override FS URI for this map-reduce cluster to use. mrCluster = new MiniMRCluster(servers, FS_URI != null ? FS_URI : FileSystem.get(conf).getUri().toString(), 1,