Bug #30067 DISCOVER TABLE Event: Takes too long after Incorrect info error
Submitted: 26 Jul 2007 12:42
Reporter: Jonathan Miller Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S5 (Performance)
Version:mysql-5.1-telco-6.2 OS:Linux (32)
Assigned to: CPU Architecture:Any

[26 Jul 2007 12:42] Jonathan Miller
Description:
Hi,

It seems that it is taking up to 2 seconds for the DISCOVER TABLE Event: to happen after a remote (i.e. not the mysqld to do alter) MySQLD gets  [ERROR] ./libexec/mysqld: Incorrect information in file: './TABLE_ALTER/t1.frm'

2 Seconds is a life time in the grand scheme of things. 

4:10:50 [ERROR] /home/ndbdev/jmiller/builds/libexec/mysqld: Incorrect informati
le: './TABLE_ALTER/t1.frm'
4:10:52 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$TABLE_ALTER/t1
4:10:52 [Note] NDB Binlog: logging ./TABLE_ALTER/t1
nd 3 NdbTransaction's that have not been released
nd 2 NdbReceiver's that have not been released
4:11:07 [Note] NDB Binlog: drop table ./TABLE_ALTER/t1.
4:11:08 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$TABLE_ALTER/t1
4:11:09 [Note] NDB Binlog: logging ./TABLE_ALTER/t1
4:11:09 [Note] NDB Binlog: drop table ./TABLE_ALTER/t1.
4:11:11 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$TABLE_ALTER/t1
4:11:11 [Note] NDB Binlog: logging ./TABLE_ALTER/t1
4:11:22 [ERROR] /home/ndbdev/jmiller/builds/libexec/mysqld: Incorrect informati
le: './TABLE_ALTER/t1.frm'
4:11:24 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$TABLE_ALTER/t1
4:11:24 [Note] NDB Binlog: logging ./TABLE_ALTER/t1
nd 3 NdbTransaction's that have not been released
nd 2 NdbReceiver's that have not been released
4:11:40 [Note] NDB Binlog: drop table ./TABLE_ALTER/t1.
4:11:41 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$TABLE_ALTER/t1
4:11:41 [Note] NDB Binlog: logging ./TABLE_ALTER/t1
4:11:42 [Note] NDB Binlog: drop table ./TABLE_ALTER/t1.
4:11:43 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$TABLE_ALTER/t1
4:11:43 [Note] NDB Binlog: logging ./TABLE_ALTER/t1
4:11:54 [ERROR] /home/ndbdev/jmiller/builds/libexec/mysqld: Incorrect informati
le: './TABLE_ALTER/t1.frm'
4:11:56 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$TABLE_ALTER/t1
4:11:56 [Note] NDB Binlog: logging ./TABLE_ALTER/t1
nd 3 NdbTransaction's that have not been released
nd 2 NdbReceiver's that have not been released
4:12:12 [Note] NDB Binlog: drop table ./TABLE_ALTER/t1.
4:12:13 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$TABLE_ALTER/t1
4:12:13 [Note] NDB Binlog: logging ./TABLE_ALTER/t1
08.err" [readonly] 14485L, 1746293C                          14160,1       97% 

How to repeat:
Start an update or insert program against one MySQLD. Have to program sleep 3 seconds on error. On a different MySQLD connected to same cluster, alter the table being updated/inserted to and add a column.

Suggested fix:
We should try to get this down to happening under 1 second. (ms would be best)