Bug #43632 MT+DD use of uninitalized table object during UNDO-execution, if table dropped
Submitted: 13 Mar 2009 13:46 Modified: 15 Apr 2009 2:28
Reporter: Jonas Oreland Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S3 (Non-critical)
Version:6.4 OS:Any
Assigned to: Jonas Oreland CPU Architecture:Any

[13 Mar 2009 13:46] Jonas Oreland
Description:
DbtupProxy uses getInstanceKey, wo/ knowing if table is dropped or not
This leads to crash in DIH

2009-03-13 14:42:32 [ndbd] INFO     -- dbdih/DbdihMain.cpp
2009-03-13 14:42:32 [ndbd] INFO     -- DBDIH (Line: 8419) 0x00000002
2009-03-13 14:42:32 [ndbd] INFO     -- Error handler startup shutting down system
2009-03-13 14:42:32 [ndbd] INFO     -- Error handler shutdown completed - aborting

How to repeat:
run follwing on 1-node ndbmtd

create_tab D1 D2
hugoLoad -r 1000 D1; hugoLoad -r 1000 D2

echo "checkpoint"
ndb_mgm -e "all dump 7099"
sleep 10

ndb_delete_all D1 D2
ndb_drop_table D1 D2

ndb_mgm -e "all restart -a"

Suggested fix:
why not store instance key on diskpage ?
if that deemed to important,
dbtup-proxy must keep state of which tables are created/dropped
(which it can since it's proxying create-drop-table)
[13 Mar 2009 13:48] Jonas Oreland
this also affects autotest
testSystemRestart -n basic T1
[16 Mar 2009 17:04] 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/69326

2952 Pekka Nousiainen	2009-03-16
      bug#43632 01.diff
      TUP proxy: for UNDO execution keep track of which tables exist
      modified:
        storage/ndb/src/kernel/blocks/LocalProxy.cpp
        storage/ndb/src/kernel/blocks/LocalProxy.hpp
        storage/ndb/src/kernel/blocks/dblqh/DblqhProxy.cpp
        storage/ndb/src/kernel/blocks/dbtup/DbtupProxy.cpp
        storage/ndb/src/kernel/blocks/dbtup/DbtupProxy.hpp
[16 Mar 2009 17:07] Bugs System
Pushed into 5.1.32-ndb-7.0.4 (revid:pekka@mysql.com-20090316170507-kp3n7um1txenx487) (version source revid:pekka@mysql.com-20090316170507-kp3n7um1txenx487) (merge vers: 5.1.32-ndb-7.0.4) (pib:6)
[19 Mar 2009 6:20] Jon Stephens
Documented bugfix in the NDB-7.0.4 changelog as follows:

        When using multi-threaded data nodes, dropping a Disk Data 
        table followed by a data node restart led to a crash.
[5 Apr 2009 12:44] Jonas Oreland
reopen, cause testSystemRestart -n basic T1 still crashes
with same backtrace
[8 Apr 2009 13:13] Jonas Oreland
new testcase

create_tab D1 D2; reorg_tab -p 4 D1 D2; hugoLoad -r 1000 D1 D2; ndb_mgm -e "all dump 7099"; sleep 10; ndb_drop_table D1 D2; create_tab D1 D2; ndb_mgm -e "all restart -a"

key concepts:
Proxy does not react to create/drop in undo-log, causing it to potentially
make incorrect getInstanceKey calls.

Patch (upcoming) changes this...
[8 Apr 2009 13: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/71652

2886 Jonas Oreland	2009-04-08
      ndb - bug#43632 - make DbtupProxy also react to create/drop table in UNDO log
[8 Apr 2009 14:55] Bugs System
Pushed into 5.1.32-ndb-7.0.5 (revid:jonas@mysql.com-20090408145040-hhbuq1zvc7xj0tx4) (version source revid:jonas@mysql.com-20090408134427-1ch4i8l7odzpmml1) (merge vers: 5.1.32-ndb-7.0.5) (pib:6)
[15 Apr 2009 2:28] Jon Stephens
Also documented in the NDB-7.0.5 changelog, with additional note:

        This fix completes one that was made for this issue in MySQL
        Cluster NDB-7.0.4, which did not rectify the problem in all
        cases.