Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.5.42, 10.0.16
Description
Compare behavior in MySQL 5.5, MariaDB 5.5.41 and MariaDB 5.5.42:
MySQL 5.5 |
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$ ls -l | grep var
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$ ls -l /dev/shm/ | grep var
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$ perl ./mtr main.1st --mem
|
Logging: ./mtr main.1st --mem
|
MySQL Version 5.5.42
|
...
|
Creating var directory '/data/repo/git/mysql-5.5/mysql-test/var'...
|
- symlinking 'var' to '/dev/shm/var_auto_UXHl'
|
...
|
Completed: All 1 tests were successful.
|
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$ ls -l | grep var
|
lrwxrwxrwx 1 elenst disk 22 Feb 27 02:52 var -> /dev/shm/var_auto_UXHl
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$ ls -l /dev/shm/ | grep var
|
drwxr-xr-x 8 elenst disk 180 Feb 27 02:52 var_auto_UXHl
|
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$ perl ./mtr main.1st --mem
|
Logging: ./mtr main.1st --mem
|
MySQL Version 5.5.42
|
...
|
Creating var directory '/data/repo/git/mysql-5.5/mysql-test/var'...
|
- symlinking 'var' to '/dev/shm/var_auto_uUQE'
|
...
|
Completed: All 1 tests were successful.
|
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$ ls -l | grep var
|
lrwxrwxrwx 1 elenst disk 22 Feb 27 02:52 var -> /dev/shm/var_auto_uUQE
|
elenst@wheezy-64:~/git/mysql-5.5/mysql-test$ ls -l /dev/shm/ | grep var
|
drwxr-xr-x 8 elenst disk 180 Feb 27 02:52 var_auto_uUQE
|
This is good behavior: a new folder in /dev/shm gets created, the old one gets removed, var points at the new one.
MariaDB 5.5.41 |
elenst@wheezy-64:/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test$ ls -l | grep var
|
elenst@wheezy-64:/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test$ ls -l /dev/shm/ | grep var
|
elenst@wheezy-64:/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test$ perl ./mtr main.1st --mem
|
Logging: ./mtr main.1st --mem
|
vardir: /data/releases/mariadb-5.5.41-linux-x86_64/mysql-test/var
|
Removing old var directory...
|
Creating var directory '/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test/var'...
|
- symlinking 'var' to '/dev/shm/var_auto_frKD'
|
Checking supported features...
|
...
|
Completed: All 1 tests were successful.
|
|
elenst@wheezy-64:/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test$ ls -l | grep var
|
lrwxrwxrwx 1 elenst disk 22 Feb 27 02:56 var -> /dev/shm/var_auto_frKD
|
elenst@wheezy-64:/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test$ ls -l /dev/shm/ | grep var
|
drwxr-xr-x 8 elenst disk 180 Feb 27 02:56 var_auto_frKD
|
|
elenst@wheezy-64:/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test$ perl ./mtr main.1st --mem
|
Logging: ./mtr main.1st --mem
|
vardir: /run/shm/var_auto_frKD
|
Checking leftover processes...
|
Removing old var directory...
|
Creating var directory '/run/shm/var_auto_frKD'...
|
Checking supported features...
|
MariaDB Version 5.5.41-MariaDB
|
...
|
Completed: All 1 tests were successful.
|
|
elenst@wheezy-64:/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test$ ls -l | grep var
|
lrwxrwxrwx 1 elenst disk 22 Feb 27 02:56 var -> /dev/shm/var_auto_frKD
|
elenst@wheezy-64:/data/releases/mariadb-5.5.41-linux-x86_64/mysql-test$ ls -l /dev/shm/ | grep var
|
drwxr-xr-x 8 elenst disk 180 Feb 27 02:56 var_auto_frKD
|
drwx------ 2 elenst disk 40 Feb 27 02:56 var_auto_nlxl
|
It's bad behavior: a new folder gets created, the old one is kept, var points at the old one. Eventually there will be lots of folders in /dev/shm, but it's only marginally dangerous since they all will be empty.
elenst@wheezy-64:~/git/5.5/mysql-test$ ls -l /dev/shm/ | grep var
|
elenst@wheezy-64:~/git/5.5/mysql-test$ perl ./mtr 1st --mem
|
Logging: ./mtr 1st --mem
|
vardir: /data/repo/git/5.5/mysql-test/var
|
Removing old var directory...
|
Creating var directory '/data/repo/git/5.5/mysql-test/var'...
|
- symlinking 'var' to '/dev/shm/var_auto_aE7b'
|
Checking supported features...
|
MariaDB Version 5.5.42-MariaDB-debug
|
...
|
Completed: All 1 tests were successful.
|
|
elenst@wheezy-64:~/git/5.5/mysql-test$ ls -l | grep var
|
lrwxrwxrwx 1 elenst disk 22 Feb 27 02:59 var -> /dev/shm/var_auto_aE7b
|
elenst@wheezy-64:~/git/5.5/mysql-test$ ls -l /dev/shm/ | grep var
|
drwxr-xr-x 9 elenst disk 200 Feb 27 02:59 var_auto_aE7b
|
|
elenst@wheezy-64:~/git/5.5/mysql-test$ perl ./mtr 1st --mem
|
Logging: ./mtr 1st --mem
|
vardir: /run/shm/var_auto_aE7b
|
Checking leftover processes...
|
Removing old var directory...
|
Creating var directory '/run/shm/var_auto_aE7b'...
|
- symlinking 'var' to '/dev/shm/var_auto_Ex34'
|
Checking supported features...
|
MariaDB Version 5.5.42-MariaDB-debug
|
...
|
Completed: All 1 tests were successful.
|
|
elenst@wheezy-64:~/git/5.5/mysql-test$ ls -l | grep var
|
lrwxrwxrwx 1 elenst disk 22 Feb 27 02:59 var -> /dev/shm/var_auto_aE7b
|
elenst@wheezy-64:~/git/5.5/mysql-test$ ls -l /dev/shm/ | grep var
|
lrwxrwxrwx 1 elenst disk 22 Feb 27 02:59 var_auto_aE7b -> /dev/shm/var_auto_Ex34
|
drwxr-xr-x 9 elenst disk 200 Feb 27 02:59 var_auto_Ex34
|
This is awful behavior: a new folder gets created, instead of the old folder a link with the same name points at the new folder, var points at the old folder (now a link). Soon enough the chain becomes too long and further tests refuse to run.
At least the old behavior should be restored. Better still, it should work the way MySQL does.
serg,
Could you please take a look?
http://lists.askmonty.org/pipermail/commits/2015-March/007508.html
I ran it through buildbot and also tried an out-of-source build, but there can always be some corner cases I didn't think of.