Tuesday

UnsatisfiedLinkError: JNA link failure on RHEL 5.7 with Cassandra 1.1.5

Today our team tried to install JNA 3.5.0 in our UAT environment. Here is the link to make a try. At the moment of Cassandra start we have noticed the following INFO on cassandra log:
INFO [main] 2012-11-27 13:20:17,747 CLibrary.java (line 66) JNA link failure, one or more native method will be unavailable.
Very interesting thing is that, most of the JNA features works. I have decided to investigate the problem and restart Cassandra in debug mode (edit the log4j-server.properties and set the rootLogger level DEBUG) and found the details error
DEBUG [main] 2012-11-27 13:20:17,748 CLibrary.java (line 67) JNA link failure details: /tmp/jna-oracle/jna1599621626582486116.tmp: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by /tmp/jna-oracle/jna1599621626582486116.tmp)
Now it was easy to fix the problem. There is a few solution^
1) updated linux binaries for x86/amd64 against 2.1.3 and 2.2.5
2) Use JNA 3.3.0 or JNA 2.7.0 version
you can download JNA 3.3.0 from the following location http://download.java.net/maven/2/net/java/dev/jna/jna/
after successfully installation you should found the following INFO on log:
JNA mlockall successful
If you have another process along with Cassandra, you have to set ulimit for max locked memory to unlimited

Add the following lines in the /etc/security/limits.conf file for the user/group that runs Cassandra:

$USER soft memlock unlimited
$USER hard memlock unlimited

and reboot the system.