You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2021/09/15 18:42:11 UTC

[cassandra] branch cassandra-3.0 updated: catch UnsatisfiedLinkError in WindowsTimer

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

brandonwilliams pushed a commit to branch cassandra-3.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-3.0 by this push:
     new be649d5  catch UnsatisfiedLinkError in WindowsTimer
be649d5 is described below

commit be649d5d5437a99be225049f94fda058e4b9e896
Author: Stephen L. De Rudder <sl...@users.noreply.github.com>
AuthorDate: Tue Sep 14 21:21:05 2021 -0500

    catch UnsatisfiedLinkError in WindowsTimer
    
    Patch by Stephen L. De Rudder; reviewed by brandonwilliams and jmckenzie
    for CASSANDRA-16085
---
 CHANGES.txt                                           |  1 +
 src/java/org/apache/cassandra/utils/WindowsTimer.java | 11 +++++++++++
 2 files changed, 12 insertions(+)

diff --git a/CHANGES.txt b/CHANGES.txt
index bf17d9a..94340d8 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.26:
+ * Catch UnsatisfiedLinkError in WindowsTimer (CASSANDRA-16085)
  * Avoid removing batch when it's not created during view replication (CASSANDRA-16175)
  * Make the addition of regular column to COMPACT tables throw an InvalidRequestException (CASSANDRA-14564)
  * Fix materialized view schema backup as table (CASSANDRA-12734)
diff --git a/src/java/org/apache/cassandra/utils/WindowsTimer.java b/src/java/org/apache/cassandra/utils/WindowsTimer.java
index 351751f..f004979 100644
--- a/src/java/org/apache/cassandra/utils/WindowsTimer.java
+++ b/src/java/org/apache/cassandra/utils/WindowsTimer.java
@@ -27,17 +27,24 @@ import com.sun.jna.Native;
 public final class WindowsTimer
 {
     private static final Logger logger = LoggerFactory.getLogger(WindowsTimer.class);
+    
+    private static boolean available;
 
     static
     {
         try
         {
             Native.register("winmm");
+            available = true;
         }
         catch (NoClassDefFoundError e)
         {
             logger.warn("JNA not found. winmm.dll cannot be registered. Performance will be negatively impacted on this node.");
         }
+        catch (UnsatisfiedLinkError e)
+        {
+            logger.error("Failed to link the winmm.dll library against JNA. Performance will be negatively impacted on this node.", e);
+        }
         catch (Exception e)
         {
             logger.error("Failed to register winmm.dll. Performance will be negatively impacted on this node.");
@@ -54,6 +61,8 @@ public final class WindowsTimer
         if (period == 0)
             return;
         assert(period > 0);
+        if (!available)
+            return;
         if (timeBeginPeriod(period) != 0)
             logger.warn("Failed to set timer to : " + period + ". Performance will be degraded.");
     }
@@ -63,6 +72,8 @@ public final class WindowsTimer
         if (period == 0)
             return;
         assert(period > 0);
+        if (!available)
+            return;
         if (timeEndPeriod(period) != 0)
             logger.warn("Failed to end accelerated timer period. System timer will remain set to: " + period + " ms.");
     }

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org