Bug #34739 | unexpected binlog file name when --log-bin is set to a directory name | ||
---|---|---|---|
Submitted: | 21 Feb 2008 17:45 | Modified: | 12 Mar 2010 17:50 |
Reporter: | Andrei Elkin | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Replication | Severity: | S2 (Serious) |
Version: | 5.1-bk | OS: | Any |
Assigned to: | Daogang Qu | CPU Architecture: | Any |
[21 Feb 2008 17:45]
Andrei Elkin
[22 Feb 2008 7:28]
Jon Stephens
Verified results on SuSE 10.2. I really don't think that we want to create files named '.000001' and '.index', do we? Case 1 (trailing slash): Whether or not we issue a warning (and I'm not sure it's necessary or even appropriate to do so), we should use the pid filename. Case 2 (no trailing slash): The portion following the final slash in the path should be treated as the base filename.
[9 Jul 2008 8:01]
Geert Vanderkelen
And verified with 5.1 from bazaar tree today. Really shouldn't make hidden files like that.
[29 Oct 2009 3:49]
Daogang Qu
The following error is not exist: 2. if there is no "/" symbol there is File '$dir.index' not found (Errcode: 13) error, where $dir is the path to the directory The binlog file name is extracted rightly as 'master-bin' base name, Please check the following test result: daogangqu@daogangqu-desktop:/var/tmp$ ls -a . .. master-bin.000003 master-bin.000007 master-bin.000011 master-bin.000012 master-bin.index daogangqu@daogangqu-desktop:/var/tmp$ The above test result is produced by executing the following command: ./mtr rpl_view --mysqld=--log-bin=/var/tmp/master-bin --record
[29 Oct 2009 7:23]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/88558 3165 Dao-Gang.Qu@sun.com 2009-10-29 Bug #34739 unexpected binlog file name when --log-bin is set to a directory name If --log-bin is set to a directory name with the trailing "/", the bare name of the binlog is empty so that the created files named '.000001' and '.index'. It is not expected. To resolve the problem, the program should report an error and aborte, so that the user can get a clear prompt for correcting it in time. @ sql/mysqld.cc Add a check for the value of the --log-bin argument, if it's a directory, reports an error and aborts.
[29 Oct 2009 7:31]
Daogang Qu
The above patch is tested by the following test case: daogangqu@daogangqu-desktop:~/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test$ ./mtr rpl_view --mysqld=--log-bin=/var/tmp/ --record Logging: ./mtr rpl_view --mysqld=--log-bin=/var/tmp/ --record 091029 14:52:53 [Note] Plugin 'FEDERATED' is disabled. 091029 14:52:53 [Note] Plugin 'ndbcluster' is disabled. MySQL Version 5.1.41 Checking supported features... - using ndbcluster when necessary, mysqld supports it - SSL connections supported - binaries are debug compiled Collecting tests... - adding combinations for rpl vardir: /home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test/var Checking leftover processes... Removing old var directory... Creating var directory '/home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test/var'... Installing system database... Using server port 37038 worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009 ============================================================================== TEST RESULT TIME (ms) ------------------------------------------------------------ worker[1] mysql-test-run: WARNING: Process [mysqld.1 - pid: 14063, winpid: 14063, exit: 256] died rpl.rpl_view 'row' [ fail ] Test ended at 2009-10-29 14:52:54 Server log is: 091029 9:52:54 [ERROR] File '/var/tmp/' is a directory not a file name, please specify a file name, like '/var/tmp/master-bin', for the --log-bin's path. 091029 9:52:54 [ERROR] Aborting 091029 9:52:54 [Note] Debug sync points hit: 0 091029 9:52:54 [Note] Debug sync points executed: 0 091029 9:52:54 [Note] Debug sync points max active per thread: 0 091029 9:52:54 [Note] /home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/sql/mysqld: Shutdown complete
[29 Oct 2009 9:12]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/88566 3165 Dao-Gang.Qu@sun.com 2009-10-29 Bug #34739 unexpected binlog file name when --log-bin is set to a directory name If --log-bin is set to a directory name with the trailing 'FN_LIBCHAR', which will be '/' on Unix like systems, and '\\' on Windows like systems. the basename of the binlog is empty so that the created files named '.000001' and '.index'. It is not expected. To resolve the problem, the program should report an error and abort. @ sql/mysqld.cc Added a check for the value of the --log-bin argument, if it's a directory, reports an error and aborts.
[30 Oct 2009 2:38]
Daogang Qu
The above patch is tested by the following test case: daogangqu@daogangqu-desktop:~/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test$ ./mtr rpl_view --mysqld=--log-bin=/var/tmp/ --record Logging: ./mtr rpl_view --mysqld=--log-bin=/var/tmp/ --record 091029 16:49:07 [Note] Plugin 'FEDERATED' is disabled. 091029 16:49:07 [Note] Plugin 'ndbcluster' is disabled. MySQL Version 5.1.41 Checking supported features... - using ndbcluster when necessary, mysqld supports it - SSL connections supported - binaries are debug compiled Collecting tests... - adding combinations for rpl vardir: /home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test/var Checking leftover processes... Removing old var directory... Creating var directory '/home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test/var'... Installing system database... Using server port 60298 worker[1] - 'localhost:13000' was not free worker[1] Using MTR_BUILD_THREAD 301, with reserved ports 13010..13019 ============================================================================== TEST RESULT TIME (ms) ------------------------------------------------------------ worker[1] mysql-test-run: WARNING: Process [mysqld.1 - pid: 18822, winpid: 18822, exit: 256] died rpl.rpl_view 'row' [ fail ] Test ended at 2009-10-29 16:49:08 Server log is: 091029 11:49:08 [ERROR] Path '/var/tmp/' is a directory name, please specify a file name for --log-bin option 091029 11:49:08 [ERROR] Aborting 091029 11:49:08 [Note] Debug sync points hit: 0 091029 11:49:08 [Note] Debug sync points executed: 0 091029 11:49:08 [Note] Debug sync points max active per thread: 0 091029 11:49:08 [Note] /home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/sql/mysqld: Shutdown complete
[3 Nov 2009 5:39]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/89024 3165 Dao-Gang.Qu@sun.com 2009-11-03 Bug #34739 unexpected binlog file name when --log-bin is set to a directory name If --log-bin is set to a directory name with the trailing 'FN_LIBCHAR', which will be '/' on Unix like systems, and '\\' on Windows like systems. the basename of the binlog is empty so that the created files named '.000001' and '.index'. It is not expected. The same thing happened to --log-bin-index, --relay-log and --relay-log-index options. To resolve the problem, in these cases the program should report an error and abort. @ sql/mysqld.cc Added a check for the value of the --log-bin and --log-bin-index arguments, if it's a directory, reports an error and aborts. @ sql/rpl_rli.cc Added a check for the value of the --relay-log and --relay-log-index arguments, if it's a directory, reports an error and aborts.
[3 Nov 2009 7:25]
Daogang Qu
The above patch is tested by the following test cases: Testing --relay-log option as the following test1: daogangqu@daogangqu-desktop:~/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test$ ./mtr rpl_trigger --mysqld=--relay-log=/var/tmp/ --record ...... ============================================================================== TEST RESULT TIME (ms) ------------------------------------------------------------ rpl.rpl_trigger 'row' [ skipped ] Doesn't support --binlog-format='row' rpl.rpl_trigger 'row+innodb_plugin' [ skipped ] Doesn't support --binlog-format='row' rpl.rpl_trigger 'stmt' [ fail ] Test ended at 2009-11-03 10:53:50 CURRENT_TEST: rpl.rpl_trigger mysqltest: In included file "./include/master-slave-reset.inc": At line 35: query 'start slave' failed: 1201: Could not initialize master info structure; more error messages can be found in the MySQL error log daogangqu@daogangqu-desktop:~/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test$ cat var/log/mysqld.2.err ...... 091103 5:53:49 [ERROR] Path '/var/tmp/' is a directory name, please specify a file name for --relay-log option 091103 5:53:49 [ERROR] Failed to initialize the master info structure 091103 5:53:49 [Note] Event Scheduler: Loaded 0 events 091103 5:53:49 [Note] /home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/sql/mysqld: ready for connections. Version: '5.1.41-debug-log' socket: '/home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test/var/tmp/mysqld.2.sock' port: 13041 Source distribution 091103 5:53:50 [ERROR] Path '/var/tmp/' is a directory name, please specify a file name for --relay-log option Testing --relay-log-index option as the following test2: daogangqu@daogangqu-desktop:~/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test$ ./mtr rpl_trigger --mysqld=--relay-log-index=/var/tmp/ --record ...... ============================================================================== TEST RESULT TIME (ms) ------------------------------------------------------------ rpl.rpl_trigger 'row' [ skipped ] Doesn't support --binlog-format='row' rpl.rpl_trigger 'row+innodb_plugin' [ skipped ] Doesn't support --binlog-format='row' rpl.rpl_trigger 'stmt' [ fail ] Test ended at 2009-11-03 11:00:19 CURRENT_TEST: rpl.rpl_trigger mysqltest: In included file "./include/master-slave-reset.inc": At line 35: query 'start slave' failed: 1201: Could not initialize master info structure; more error messages can be found in the MySQL error log daogangqu@daogangqu-desktop:~/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test$ cat var/log/mysqld.2.err ...... 091103 6:00:19 InnoDB: Started; log sequence number 0 0 091103 6:00:19 [ERROR] Path '/var/tmp/' is a directory name, please specify a file name for --relay-log-index option 091103 6:00:19 [ERROR] Failed to initialize the master info structure 091103 6:00:19 [Note] Event Scheduler: Loaded 0 events 091103 6:00:19 [Note] /home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/sql/mysqld: ready for connections. Version: '5.1.41-debug-log' socket: '/home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test/var/tmp/mysqld.2.sock' port: 13041 Source distribution 091103 6:00:19 [ERROR] Path '/var/tmp/' is a directory name, please specify a file name for --relay-log-index option Testing --log-bin-index option as the following test3: daogangqu@daogangqu-desktop:~/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test$ ./mtr rpl_view --mysqld=--log-bin-index=/var/tmp/ --record ...... ============================================================================== TEST RESULT TIME (ms) ------------------------------------------------------------ rpl.rpl_view 'stmt' [ skipped ] Doesn't support --binlog-format='statement' rpl.rpl_view 'mix' [ skipped ] Doesn't support --binlog-format='mixed' worker[1] mysql-test-run: WARNING: Process [mysqld.1 - pid: 4135, winpid: 4135, exit: 256] died rpl.rpl_view 'row' [ fail ] Test ended at 2009-11-03 11:17:47 Server log is: 091103 6:17:47 [ERROR] Path '/var/tmp/' is a directory name, please specify a file name for --log-bin-index option 091103 6:17:47 [ERROR] Aborting 091103 6:17:47 [Note] Debug sync points hit: 0 091103 6:17:47 [Note] Debug sync points executed: 0 091103 6:17:47 [Note] Debug sync points max active per thread: 0 091103 6:17:47 [Note] /home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/sql/mysqld: Shutdown complete Testing --log-bin option as the following test4: daogangqu@daogangqu-desktop:~/mysql/bzrwork/bug34739/mysql-5.1-bugteam/mysql-test$ ./mtr rpl_view --mysqld=--log-bin=/var/tmp/ --record ...... ============================================================================== TEST RESULT TIME (ms) ------------------------------------------------------------ rpl.rpl_view 'stmt' [ skipped ] Doesn't support --binlog-format='statement' rpl.rpl_view 'mix' [ skipped ] Doesn't support --binlog-format='mixed' worker[1] mysql-test-run: WARNING: Process [mysqld.1 - pid: 4156, winpid: 4156, exit: 256] died rpl.rpl_view 'row' [ fail ] Test ended at 2009-11-03 11:18:43 Server log is: 091103 6:18:43 [ERROR] Path '/var/tmp/' is a directory name, please specify a file name for --log-bin option 091103 6:18:43 [ERROR] Aborting 091103 6:18:43 [Note] Debug sync points hit: 0 091103 6:18:43 [Note] Debug sync points executed: 0 091103 6:18:43 [Note] Debug sync points max active per thread: 0 091103 6:18:43 [Note] /home/daogangqu/mysql/bzrwork/bug34739/mysql-5.1-bugteam/sql/mysqld: Shutdown complete
[4 Nov 2009 8:27]
Daogang Qu
2. if there is no "/" symbol there is File '$dir.index' not found (Errcode: 13) error, where $dir is the path to the directory The above 'Errcode: 13' error is caused by permission denied. Actually, the case works fine if the directory is writable. Please check the following test result: (The binlog file name is extracted rightly even if the '/var/tmp/master-bin' path is a directory.) daogangqu@daogangqu-desktop:/var/tmp$ ls master-bin master-bin.000003 master-bin.000011 master-bin.index master-bin.000002 master-bin.000007 master-bin.000012 daogangqu@daogangqu-desktop:/var/tmp$ The above test result is produced by executing the following command: ./mtr rpl_view --mysqld=--log-bin=/var/tmp/master-bin --record
[5 Nov 2009 6:10]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/89406 3195 Dao-Gang.Qu@sun.com 2009-11-05 Bug #34739 unexpected binlog file name when --log-bin is set to a directory name If --log-bin is set to a directory name with the trailing 'FN_LIBCHAR', which will be '/' on Unix like systems, and '\\' on Windows like systems. the basename of the binlog is empty so that the created files named '.000001' and '.index'. It is not expected. The same thing happened to --log-bin-index, --relay-log and --relay-log-index options. To resolve the problem, in these cases the program should report an error and abort. @ sql/mysqld.cc Added a check for the value of the --log-bin and --log-bin-index arguments, if it's a directory, reports an error and aborts. @ sql/rpl_rli.cc Added a check for the value of the --relay-log and --relay-log-index arguments, if it's a directory, reports an error and aborts.
[5 Nov 2009 6:37]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/89409 3666 Dao-Gang.Qu@sun.com 2009-11-05 [merge] Bug #34739 unexpected binlog file name when --log-bin is set to a directory name If --log-bin is set to a directory name with the trailing 'FN_LIBCHAR', which will be '/' on Unix like systems, and '\\' on Windows like systems. the basename of the binlog is empty so that the created files named '.000001' and '.index'. It is not expected. The same thing happened to --log-bin-index, --relay-log and --relay-log-index options. To resolve the problem, in these cases the program should report an error and abort. @ sql/mysqld.cc Added a check for the value of the --log-bin and --log-bin-index arguments, if it's a directory, reports an error and aborts. @ sql/rpl_rli.cc Added a check for the value of the --relay-log and --relay-log-index arguments, if it's a directory, reports an error and aborts.
[5 Nov 2009 6:50]
Daogang Qu
The patch has been pushed to mysql-5.1-bugteam and mysql-pe.
[2 Dec 2009 8:06]
Bugs System
Pushed into 5.1.42 (revid:joro@sun.com-20091202080033-mndu4sxwx19lz2zs) (version source revid:kristofer.pettersson@sun.com-20091109223504-xvwgsdqiyuve6frt) (merge vers: 5.1.41) (pib:13)
[4 Dec 2009 1:51]
Paul DuBois
Note in 5.1.42 changelog. If the --log-bin server option was set to a directory name with a trailing component separator character, the basename of the binary log files was empty so that the created files were named .000001 and .index. The same thing occurred with the --log-bin-index, --relay-log, and --relay-log-index options. Now the server reports and error and exits. Setting report to NDI pending push to 5.6.x+.
[16 Dec 2009 8:40]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20091216083311-xorsasf5kopjxshf) (version source revid:alik@sun.com-20091214191830-wznm8245ku8xo702) (merge vers: 6.0.14-alpha) (pib:14)
[16 Dec 2009 8:47]
Bugs System
Pushed into 5.5.0-beta (revid:alik@sun.com-20091216082430-s0gtzibcgkv4pqul) (version source revid:alexey.kopytov@sun.com-20091124081906-6pqi7e7sajimog71) (merge vers: 5.5.0-beta) (pib:14)
[16 Dec 2009 8:54]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20091216083231-rp8ecpnvkkbhtb27) (version source revid:alik@sun.com-20091212203859-fx4rx5uab47wwuzd) (merge vers: 5.6.0-beta) (pib:14)
[16 Dec 2009 15:40]
Paul DuBois
Noted in 5.5.1, 6.0.14 changelogs.
[12 Mar 2010 14:15]
Bugs System
Pushed into 5.1.44-ndb-7.0.14 (revid:jonas@mysql.com-20100312135944-t0z8s1da2orvl66x) (version source revid:jonas@mysql.com-20100312115609-woou0te4a6s4ae9y) (merge vers: 5.1.44-ndb-7.0.14) (pib:16)
[12 Mar 2010 14:31]
Bugs System
Pushed into 5.1.44-ndb-6.2.19 (revid:jonas@mysql.com-20100312134846-tuqhd9w3tv4xgl3d) (version source revid:jonas@mysql.com-20100312060623-mx6407w2vx76h3by) (merge vers: 5.1.44-ndb-6.2.19) (pib:16)
[12 Mar 2010 14:47]
Bugs System
Pushed into 5.1.44-ndb-6.3.33 (revid:jonas@mysql.com-20100312135724-xcw8vw2lu3mijrhn) (version source revid:jonas@mysql.com-20100312103652-snkltsd197l7q2yg) (merge vers: 5.1.44-ndb-6.3.33) (pib:16)