From a033f9e0dc35edad0a3d5f02b1caa0855aefadaf Mon Sep 17 00:00:00 2001 From: Brian Evans Date: Tue, 11 Dec 2018 12:33:44 -0500 Subject: Restore jemalloc support on the server for 10.2 and 10.3 MariaDB Signed-off-by: Brian Evans --- 20037_all_mariadb-10.2-restore-jemalloc.patch | 155 ++++++++++++++++++++++++++ 20037_all_mariadb-10.3-restore-jemalloc.patch | 130 +++++++++++++++++++++ 2 files changed, 285 insertions(+) create mode 100644 20037_all_mariadb-10.2-restore-jemalloc.patch create mode 100644 20037_all_mariadb-10.3-restore-jemalloc.patch diff --git a/20037_all_mariadb-10.2-restore-jemalloc.patch b/20037_all_mariadb-10.2-restore-jemalloc.patch new file mode 100644 index 0000000..0cf1fbb --- /dev/null +++ b/20037_all_mariadb-10.2-restore-jemalloc.patch @@ -0,0 +1,155 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index be86adbf67b8..59dc149410f1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -154,6 +154,7 @@ INCLUDE(ssl) + INCLUDE(readline) + INCLUDE(libutils) + INCLUDE(dtrace) ++INCLUDE(jemalloc) + INCLUDE(pcre) + INCLUDE(ctest) + INCLUDE(plugin) +@@ -329,6 +328,7 @@ MYSQL_CHECK_SSL() + MYSQL_CHECK_READLINE() + + SET(MALLOC_LIBRARY "system") ++CHECK_JEMALLOC() + + CHECK_PCRE() + +diff --git a/include/my_global.h b/include/my_global.h +index e4ca562772e0..30db38ce35b5 100644 +--- a/include/my_global.h ++++ b/include/my_global.h +@@ -1071,7 +1071,6 @@ typedef ulong myf; /* Type of MyFlags in my_funcs */ + #ifdef _WIN32 + #define dlsym(lib, name) (void*)GetProcAddress((HMODULE)lib, name) + #define dlopen(libname, unused) LoadLibraryEx(libname, NULL, 0) +-#define RTLD_DEFAULT GetModuleHandle(NULL) + #define dlclose(lib) FreeLibrary((HMODULE)lib) + static inline char *dlerror(void) + { +diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt +index 814993355b0f..243468e095a3 100644 +--- a/sql/CMakeLists.txt ++++ b/sql/CMakeLists.txt +@@ -170,7 +170,7 @@ ADD_DEPENDENCIES(sql GenServerSource) + ADD_DEPENDENCIES(sql GenDigestServerSource) + DTRACE_INSTRUMENT(sql) + TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS} +- mysys mysys_ssl dbug strings vio pcre ++ mysys mysys_ssl dbug strings vio pcre ${LIBJEMALLOC} + ${LIBWRAP} ${LIBCRYPT} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} + ${WSREP_LIB} + ${SSL_LIBRARIES} +diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc +index d6b1c76ea004..fd724bc7dd16 100644 +--- a/sql/sys_vars.cc ++++ b/sql/sys_vars.cc +@@ -3489,32 +3489,11 @@ static Sys_var_charptr Sys_version_compile_os( + CMD_LINE_HELP_ONLY, + IN_SYSTEM_CHARSET, DEFAULT(SYSTEM_TYPE)); + +-static char *guess_malloc_library() +-{ +- if (strcmp(MALLOC_LIBRARY, "system") == 0) +- { +-#ifdef HAVE_DLOPEN +- typedef int (*mallctl_type)(const char*, void*, size_t*, void*, size_t); +- mallctl_type mallctl_func; +- mallctl_func= (mallctl_type)dlsym(RTLD_DEFAULT, "mallctl"); +- if (mallctl_func) +- { +- static char buf[128]; +- char *ver; +- size_t len = sizeof(ver); +- mallctl_func("version", &ver, &len, NULL, 0); +- strxnmov(buf, sizeof(buf)-1, "jemalloc ", ver, NULL); +- return buf; +- } +-#endif +- } +- return const_cast(MALLOC_LIBRARY); +-} + static char *malloc_library; + static Sys_var_charptr Sys_malloc_library( + "version_malloc_library", "Version of the used malloc library", + READ_ONLY GLOBAL_VAR(malloc_library), CMD_LINE_HELP_ONLY, +- IN_SYSTEM_CHARSET, DEFAULT(guess_malloc_library())); ++ IN_SYSTEM_CHARSET, DEFAULT(MALLOC_LIBRARY)); + + #ifdef HAVE_YASSL + #include +diff --git a/storage/tokudb/CMakeLists.txt b/storage/tokudb/CMakeLists.txt +index 4cfb177e495f..fd9a4790a7ea 100644 +--- a/storage/tokudb/CMakeLists.txt ++++ b/storage/tokudb/CMakeLists.txt +@@ -5,8 +5,6 @@ + RETURN() + ELSEIF(CMAKE_VERSION VERSION_LESS "2.8.9") + MESSAGE(STATUS "CMake 2.8.9 or higher is required by TokuDB") +-ELSEIF(NOT HAVE_DLOPEN) +- MESSAGE(STATUS "dlopen is required by TokuDB") + ELSEIF(PLUGIN_PERFSCHEMA MATCHES "^NO$") + MESSAGE(STATUS "Performance Schema is required by TokuDB") + RETURN() +@@ -37,8 +35,7 @@ + tokudb_sysvars.cc + tokudb_thread.cc + tokudb_dir_cmd.cc) +-MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY +- COMPONENT tokudb-engine CONFIG ${CMAKE_CURRENT_BINARY_DIR}/tokudb.cnf) ++MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY COMPONENT Server) + + IF(NOT TARGET tokudb) + RETURN() +@@ -57,27 +54,6 @@ + GET_FILENAME_COMPONENT(LIBJEMALLOC_PATH ${LIBJEMALLOC_SO} REALPATH CACHE) + ENDIF() + +-IF(LIBJEMALLOC_PATH AND (RPM OR DEB)) +- 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-shadow") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-vla" DEBUG) + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough") +@@ -154,7 +130,7 @@ + INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/${TOKU_FT_DIR_NAME}/portability) + + TARGET_LINK_LIBRARIES(tokudb tokufractaltree_static tokuportability_static +- ${ZLIB_LIBRARY} ${LIBJEMALLOC} stdc++) ++ ${ZLIB_LIBRARY} stdc++) + + SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -flto -fuse-linker-plugin") + SET(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} -flto -fuse-linker-plugin") +diff --git a/storage/tokudb/PerconaFT/tools/CMakeLists.txt b/storage/tokudb/PerconaFT/tools/CMakeLists.txt +index f11b9f350d72..e62931524c9d 100644 +--- a/storage/tokudb/PerconaFT/tools/CMakeLists.txt ++++ b/storage/tokudb/PerconaFT/tools/CMakeLists.txt +@@ -12,5 +12,5 @@ endforeach(tool) + # link in math.h library just for this tool. + target_link_libraries(ftverify m) + +-install(TARGETS tokuftdump DESTINATION ${INSTALL_BINDIR} COMPONENT tokudb-engine) +-install(TARGETS tokuft_logprint DESTINATION ${INSTALL_BINDIR} COMPONENT tokudb-engine) ++install(TARGETS tokuftdump DESTINATION ${INSTALL_BINDIR} COMPONENT Server) ++install(TARGETS tokuft_logprint DESTINATION ${INSTALL_BINDIR} COMPONENT Server) diff --git a/20037_all_mariadb-10.3-restore-jemalloc.patch b/20037_all_mariadb-10.3-restore-jemalloc.patch new file mode 100644 index 0000000..e8d239b --- /dev/null +++ b/20037_all_mariadb-10.3-restore-jemalloc.patch @@ -0,0 +1,130 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index be86adbf67b8..59dc149410f1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -154,6 +154,7 @@ INCLUDE(ssl) + INCLUDE(readline) + INCLUDE(libutils) + INCLUDE(dtrace) ++INCLUDE(jemalloc) + INCLUDE(pcre) + INCLUDE(ctest) + INCLUDE(plugin) +@@ -329,6 +328,7 @@ MYSQL_CHECK_SSL() + MYSQL_CHECK_READLINE() + + SET(MALLOC_LIBRARY "system") ++CHECK_JEMALLOC() + + CHECK_PCRE() + +diff --git a/include/my_global.h b/include/my_global.h +index e4ca562772e0..30db38ce35b5 100644 +--- a/include/my_global.h ++++ b/include/my_global.h +@@ -1071,7 +1071,6 @@ typedef ulong myf; /* Type of MyFlags in my_funcs */ + #ifdef _WIN32 + #define dlsym(lib, name) (void*)GetProcAddress((HMODULE)lib, name) + #define dlopen(libname, unused) LoadLibraryEx(libname, NULL, 0) +-#define RTLD_DEFAULT GetModuleHandle(NULL) + #define dlclose(lib) FreeLibrary((HMODULE)lib) + static inline char *dlerror(void) + { +diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt +index 814993355b0f..243468e095a3 100644 +--- a/sql/CMakeLists.txt ++++ b/sql/CMakeLists.txt +@@ -170,7 +170,7 @@ ADD_DEPENDENCIES(sql GenServerSource) + ADD_DEPENDENCIES(sql GenDigestServerSource) + DTRACE_INSTRUMENT(sql) + TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS} +- mysys mysys_ssl dbug strings vio pcre ++ mysys mysys_ssl dbug strings vio pcre ${LIBJEMALLOC} + ${LIBWRAP} ${LIBCRYPT} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} + ${WSREP_LIB} + ${SSL_LIBRARIES} +diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc +index d6b1c76ea004..fd724bc7dd16 100644 +--- a/sql/sys_vars.cc ++++ b/sql/sys_vars.cc +@@ -3793,7 +3793,7 @@ + static Sys_var_charptr Sys_malloc_library( + "version_malloc_library", "Version of the used malloc library", + READ_ONLY GLOBAL_VAR(malloc_library), CMD_LINE_HELP_ONLY, +- IN_SYSTEM_CHARSET, DEFAULT(guess_malloc_library())); ++ IN_SYSTEM_CHARSET, DEFAULT(MALLOC_LIBRARY)); + + static char *ssl_library; + static Sys_var_charptr Sys_ssl_library( +diff --git a/storage/tokudb/CMakeLists.txt b/storage/tokudb/CMakeLists.txt +index 4cfb177e495f..fd9a4790a7ea 100644 +--- a/storage/tokudb/CMakeLists.txt ++++ b/storage/tokudb/CMakeLists.txt +@@ -5,8 +5,6 @@ + RETURN() + ELSEIF(CMAKE_VERSION VERSION_LESS "2.8.9") + MESSAGE(STATUS "CMake 2.8.9 or higher is required by TokuDB") +-ELSEIF(NOT HAVE_DLOPEN) +- MESSAGE(STATUS "dlopen is required by TokuDB") + ELSEIF(PLUGIN_PERFSCHEMA MATCHES "^NO$") + MESSAGE(STATUS "Performance Schema is required by TokuDB") + RETURN() +@@ -37,8 +35,7 @@ + tokudb_sysvars.cc + tokudb_thread.cc + tokudb_dir_cmd.cc) +-MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY +- COMPONENT tokudb-engine CONFIG ${CMAKE_CURRENT_BINARY_DIR}/tokudb.cnf) ++MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY COMPONENT Server) + + IF(NOT TARGET tokudb) + RETURN() +@@ -57,27 +54,6 @@ + GET_FILENAME_COMPONENT(LIBJEMALLOC_PATH ${LIBJEMALLOC_SO} REALPATH CACHE) + ENDIF() + +-IF(LIBJEMALLOC_PATH AND (RPM OR DEB)) +- 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-shadow") + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-vla" DEBUG) + MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough") +@@ -154,7 +130,7 @@ + INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/${TOKU_FT_DIR_NAME}/portability) + + TARGET_LINK_LIBRARIES(tokudb tokufractaltree_static tokuportability_static +- ${ZLIB_LIBRARY} ${LIBJEMALLOC} stdc++) ++ ${ZLIB_LIBRARY} stdc++) + + SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -flto -fuse-linker-plugin") + SET(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} -flto -fuse-linker-plugin") +diff --git a/storage/tokudb/PerconaFT/tools/CMakeLists.txt b/storage/tokudb/PerconaFT/tools/CMakeLists.txt +index f11b9f350d72..e62931524c9d 100644 +--- a/storage/tokudb/PerconaFT/tools/CMakeLists.txt ++++ b/storage/tokudb/PerconaFT/tools/CMakeLists.txt +@@ -12,5 +12,5 @@ endforeach(tool) + # link in math.h library just for this tool. + target_link_libraries(ftverify m) + +-install(TARGETS tokuftdump DESTINATION ${INSTALL_BINDIR} COMPONENT tokudb-engine) +-install(TARGETS tokuft_logprint DESTINATION ${INSTALL_BINDIR} COMPONENT tokudb-engine) ++install(TARGETS tokuftdump DESTINATION ${INSTALL_BINDIR} COMPONENT Server) ++install(TARGETS tokuft_logprint DESTINATION ${INSTALL_BINDIR} COMPONENT Server) -- cgit v1.2.3-65-gdbad