[MDEV-7643] MTR creates nested links when tests are run with --mem Created: 2015-02-27  Updated: 2015-03-09  Resolved: 2015-03-09

Status: Closed
Project: MariaDB Server
Component/s: Tests
Affects Version/s: 5.5.42, 10.0.16
Fix Version/s: 5.5.43, 10.0.18

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Elena Stepanova
Resolution: Fixed Votes: 0
Labels: regression, verified


 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.



 Comments   
Comment by Elena Stepanova [ 2015-03-02 ]

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.

Comment by Sergei Golubchik [ 2015-03-09 ]

ok to push

Comment by Elena Stepanova [ 2015-03-09 ]

Pushed into 5.5:
https://github.com/MariaDB/server/commit/34f37aa0c0aa87cfb6908500e937516ff37ea6f0

Generated at Thu Feb 08 07:21:10 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.