Merge lp:~tplavcic/percona-server/bug1382069-5.6 into lp:percona-server/5.6

Proposed by Tomislav Plavcic
Status: Merged
Approved by: Laurynas Biveinis
Approved revision: no longer in the source branch.
Merged at revision: 687
Proposed branch: lp:~tplavcic/percona-server/bug1382069-5.6
Merge into: lp:percona-server/5.6
Diff against target: 62 lines (+18/-14)
1 file modified
scripts/mysqld_safe.sh (+18/-14)
To merge this branch: bzr merge lp:~tplavcic/percona-server/bug1382069-5.6
Reviewer Review Type Date Requested Status
Laurynas Biveinis (community) Approve
Review via email: mp+239019@code.launchpad.net

Description of the change

Mysqld_safe was loading system jemalloc if installed no matter if user specified another malloc lib - so it was possible that it tries to load 2 libs. Also there was no possibility to disable loading of system jemalloc.
With this change system jemalloc is only loaded if no other lib is specified and if user specifies "malloc-lib=" nothing will be loaded.

Param job is here:
http://jenkins.percona.com/view/PS%205.6/job/percona-server-5.6-param/742/

Some testing:
TEST1: nothing in my.cnf (automatically loads system jemalloc)
======
vagrant@t-ubuntu14:~$ sudo /usr/bin/mysqld_safe
141021 00:47:57 mysqld_safe Adding '/usr/lib/x86_64-linux-gnu/libjemalloc.so.1' to LD_PRELOAD for mysqld
141021 00:47:57 mysqld_safe Logging to '/var/log/mysql/error.log'.
141021 00:47:57 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

TEST2: malloc-lib= (loads nothing)
======
vagrant@t-ubuntu14:~$ sudo /usr/bin/mysqld_safe
141021 00:54:35 mysqld_safe Logging to '/var/log/mysql/error.log'.
141021 00:54:35 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

TEST3: malloc-lib=/home/vagrant/ps/lib/mysql/libjemalloc.so.1 (loads only specified lib)
======
vagrant@t-ubuntu14:~$ sudo /usr/bin/mysqld_safe
141021 00:55:57 mysqld_safe Adding '/home/vagrant/ps/lib/mysql/libjemalloc.so.1' to LD_PRELOAD for mysqld
141021 00:55:57 mysqld_safe Logging to '/var/log/mysql/error.log'.
141021 00:55:57 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'scripts/mysqld_safe.sh'
2--- scripts/mysqld_safe.sh 2014-05-13 20:23:41 +0000
3+++ scripts/mysqld_safe.sh 2014-10-21 08:13:52 +0000
4@@ -17,6 +17,7 @@
5 niceness=0
6 mysqld_ld_preload=
7 mysqld_ld_library_path=
8+load_jemalloc=1
9 flush_caches=0
10 numa_interleave=0
11
12@@ -214,7 +215,10 @@
13 # mysqld_safe-specific options - must be set in my.cnf ([mysqld_safe])!
14 --core-file-size=*) core_file_size="$val" ;;
15 --ledir=*) ledir="$val" ;;
16- --malloc-lib=*) set_malloc_lib "$val" ;;
17+ --malloc-lib=*)
18+ set_malloc_lib "$val"
19+ load_jemalloc=0
20+ ;;
21 --mysqld=*) MYSQLD="$val" ;;
22 --mysqld-version=*)
23 if test -n "$val"
24@@ -375,19 +379,6 @@
25
26
27 #
28-# Add jemalloc to ld_preload - needed for TokuDB
29-#
30-for libjemall in "/usr/lib64" "/usr/lib/x86_64-linux-gnu" "/usr/lib"
31-do
32-if test -f "$libjemall/libjemalloc.so.1"
33-then
34- add_mysqld_ld_preload "$libjemall/libjemalloc.so.1"
35- break
36-fi
37-done
38-
39-
40-#
41 # First, try to find BASEDIR and ledir (where mysqld is)
42 #
43
44@@ -517,6 +508,19 @@
45 parse_arguments PICK-ARGS-FROM-ARGV "$@"
46
47 #
48+# Add jemalloc to ld_preload if no other malloc forced - needed for TokuDB
49+#
50+if test $load_jemalloc -eq 1
51+then
52+ for libjemall in "/usr/lib64" "/usr/lib/x86_64-linux-gnu" "/usr/lib"; do
53+ if [ -r "$libjemall/libjemalloc.so.1" ]; then
54+ add_mysqld_ld_preload "$libjemall/libjemalloc.so.1"
55+ break
56+ fi
57+ done
58+fi
59+
60+#
61 # Try to find the plugin directory
62 #
63

Subscribers

People subscribed via source and target branches