You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "odidev (Jira)" <ji...@apache.org> on 2020/10/15 12:30:00 UTC

[jira] [Commented] (CASSANDRA-16212) Cassandra version above 3.11.0 failing for ARM64

    [ https://issues.apache.org/jira/browse/CASSANDRA-16212?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17214668#comment-17214668 ] 

odidev commented on CASSANDRA-16212:
------------------------------------

Hi Team

I am working on adding ARM64 support to ‘zipkin’. Zipkin uses the ‘zipkin-cassandra’ docker image in their build. But the image is available only for AMD64 platform. 

‘Zipkin-cassandra’ is built from a Dockerfile which downloads and uses  Cassandra. I have checked that Cassandra has included AArch64 support from version 3.11.X and above, and cassandra docker images are also available for ARM64 platform <[https://hub.docker.com/_/cassandra?tab=tags]>.
 For generating zipkin-cassandra docker images for ARM64, I have used cassandra version 3.11.0, and the image has been built fine. But if I use cassandra version above 3.11.0, say 3.11.8, then docker build fails with the below error after starting the server with “bin/cassandra -f” command:

 
{code:java}
ERROR [main] 2020-10-15 09:04:39,771 NativeLibraryLinux.java:64 - Failed to link the C library against JNA. Native methods will be unavailable.

java.lang.UnsatisfiedLinkError: /tmp/jna-3506402/jna3214742498288082263.tmp: Error loading shared library ld-linux-aarch64.so.1: No such file or directory (needed by /tmp/jna-3506402/jna3214742498288082263.tmp)

        at java.lang.ClassLoader$NativeLibrary.load(Native Method) ~[na:1.8.0_252]

        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1946) ~[na:1.8.0_252]

        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1828) ~[na:1.8.0_252]

        at java.lang.Runtime.load0(Runtime.java:809) ~[na:1.8.0_252]

        at java.lang.System.load(System.java:1088) ~[na:1.8.0_252]

        at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:851) ~[jna-4.2.2.jar:4.2.2 (b0)]

        at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:826) ~[jna-4.2.2.jar:4.2.2 (b0)]

        at com.sun.jna.Native.<clinit>(Native.java:140) ~[jna-4.2.2.jar:4.2.2 (b0)]

        at com.sun.jna.NativeLibrary.<clinit>(NativeLibrary.java:84) ~[jna-4.2.2.jar:4.2.2 (b0)]

        at org.apache.cassandra.utils.NativeLibraryLinux.<clinit>(NativeLibraryLinux.java:55) ~[apache-cassandra-3.11.8.jar:3.11.8]

        at org.apache.cassandra.utils.NativeLibrary.<clinit>(NativeLibrary.java:95) [apache-cassandra-3.11.8.jar:3.11.8]

        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:203) [apache-cassandra-3.11.8.jar:3.11.8]

        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:628) [apache-cassandra-3.11.8.jar:3.11.8]

        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:768) [apache-cassandra-3.11.8.jar:3.11.8]

{code}

The build environment is based on the docker image *‘alpine:3.12’*, with *C.UTF-8* locale and *openjdk-8*. Here is the Dockerfile for building ‘zipkin-cassandra’ docker image <[https://github.com/openzipkin/zipkin/blob/2.21.5/docker/storage/cassandra/Dockerfile]> and please find the Dockerfile here for the base image used in zipkin-cassandra dockerfile <[https://github.com/openzipkin/docker-java/blob/1.8.0_252-b09/Dockerfile]>.

There is a limitation in project ‘zipkin’, that the source code supports Cassandra version 3.11.3 and above. But if I use any other version other than 3.11.0, I get the above error that *ld-linux-aarch64.so.1*  file is missing. Another constraint is to use an ‘alpine’ environment only,  as building ‘zipkin-cassandra’ docker image involves installation script file, which has an alpine based coding format.

For the resolution, I followed below JIRAs raised for similar issues in 3.11.X series:
 # https://issues.apache.org/jira/browse/CASSANDRA-13072
 # https://issues.apache.org/jira/browse/CASSANDRA-13791
 Accordingly, I have tried removing the jna-4.2.2 jar file from /lib and downloaded jna-4.4.0 jar; but this has not solved the problem.
 Also, I have downloaded ‘*ld-linux-aarch64.so.1*’ from here <[https://ughe.github.io/data/2018/ld-linux-aarch64.so.1]> and placed it at /lib/, but facing the same issue.

Zipkin requires a cassandra version greater than v3.11.3 but it seems cassandra versions greater than v3.11.0 does not support  ARM64 platform. It will be helpful if we have ARM64 support in current versions or please provide me with some pointers on the above issue so that I can add the same.

 

> Cassandra version above 3.11.0 failing for ARM64 
> -------------------------------------------------
>
>                 Key: CASSANDRA-16212
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16212
>             Project: Cassandra
>          Issue Type: Task
>            Reporter: odidev
>            Priority: Normal
>
> Cassandra versions above 3.11.0 are failing on ARM64 platform with below issue:
> java.lang.UnsatisfiedLinkError: /tmp/jna-3506402/jna3214742498288082263.tmp: *Error loading shared library ld-linux-aarch64.so.1: No such file or directory (needed by /tmp/jna-3506402/jna3214742498288082263.tmp)*



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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