This is an automated email from the ASF dual-hosted git repository.

abhishekrb pushed a commit to branch oshi_dep_fixup
in repository https://gitbox.apache.org/repos/asf/druid.git

commit e4c379f1ee7c75277f748244887b357e8f52e374
Author: Abhishek Balaji Radhakrishnan <[email protected]>
AuthorDate: Tue Dec 16 15:13:52 2025 -0500

    Follow up to https://github.com/apache/druid/pull/18839
    
    Newer versions of Oshi requires a bump in JNA dependency too. Without that, 
running quickstart
    with oshi sys monitor will fail processes with the following error:
    
    Caused by: java.lang.NoClassDefFoundError: 
com/sun/jna/platform/mac/CoreFoundation$CFLocale
            at 
oshi.software.os.mac.MacOperatingSystem.<init>(MacOperatingSystem.java:58)
            at 
oshi.software.os.mac.MacOperatingSystemJNA.<init>(MacOperatingSystemJNA.java:54)
            at oshi.SystemInfo.createOperatingSystem(SystemInfo.java:87)
            at oshi.util.Memoizer$1.get(Memoizer.java:65)
            at oshi.SystemInfo.getOperatingSystem(SystemInfo.java:76)
            at 
org.apache.druid.java.util.metrics.OshiSysMonitor.<init>(OshiSysMonitor.java:102)
            at 
org.apache.druid.java.util.metrics.OshiSysMonitor.<init>(OshiSysMonitor.java:90)
    
    Adds a unit test that fails locally with the same error without the jna 
dependencies bumped up.
---
 pom.xml                                            |  4 ++--
 .../java/util/metrics/OshiSysMonitorTest.java      | 22 +++++++++++++++++-----
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/pom.xml b/pom.xml
index 7f1328cd41b..ac87329811b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,8 +117,8 @@
         <protobuf.version>3.25.8</protobuf.version>
         <resilience4j.version>1.3.1</resilience4j.version>
         <slf4j.version>2.0.16</slf4j.version>
-        <jna.version>5.13.0</jna.version>
-        <jna-platform.version>5.13.0</jna-platform.version>
+        <jna.version>5.18.1</jna.version>
+        <jna-platform.version>5.18.1</jna-platform.version>
         <hadoop.compile.version>3.3.6</hadoop.compile.version>
         <graaljs.version>22.3.5</graaljs.version>
         <mockito.version>5.14.2</mockito.version>
diff --git 
a/processing/src/test/java/org/apache/druid/java/util/metrics/OshiSysMonitorTest.java
 
b/processing/src/test/java/org/apache/druid/java/util/metrics/OshiSysMonitorTest.java
index c31ee8ea776..d6c982169fe 100644
--- 
a/processing/src/test/java/org/apache/druid/java/util/metrics/OshiSysMonitorTest.java
+++ 
b/processing/src/test/java/org/apache/druid/java/util/metrics/OshiSysMonitorTest.java
@@ -52,11 +52,6 @@ public class OshiSysMonitorTest
   private HardwareAbstractionLayer hal;
   private OperatingSystem os;
 
-  private enum STATS
-  {
-    MEM, SWAP, FS, DISK, NET, CPU, SYS, TCP
-  }
-
   @Before
   public void setUp()
   {
@@ -137,6 +132,23 @@ public class OshiSysMonitorTest
     emitter.verifyEmitted("sys/fs/max", 0);
   }
 
+  @Test
+  public void testJnaBindingsWithRealSystemInfo()
+  {
+    // Use a real SystemInfo instance rather than a mock to ensure all 
Oshi/JNA bindings are correctly wired
+    OshiSysMonitor m = createMonitor(new SystemInfo(), List.of("mem"));
+    StubServiceEmitter emitter = new StubServiceEmitter();
+
+    m.start();
+    m.doMonitor(emitter);
+    m.stop();
+
+    emitter.verifyEmitted("sys/mem/max", 1);
+    emitter.verifyEmitted("sys/mem/used", 1);
+    emitter.verifyEmitted("sys/mem/free", 1);
+    emitter.verifyEmitted("sys/fs/max", 0);
+  }
+
   @Test
   public void testSwapStats()
   {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to