libcephfs: Java bindings failing to load on CentOS
2016-07-08T11:28:40.273 INFO:tasks.workunit.client.0.mira030.stdout:JUnit version 4.11 2016-07-08T11:28:40.497 INFO:tasks.workunit.client.0.mira030.stdout:.Loading libcephfs-jni from default path: /usr/lib/jni:/usr/lib64 2016-07-08T11:28:40.498 INFO:tasks.workunit.client.0.mira030.stdout:Loading libcephfs-jni: /usr/lib64/libcephfs_jni.so 2016-07-08T11:28:40.498 INFO:tasks.workunit.client.0.mira030.stdout:Loading libcephfs-jni: /usr/lib/jni/libcephfs_jni.so 2016-07-08T11:28:40.498 INFO:tasks.workunit.client.0.mira030.stdout:Loading libcephfs-jni: Failure! 2016-07-08T11:28:40.578 INFO:tasks.workunit.client.0.mira030.stdout:E.EEE.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E 2016-07-08T11:28:40.633 INFO:tasks.workunit.client.0.mira030.stdout:Time: 0.105 2016-07-08T11:28:40.633 INFO:tasks.workunit.client.0.mira030.stdout:There were 29 failures: 2016-07-08T11:28:40.634 INFO:tasks.workunit.client.0.mira030.stdout:1) test_double_mount(com.ceph.fs.CephDoubleMountTest) 2016-07-08T11:28:40.639 INFO:tasks.workunit.client.0.mira030.stdout:java.lang.Exception: Unexpected exception, expected<com.ceph.fs.CephAlreadyMountedException> but was<java.lang.UnsatisfiedLinkError>
I am suspicious that this might have broken in the transition to cmake built packages
#2 Updated by Noah Watkins about 3 years ago
I saw this before with Debian. It looks like it's now showing with with rhelish stuff. The non-devel package includes the libraries with the version suffix, but the Java bindings look for the library without the version name, which is provided by the -devel package. Looks like solution is to install the -devel package. On a related note, what is the purpose of the non-versioned libraries?
[nwatkins@sapporo ~]$ rpm -qlp Downloads/libcephfs_jni1-11.0.0-411.g5c2a1bb.x86_64.rpm warning: Downloads/libcephfs_jni1-11.0.0-411.g5c2a1bb.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 03c3951a: NOKEY /usr/lib64/libcephfs_jni.so.1 /usr/lib64/libcephfs_jni.so.1.0.0
[nwatkins@sapporo ~]$ rpm -qlp Downloads/libcephfs_jni1-devel-11.0.0-411.g5c2a1bb.x86_64.rpm warning: Downloads/libcephfs_jni1-devel-11.0.0-411.g5c2a1bb.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 03c3951a: NOKEY /usr/lib64/libcephfs_jni.so
#4 Updated by John Spray about 3 years ago
I suppose the convention of putting the unversioned libraries into -dev packages is based on the idea that built code should always be pointing to versioned ones?
I can't see why the java bindings would have previously pointed to a versioned library from the Makefile.am/CMakeLists.txt difference, but I'm not very familiar with this code. To get past the test failure I've created a teuthology change to install the -dev library https://github.com/ceph/teuthology/pull/907
The real fix for this is probably going to be to figure out the build issue such that users don't have to install -dev libraries.
#9 Updated by Jeff Layton about 3 years ago
Yes, you really don't want to load the unversioned library at runtime. It's possible that you'll end up picking up a newer version of the library that doesn't have the correct ABI, which can lead to all sorts of weird problems that are difficult to troubleshoot.
#10 Updated by John Spray about 3 years ago
So, the PR had a passing test run:
...but we're still seeing the issue:
From the passes and fails I can see, this seems to still be failing on CentOS and passing on Ubuntu.