Bug #47554
open
librgw:load compressor failed.
Added by Rixin Luo over 3 years ago.
Updated over 3 years ago.
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
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
[root@ceph01 ceph]# rpm -qf /usr/lib64/ceph/compressor/libceph_zlib.so
ceph-base-14.2.9-0.el7.x86_64
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.
What OS are you using? Where were the packages installed from?
centos 7.6 for aarch64. we develop a jni library to wrap librgw.
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
- Subject changed from load compressor failed. to librgw:load compressor failed.
- Tags set to compression
- Pull request ID set to 37272
- Status changed from New to Fix Under Review
Also available in: Atom
PDF