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));
     }
 }

Reply via email to