This is an automated email from the ASF dual-hosted git repository. mhubail pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 8ffe8eedcab61f341e9ad38a5e1bf7af1face918 Author: Ian Maxon <[email protected]> AuthorDate: Tue May 7 11:37:30 2024 -0700 [ASTERIXDB-3396][CONF] Tweak memory, '-add-opens' flags - user model changes: no - storage format changes: no - interface changes: no Details: In JDK17, we are encountering module access errors that appear in the log. This is due to not having the right access flags added to the JVM Additionally, the NCService integration tests are failing due to memory overuse. This patch tweaks the default allocation to be 50% instead of 60% of the host memory. Change-Id: I13ec2c1063754b93d1fad551362134c0d1c593d5 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18271 Reviewed-by: Ian Maxon <[email protected]> Reviewed-by: Michael Blow <[email protected]> Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> --- .../apache/hyracks/control/nc/service/NCService.java | 17 ++++++++++++++++- .../hyracks/control/nc/service/NCServiceTest.java | 4 ++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/src/main/java/org/apache/hyracks/control/nc/service/NCService.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/src/main/java/org/apache/hyracks/control/nc/service/NCService.java index 97dc34460f..96d3ecbcd8 100644 --- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/src/main/java/org/apache/hyracks/control/nc/service/NCService.java +++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/src/main/java/org/apache/hyracks/control/nc/service/NCService.java @@ -31,6 +31,7 @@ import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Map; @@ -85,6 +86,12 @@ public class NCService { */ private static OperatingSystemMXBean osMXBean; + public static final String[] DEFAULT_ADD_OPENS = + { "--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED", + "--add-opens=java.management/sun.management=ALL-UNNAMED", + "--add-opens=java.base/java.lang=ALL-UNNAMED", "--add-opens=java.base/java.nio=ALL-UNNAMED", + "--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED" }; + private static List<String> buildCommand() throws IOException { List<String> cList = new ArrayList<>(); @@ -134,12 +141,20 @@ public class NCService { // Sets up memory parameter if it is not specified. if (!jvmargs.contains("-Xmx")) { long ramSize = ((com.sun.management.OperatingSystemMXBean) osMXBean).getTotalPhysicalMemorySize(); - int proportionalRamSize = (int) Math.ceil(0.6 * ramSize / (1024 * 1024)); + int proportionalRamSize = (int) Math.ceil(0.5 * ramSize / (1024 * 1024)); //if under 32bit JVM, use less than 1GB heap by default. otherwise use proportional ramsize. int heapSize = "32".equals(System.getProperty("sun.arch.data.model")) ? (proportionalRamSize <= 1024 ? proportionalRamSize : 1024) : proportionalRamSize; jvmargs = jvmargs + " -Xmx" + heapSize + "m"; } + + // Squelch some module access warnings and errors from JDK9+ + if (!jvmargs.contains("-add-opens")) { + StringBuilder jvmArgsBuilder = new StringBuilder(jvmargs); + Arrays.stream(DEFAULT_ADD_OPENS).map(s -> jvmArgsBuilder.append(s)); + jvmargs = jvmArgsBuilder.toString(); + } + env.put("JAVA_OPTS", jvmargs.trim()); LOGGER.info("Setting JAVA_OPTS to " + jvmargs); } diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/src/test/java/org/apache/hyracks/control/nc/service/NCServiceTest.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/src/test/java/org/apache/hyracks/control/nc/service/NCServiceTest.java index 00d7ca4965..bc04320b47 100644 --- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/src/test/java/org/apache/hyracks/control/nc/service/NCServiceTest.java +++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-nc-service/src/test/java/org/apache/hyracks/control/nc/service/NCServiceTest.java @@ -42,7 +42,7 @@ public class NCServiceTest { String sizeStr = prefix.substring(0, prefix.length() - 1); int size = Integer.parseInt(sizeStr); long ramSize = ((com.sun.management.OperatingSystemMXBean) osMXBean).getTotalPhysicalMemorySize(); - int base = 1024 * 1024 * 5; - Assert.assertTrue(size == ramSize * 3 / base + ((ramSize * 3) % base == 0 ? 0 : 1)); + int base = 1024 * 1024; + Assert.assertTrue(size == (ramSize / 2) / base + (((ramSize / 2) % base) == 0 ? 0 : 1)); } }
