Bug #15021 binlog_index table become inconsistent if errors during purge of binlogs
Submitted: 17 Nov 2005 15:08 Modified: 7 Dec 2006 5:42
Reporter: Jonathan Miller Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Replication Severity:S3 (Non-critical)
Version:5.1.2 OS:Linux (Linux)
Assigned to: david li CPU Architecture:Any

[17 Nov 2005 15:08] Jonathan Miller
Description:
Due to http://bugs.mysql.com/15019 the binlog_index table become inconsistent with the number of purge files left.

Many more rows above:
<cut>
|      102 | /space/var/master1.005632 | 1154103 |    9536 |       0 |       8 |         0 |
|      102 | /space/var/master1.005633 | 1154110 |    9358 |       0 |       8 |         0 |
|      102 | /space/var/master1.005634 | 1154117 |    9526 |       0 |       8 |         0 |
|      102 | /space/var/master1.005635 | 1154118 |       1 |       0 |       0 |         0 |
|      419 | /space/var/master1.005635 | 1154124 |    9423 |       0 |       8 |         0 |
|      102 | /space/var/master1.005636 | 1154125 |       1 |       0 |       0 |         0 |
|      419 | /space/var/master1.005636 | 1154131 |    9534 |       0 |       8 |         0 |
|      102 | /space/var/master1.005637 | 1154132 |       1 |       0 |       0 |         0 |
|      419 | /space/var/master1.005637 | 1154139 |    9486 |       0 |       8 |         0 |
|      102 | /space/var/master1.005638 | 1154146 |    9366 |       0 |       8 |         0 |
|      102 | /space/var/master1.005639 | 1154153 |    9497 |       0 |       8 |         0 |
|      102 | /space/var/master1.005640 | 1154160 |    9533 |       0 |       8 |         0 |
|      102 | /space/var/master1.005641 | 1154167 |    9486 |       0 |       8 |         0 |
|      102 | /space/var/master1.005642 | 1154168 |       1 |       0 |       0 |         0 |
|      419 | /space/var/master1.005642 | 1154173 |    9516 |       0 |       8 |         0 |
|      102 | /space/var/master1.005643 | 1154178 |    9478 |       0 |       8 |         0 |
|      102 | /space/var/master1.005644 | 1154179 |       1 |       0 |       0 |         0 |
+----------+---------------------------+---------+---------+---------+---------+-----------+
471 rows in set (0.01 sec)
<cut>

If you look at the directory, you see:

drwx------  2 ndbdev ndbdev      4096 Nov  2 20:20 BANK
drwx------  2 ndbdev ndbdev      4096 Nov  2 17:39 cluster_replication
drwx------  2 ndbdev ndbdev      4096 Nov  8 16:43 hlr
-rw-rw----  1 ndbdev ndbdev         6 Nov 16 18:28 hostname.pid1
-rw-rw----  1 ndbdev ndbdev  85983232 Nov 16 19:06 ibdata1
-rw-rw----  1 ndbdev ndbdev   5242880 Nov 16 19:06 ib_logfile0
-rw-rw----  1 ndbdev ndbdev   5242880 Nov 16 18:43 ib_logfile1
-rw-rw----  1 ndbdev ndbdev    154520 Nov 17 04:30 master1.005645
-rw-rw----  1 ndbdev ndbdev    152275 Nov 17 04:30 master1.005646
-rw-rw----  1 ndbdev ndbdev    152527 Nov 17 04:30 master1.005647
-rw-rw----  1 ndbdev ndbdev    152925 Nov 17 04:30 master1.005648
-rw-rw----  1 ndbdev ndbdev    152410 Nov 17 04:30 master1.005649
-rw-rw----  1 ndbdev ndbdev    152207 Nov 17 04:30 master1.005650
-rw-rw----  1 ndbdev ndbdev    154500 Nov 17 04:31 master1.005651
-rw-rw----  1 ndbdev ndbdev    153680 Nov 17 04:31 master1.005652
-rw-rw----  1 ndbdev ndbdev    153605 Nov 17 04:31 master1.005653
-rw-rw----  1 ndbdev ndbdev    154042 Nov 17 04:31 master1.005654
-rw-rw----  1 ndbdev ndbdev    152727 Nov 17 04:31 master1.005655
-rw-rw----  1 ndbdev ndbdev       102 Nov 17 04:31 master1.005656
-rw-rw----  1 ndbdev ndbdev    153260 Nov 17 04:30 master1.1
-rw-rw----  1 ndbdev ndbdev    101844 Nov 17 04:30 master1.err
-rw-rw----  1 ndbdev ndbdev         0 Nov 17 01:26 master1.err-old
-rw-rw----  1 ndbdev ndbdev    744967 Nov 16 16:30 master1.err-old.1
-rw-rw----  1 ndbdev ndbdev       333 Nov 17 04:31 master1.index
-rw-rw----  1 ndbdev ndbdev 124604851 Nov 17 04:41 master1.log
drwx------  2 ndbdev ndbdev      4096 Nov  2 17:38 mysql
drwx------  2 ndbdev ndbdev      4096 Nov  2 17:38 test
drwx------  2 ndbdev ndbdev      4096 Nov 16 19:07 TPCB
[root@ndb08 var]#

Notice that /space/var/master1.005632 and other nolonger exists in the directory.

How to repeat:
See http://bugs.mysql.com/15019
[20 Apr 2006 8:23] Tomas Ulin
I don't see this as a critical error.

I does not corrupt the users data, it leaves stray rows in the binlog index, rows that can be removed manually

It does not an any serious way affect the user as I can see it
therefore chaging the prio
[26 Sep 2006 3:14] 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/12509

ChangeSet@1.2289, 2006-09-26 11:14:58+08:00, dli@dev3-76.dev.cn.tlan +6 -0
  fixed for BUG#15021, if EMFILE error occured while purging binary logs, stop purging logs and report error message to user.
[13 Oct 2006 1:56] 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/13639

ChangeSet@1.2299, 2006-10-13 09:54:39+08:00, dli@dev3-76.dev.cn.tlan +6 -0
  ndb - fixed for BUG#15021, binglog_index table become inconsistent if errors during purge of binlogs.
  if EMFILE error occured while purging binary logs, stop purging logs and report error message to user.
[13 Oct 2006 4:45] 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/13640

ChangeSet@1.2310, 2006-10-13 12:48:05+08:00, dli@dev3-76.dev.cn.tlan +6 -0
  ndb - fixed for BUG#15021, binlog_index table become inconsistent if errors during purge of binlogs.
  if EMFILE error occured while purging binary logs, stop purging logs and report error message to user.
[28 Nov 2006 3:11] 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/15917

ChangeSet@1.2323, 2006-11-28 11:14:36+08:00, dli@dev3-76.dev.cn.tlan +1 -0
  ndb - fiexed for bug#15021, binlog_index table become inconsistent if errors during purge of binlogs.
  
  improved the original patch, changed if/else to switch/case.
[30 Nov 2006 9:08] david li
pushed into 5.1-new-ndb-bj tree.
[7 Dec 2006 5:42] Jon Stephens
Thank you for your bug report. This issue has been committed to our source repository of that product and will be incorporated into the next release.

If necessary, you can access the source repository and build the latest available version, including the bug fix. More information about accessing the source trees is available at

    http://dev.mysql.com/doc/en/installing-source.html

Documented bugfix in 5.1.14 changelog.