Updated Branches:
  refs/heads/trunk 4e9d1aca0 -> 68baaedd6

By default cassandra will no longer start without jna
patch by clardeur reviewed by dbrosius for cassandra 6575


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/68baaedd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/68baaedd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/68baaedd

Branch: refs/heads/trunk
Commit: 68baaedd6f0adf4719f0c65296433d5f006c74c4
Parents: 4e9d1ac
Author: Dave Brosius <dbros...@mebigfatguy.com>
Authored: Fri Jan 17 19:34:52 2014 -0500
Committer: Dave Brosius <dbros...@mebigfatguy.com>
Committed: Fri Jan 17 19:34:52 2014 -0500

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../org/apache/cassandra/service/CassandraDaemon.java | 14 ++++++++++++++
 src/java/org/apache/cassandra/utils/CLibrary.java     |  4 ++--
 3 files changed, 17 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/68baaedd/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 58c2ad6..a4d9d47 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -23,6 +23,7 @@
  * Add cardinality estimator for key count estimation (CASSANDRA-5906)
  * CF id is changed to be non-deterministic. Data dir/key cache are created
    uniquely for CF id (CASSANDRA-5202)
+ * Cassandra won't start by default without jna (CASSANDRA-6575)
 
 
 2.0.5

http://git-wip-us.apache.org/repos/asf/cassandra/blob/68baaedd/src/java/org/apache/cassandra/service/CassandraDaemon.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java 
b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index 7dd538c..a5c7df5 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -129,6 +129,20 @@ public class CassandraDaemon
      */
         logger.info("Heap size: {}/{}", Runtime.getRuntime().totalMemory(), 
Runtime.getRuntime().maxMemory());
         logger.info("Classpath: {}", System.getProperty("java.class.path"));
+
+        // Fail-fast if JNA is not available or failing to initialize properly
+        // except with -Dcassandra.boot_without_jna=true. See CASSANDRA-6575.
+        if (!CLibrary.jnaAvailable())
+        {
+            boolean jnaRequired = 
!Boolean.getBoolean("cassandra.boot_without_jna");
+
+            if (jnaRequired)
+            {
+                logger.error("JNA failing to initialize properly. Use 
-Dcassandra.boot_without_jna=true to bootstrap even so.");
+                System.exit(3);
+            }
+        }
+
         CLibrary.tryMlockall();
 
         Thread.setDefaultUncaughtExceptionHandler(new 
Thread.UncaughtExceptionHandler()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/68baaedd/src/java/org/apache/cassandra/utils/CLibrary.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/CLibrary.java 
b/src/java/org/apache/cassandra/utils/CLibrary.java
index a7ff815..4dd5223 100644
--- a/src/java/org/apache/cassandra/utils/CLibrary.java
+++ b/src/java/org/apache/cassandra/utils/CLibrary.java
@@ -60,11 +60,11 @@ public final class CLibrary
         }
         catch (NoClassDefFoundError e)
         {
-            logger.info("JNA not found. Native methods will be disabled.");
+            logger.warn("JNA not found. Native methods will be disabled.");
         }
         catch (UnsatisfiedLinkError e)
         {
-            logger.info("JNA link failure, one or more native method will be 
unavailable.");
+            logger.warn("JNA link failure, one or more native method will be 
unavailable.");
             logger.debug("JNA link failure details: {}", e.getMessage());
         }
         catch (NoSuchMethodError e)

Reply via email to