Bug #89494 MTR test main.basedir fails intermittently
Submitted: 1 Feb 2018 8:51 Modified: 26 Mar 2018 14:24
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Tests Severity:S3 (Non-critical)
Version:8.0.4 OS:Any
Assigned to: CPU Architecture:Any

[1 Feb 2018 8:51] Laurynas Biveinis
Description:
main.basedir                             w3 [ fail ]
        Test ended at 2018-01-30 08:57:22

CURRENT_TEST: main.basedir
mysqltest: At line 210: command "force-rmdir" failed with error 1. my_errno=39

This is interesting because 39 is ENOTEMPTY, exactly the situation which force_rmdir should be able to handle over regular rmdir. Looking at its implementation, a possibility is a race condition between mysqltest.cc:do_force_rmdir recursive deleting and something creating files/dirs there in parallel.

How to repeat:
Not sure, maybe MTR --repeat --parallel

Suggested fix:
If the bug is not clear, as a first step do_force_rmdir could be patched to print what's there in the directory on ENOTEMPTY
[23 Mar 2018 8:56] MySQL Verification Team
Hello Laurynas,

Thank you for the report and feedback.
I tried reproduce this on almost all available instances(OL7, Ubuntu, CentOS7 etc with src debug builds - mysql-boost-8.0.4-rc.tar.gz - built for Bug #89533) but not seeing any issues. Could you please provide exact cmake with the options used? Thanks!

Regards,
Umesh
[23 Mar 2018 13:38] MySQL Verification Team
## 
ushastry@ArtfulAardvark:~/Downloads$ cmake --version
cmake version 3.9.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
ushastry@ArtfulAardvark:~/Downloads$ gcc --version
gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ushastry@ArtfulAardvark:~/Downloads$ uname -aa
Linux ArtfulAardvark 4.13.0-36-generic #40-Ubuntu SMP Fri Feb 16 20:07:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
ushastry@ArtfulAardvark:~/Downloads$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.10
DISTRIB_CODENAME=artful
DISTRIB_DESCRIPTION="Ubuntu 17.10"
NAME="Ubuntu"
VERSION="17.10 (Artful Aardvark)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 17.10"
VERSION_ID="17.10"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=artful
UBUNTU_CODENAME=artful

ushastry@ArtfulAardvark:~/Downloads/mysql-8.0.4-rc$ cmake .  -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost -DWITH_ASAN=ON -DWITH_UBSAN=ON -DWITH_DEBUG=1 -DCMAKE_INSTALL_PREFIX=/home/ushastry/Downloads/8_4_ASAN_UBSAN
ushastry@ArtfulAardvark:~/Downloads/mysql-8.0.4-rc$ make -j8
ushastry@ArtfulAardvark:~/Downloads/mysql-8.0.4-rc$ make install

ushastry@ArtfulAardvark:~/Downloads$ cd 8_4_ASAN_UBSAN/
ushastry@ArtfulAardvark:~/Downloads/8_4_ASAN_UBSAN$ cd mysql-test/
ushastry@ArtfulAardvark:~/Downloads/8_4_ASAN_UBSAN/mysql-test$ cd ..
ushastry@ArtfulAardvark:~/Downloads/8_4_ASAN_UBSAN$ cat docs/INFO_SRC
commit: 73b6cff33896a3cd0f0d02d6c30fdaed8b562cf3
date: 2018-01-18 16:43:56 +0100
build-date: 2018-01-18 16:53:08 +0100
short: 73b6cff
branch: mysql-8.0.4-rc-release

MySQL source 8.0.4
ushastry@ArtfulAardvark:~/Downloads/8_4_ASAN_UBSAN$ cd mysql-test/

ushastry@ArtfulAardvark:~/Downloads/8_4_ASAN_UBSAN/mysql-test$ ./mtr main.basedir
Logging: ./mtr  main.basedir
2018-03-23T12:51:10.940731Z 0 [System] [MY-010116] /home/ushastry/Downloads/8_4_ASAN_UBSAN/bin/mysqld (mysqld 8.0.4-rc-debug-log-asan-ubsan) starting as process 19573 ...
MySQL Version 8.0.4
Checking supported features...
 - SSL connections supported
 - binaries are debug compiled
Collecting tests...
Checking leftover processes...
Removing old var directory...
Creating var directory '/home/ushastry/Downloads/8_4_ASAN_UBSAN/mysql-test/var'...
Installing system database...
Using parallel: 1

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
main.basedir                             [ pass ]  218555
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 218.555 of 329 seconds executing testcases

Completed: All 1 tests were successful.

ushastry@ArtfulAardvark:~/Downloads/8_4_ASAN_UBSAN/mysql-test$ ./mtr --repeat=25 --parallel=25 main.basedir
Logging: ./mtr  --repeat=25 --parallel=25 main.basedir
2018-03-23T13:13:11.946258Z 0 [System] [MY-010116] /home/ushastry/Downloads/8_4_ASAN_UBSAN/bin/mysqld (mysqld 8.0.4-rc-debug-log-asan-ubsan) starting as process 20721 ...
MySQL Version 8.0.4
Checking supported features...
 - SSL connections supported
 - binaries are debug compiled
Collecting tests...
Checking leftover processes...
Removing old var directory...
Creating var directory '/home/ushastry/Downloads/8_4_ASAN_UBSAN/mysql-test/var'...
Installing system database...
Using parallel: 1

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
main.basedir                             [ pass ]  208693
main.basedir                             [ pass ]  223877
main.basedir                             [ pass ]  221275
main.basedir                             [ pass ]  206754
main.basedir                             [ pass ]  223449
.
Completed: All 1 tests were successful.
[23 Mar 2018 13:51] MySQL Verification Team
Looks like parallel was ignored, will re-run.
[26 Mar 2018 7:53] Laurynas Biveinis
Umesh -

This could be verified as a feature request to patch do_force_rmdir to print what's there in the directory on ENOTEMPTY error.
[26 Mar 2018 14:24] MySQL Verification Team
Thank you, Laurynas.
Verifying as a feature request to patch do_force_rmdir to print what's there in the directory on ENOTEMPTY erro.

Regards,
Umesh