Bug #47554
openlibrgw:load compressor failed.
0%
Description
2020-09-11T15:44:54.874+0800 ffff9179f200 5 req 64 0s :put_obj -- Getting permissions done for identity=RGWDummyIdentityApplier(auth_id=hadoop, perm_mask=15, is_admin=0), owner=hadoop, perm=2
2020-09-11T15:44:54.874+0800 ffff9179f200 10 req 64 0s :put_obj identity=RGWDummyIdentityApplier(auth_id=hadoop, perm_mask=15, is_admin=0) requested perm (type)=2, policy perm=2, user_perm_mask=2, acl perm=2
2020-09-11T15:44:54.874+0800 ffff9179f200 2 req 64 0s verifying op params
2020-09-11T15:44:54.874+0800 ffff9179f200 2 req 64 0s executing
2020-09-11T15:44:54.874+0800 ffff9179f200 20 max_chunk_size=4194304
2020-09-11T15:44:54.874+0800 ffff9179f200 -1 load failed dlopen(): "/usr/lib64/ceph/compressor/libceph_zlib.so: undefined symbol: _ZN4ceph10_page_sizeE" or "/usr/lib64/ceph/libceph_zlib.so: cannot open shared object file: No such file or directory"
2020-09-11T15:44:54.874+0800 ffff9179f200 -1 create cannot load compressor of type zlib
Updated by yp dai over 3 years ago
Hi,The same ceph version (v14.2.9), I did not find this problem.
Please check that there is no error in the cluster package installation process.
The correct information should be as follows:
$ ll /usr/lib64/ceph/compressor/libceph_zlib.so
lrwxrwxrwx. 1 root root 17 Jul 8 14:47 /usr/lib64/ceph/compressor/libceph_zlib.so -> libceph_zlib.so.2
$ rpm -qf /usr/lib64/ceph/compressor/libceph_zlib.so
ceph-base-14.2.10-0.el7.x86_64
Updated by yp dai over 3 years ago
[root@ceph01 ceph]# rpm -qf /usr/lib64/ceph/compressor/libceph_zlib.so
ceph-base-14.2.9-0.el7.x86_64
Updated by Rixin Luo over 3 years ago
the file /usr/lib64/ceph/compressor/libceph_zlib.so is exist, the really error message is "undefined symbol: _ZN4ceph10_page_sizeE". the root cause is libceph_zlib.so need symblos from libceph-common.so.
libceph-common.so is dynamic linked by ceph-osd, the symbols in libceph-common are added to global symbol table when ceph-osd is running, and then dlopen can find the symbol.
The error occurs when java client using librgw via JNI and load compressor dynamically.
Updated by Abhishek Lekshmanan over 3 years ago
What OS are you using? Where were the packages installed from?
Updated by Rixin Luo over 3 years ago
centos 7.6 for aarch64. we develop a jni library to wrap librgw.
Updated by Casey Bodley over 3 years ago
can you give this change a try?
diff --git a/src/compressor/zlib/CMakeLists.txt b/src/compressor/zlib/CMakeLists.txt index c1c8413949..d5bb6516a7 100644 --- a/src/compressor/zlib/CMakeLists.txt +++ b/src/compressor/zlib/CMakeLists.txt @@ -49,7 +49,7 @@ else(HAVE_INTEL_SSE4_1 AND HAVE_BETTER_YASM_ELF64 AND (NOT APPLE)) endif(HAVE_INTEL_SSE4_1 AND HAVE_BETTER_YASM_ELF64 AND (NOT APPLE)) add_library(ceph_zlib SHARED ${zlib_sources}) -target_link_libraries(ceph_zlib ZLIB::ZLIB compressor $<$<PLATFORM_ID:Windows>:ceph-common>) +target_link_libraries(ceph_zlib ZLIB::ZLIB compressor ceph-common) target_include_directories(ceph_zlib SYSTEM PRIVATE "${CMAKE_SOURCE_DIR}/src/isa-l/include") set_target_properties(ceph_zlib PROPERTIES VERSION 2.0.0
Updated by Matt Benjamin over 3 years ago
- Subject changed from load compressor failed. to librgw:load compressor failed.
Updated by Rixin Luo over 3 years ago
i have create a pr for this, it drop PLATFORM_ID as you do.
https://github.com/ceph/ceph/pull/37272
Updated by Casey Bodley over 3 years ago
- Tags set to compression
- Pull request ID set to 37272
Updated by Casey Bodley over 3 years ago
- Status changed from New to Fix Under Review