Skip to content

Commit

Permalink
MDEV-16183 TokuDB tests fail on Fedora 28
Browse files Browse the repository at this point in the history
jemalloc > 5.0.0 doesn't like to be linked with
a dlopen-ed module.

Don't link tokudb with jemalloc on Fedora 28,
LD_PRELOAD it instead with mysqld_safe
and with systemd.
  • Loading branch information
vuvova committed May 16, 2018
1 parent cb21e11 commit bb045e7
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
29 changes: 28 additions & 1 deletion storage/tokudb/CMakeLists.txt
Expand Up @@ -35,7 +35,7 @@ SET(TOKUDB_SOURCES
tokudb_thread.cc
tokudb_dir_cmd.cc)
MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY
COMPONENT tokudb-engine CONFIG tokudb.cnf)
COMPONENT tokudb-engine CONFIG ${CMAKE_CURRENT_BINARY_DIR}/tokudb.cnf)

IF(NOT TARGET tokudb)
RETURN()
Expand All @@ -46,6 +46,33 @@ CHECK_JEMALLOC()

IF(NOT LIBJEMALLOC)
MESSAGE(WARNING "TokuDB is enabled, but jemalloc is not. This configuration is not supported")
ELSEIF(LIBJEMALLOC STREQUAL jemalloc)
FIND_LIBRARY(LIBJEMALLOC_SO jemalloc)
IF(NOT LIBJEMALLOC_SO)
MESSAGE(FATAL_ERROR "jemalloc is present, but cannot be found?")
ENDIF()
GET_FILENAME_COMPONENT(LIBJEMALLOC_PATH ${LIBJEMALLOC_SO} REALPATH CACHE)
ENDIF()

IF(LIBJEMALLOC_PATH AND RPM MATCHES fedora28) # TODO check for jemalloc version
UNSET(LIBJEMALLOC)
GET_DIRECTORY_PROPERTY(V DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITION CPACK_RPM_tokudb-engine_PACKAGE_REQUIRES)
SET(CPACK_RPM_tokudb-engine_PACKAGE_REQUIRES "${V} jemalloc" PARENT_SCOPE)
SET(systemd_env "Environment=\"LD_PRELOAD=${LIBJEMALLOC_PATH}\"") #"
SET(cnf_malloc_lib "malloc-lib=${LIBJEMALLOC_PATH}")
ELSEIF(LIBJEMALLOC_PATH)
SET(systemd_env "#Environment=\"LD_PRELOAD=${LIBJEMALLOC_PATH}\"") #"
SET(cnf_malloc_lib "#malloc-lib=${LIBJEMALLOC_PATH}")
ELSE()
SET(systemd_env "#Environment=\"LD_PRELOAD=/path/to/libjemalloc.so\"") #"
SET(cnf_malloc_lib "#malloc-lib=/path/to/libjemalloc.so")
ENDIF()
CONFIGURE_FILE(tokudb.cnf.in tokudb.cnf @ONLY)
CONFIGURE_FILE(tokudb.conf.in tokudb.conf @ONLY)
IF(INSTALL_SYSCONFDIR)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tokudb.conf
DESTINATION ${INSTALL_SYSCONFDIR}/systemd/system/mariadb.service.d/
COMPONENT tokudb-engine)
ENDIF()

MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-vla" DEBUG)
Expand Down
3 changes: 3 additions & 0 deletions storage/tokudb/tokudb.cnf → storage/tokudb/tokudb.cnf.in
Expand Up @@ -4,3 +4,6 @@

plugin-load-add=ha_tokudb.so

[mysqld_safe]
# it might be necessary to uncomment the following line if jemalloc >= 5.0.0
@cnf_malloc_lib@
3 changes: 3 additions & 0 deletions storage/tokudb/tokudb.conf.in
@@ -0,0 +1,3 @@
[Service]
# it might be necessary to uncomment the following line if jemalloc >= 5.0.0
@systemd_env@

0 comments on commit bb045e7

Please sign in to comment.