Bug #48910 PGMAN stack bottom not HOT
Submitted: 19 Nov 2009 15:06 Modified: 11 Dec 2009 9:13
Reporter: Pekka Nousiainen Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Disk Data Severity:S2 (Serious)
Version:mysql-5.1-telco-6.2 OS:Any
Assigned to: Pekka Nousiainen CPU Architecture:Any

[19 Nov 2009 15:06] Pekka Nousiainen
Description:
In PGMAN it is still possible to get asserts of type
ndbrequire(state & Page_entry::HOT);

This occurs in lirs_stack_pop(), drop_page(),
and verify_page_lists().  Only first one of these
is in non-debug version.

May be same as bug#45794 reported in 7.0.

How to repeat:
DiskPageBufferMemory: 4M (the minimum)
hugoLoad -r 100000 D1
hugoPkUpdate -r 100000 D1 &
sleep 10
ndb_drop_table D1
repeat for a few hours
[26 Nov 2009 19:22] 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/91831

3038 Pekka Nousiainen	2009-11-26
      bug#48910 01_pgman.diff
      Assert verify_page_entry() at end of each set_page_state().
      Add hot stack bottom assert to verify_page_entry().
      NOTE: The asserts are fixed in patches 02-06.
[26 Nov 2009 19:22] 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/91832

3039 Pekka Nousiainen	2009-11-26
      bug#48910 02_pgman.diff
      In process_callback() sync REQUEST state before set_page_state().
      Fixes assert "has_req == has_req2".
[26 Nov 2009 19: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/91833

3040 Pekka Nousiainen	2009-11-26
      bug#48910 03_pgman.diff
      In get_page() move lirs_reference() to the end.
      Avoids calling set_page_state() when the state is not ready.
      Fixes assert "is_locked == ! is_lirs".
[26 Nov 2009 19:24] 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/91834

3041 Pekka Nousiainen	2009-11-26
      bug#48910 04_pgman.diff
      In drop_page() properly remove all states.
      Possible states should be HOT, BUSY, DIRTY, EMPTY, MAPPED, BOUND.
      Use (state == 0) to mean page entry is about to be released.
[26 Nov 2009 19:25] 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/91836

3042 Pekka Nousiainen	2009-11-26
      bug#48910 05_pgman.diff
      Maintain count of hot pages at each set_page_state().
      Reformat verify_page_lists().
[26 Nov 2009 19:26] 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/91837

3043 Pekka Nousiainen	2009-11-26
      bug#48910 06_pgman.diff
      Fix bug#48910 by using hot page count in lirs_reference().
      The bug could also deplete hot pages, making LIRS into LRU.
[26 Nov 2009 20:29] 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/91840

3169 Pekka Nousiainen	2009-11-26 [merge]
      bug#48910 - merge 6.2 to 6.3
[27 Nov 2009 9: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/91876

3243 Pekka Nousiainen	2009-11-27 [merge]
      bug#48910 - merge 6.3 to 7.0
[27 Nov 2009 9:31] Bugs System
Pushed into 5.1.39-ndb-7.0.10 (revid:pekka@mysql.com-20091127092207-xw7g766wsa5ovno9) (version source revid:pekka@mysql.com-20091127092207-xw7g766wsa5ovno9) (merge vers: 5.1.39-ndb-7.0.10) (pib:13)
[27 Nov 2009 9:32] Bugs System
Pushed into 5.1.39-ndb-6.3.29 (revid:pekka@mysql.com-20091126202816-kxu1mt8sekdvcnrf) (version source revid:pekka@mysql.com-20091126202816-kxu1mt8sekdvcnrf) (merge vers: 5.1.39-ndb-6.3.29) (pib:13)
[27 Nov 2009 9:34] Bugs System
Pushed into 5.1.39-ndb-6.2.19 (revid:pekka@mysql.com-20091126192510-3ayn11khkeugirei) (version source revid:pekka@mysql.com-20091126192510-3ayn11khkeugirei) (merge vers: 5.1.39-ndb-6.2.19) (pib:13)
[27 Nov 2009 10:27] 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/91886

3244 Pekka Nousiainen	2009-11-27
      bug#48910 - no-debug compile fix
[27 Nov 2009 11:49] Bugs System
Pushed into 5.1.39-ndb-7.1.0 (revid:jonas@mysql.com-20091127114642-ldq7j7hikxtoz6l4) (version source revid:jonas@mysql.com-20091127114642-ldq7j7hikxtoz6l4) (merge vers: 5.1.39-ndb-7.1.0) (pib:13)
[1 Dec 2009 13:02] 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/92273

3167 Martin Skold	2009-12-01 [merge]
      Merge
      modified:
        storage/ndb/src/common/debugger/EventLogger.cpp
        storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
        storage/ndb/src/kernel/blocks/ndbfs/AsyncIoThread.hpp
        storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp
        storage/ndb/src/kernel/blocks/pgman.cpp
        storage/ndb/src/kernel/blocks/pgman.hpp
        storage/ndb/src/mgmsrv/MgmtSrvr.cpp
        storage/ndb/src/ndbapi/NdbOperationDefine.cpp
        storage/ndb/src/ndbapi/NdbOperationSearch.cpp
        storage/ndb/test/ndbapi/testBlobs.cpp
        storage/ndb/test/run-test/daily-basic-tests.txt
        storage/ndb/test/run-test/daily-devel-tests.txt
[1 Dec 2009 13:33] 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/92279

3244 Martin Skold	2009-12-01 [merge]
      Merge
      modified:
        storage/ndb/src/common/debugger/EventLogger.cpp
        storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
        storage/ndb/src/kernel/blocks/ndbfs/AsyncIoThread.hpp
        storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp
        storage/ndb/src/kernel/blocks/pgman.cpp
        storage/ndb/src/kernel/blocks/pgman.hpp
        storage/ndb/src/mgmsrv/MgmtSrvr.cpp
        storage/ndb/src/ndbapi/NdbOperationDefine.cpp
        storage/ndb/src/ndbapi/NdbOperationSearch.cpp
        storage/ndb/test/ndbapi/testBlobs.cpp
        storage/ndb/test/run-test/daily-basic-tests.txt
        storage/ndb/test/run-test/daily-devel-tests.txt
[1 Dec 2009 14:02] 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/92287

3170 Martin Skold	2009-12-01 [merge]
      Merge
      modified:
        storage/ndb/src/common/debugger/EventLogger.cpp
        storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
        storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp
        storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp
        storage/ndb/src/kernel/blocks/pgman.cpp
        storage/ndb/src/kernel/blocks/pgman.hpp
        storage/ndb/src/mgmsrv/MgmtSrvr.cpp
        storage/ndb/src/ndbapi/NdbOperationDefine.cpp
        storage/ndb/src/ndbapi/NdbOperationSearch.cpp
        storage/ndb/test/ndbapi/testBlobs.cpp
        storage/ndb/test/run-test/daily-basic-tests.txt
        storage/ndb/test/run-test/daily-devel-tests.txt
[1 Dec 2009 14:22] 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/92291

3040 Martin Skold	2009-12-01 [merge]
      Merge
      modified:
        storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp
        storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp
        storage/ndb/src/kernel/blocks/pgman.cpp
        storage/ndb/src/kernel/blocks/pgman.hpp
        storage/ndb/src/ndbapi/NdbOperationDefine.cpp
        storage/ndb/src/ndbapi/NdbOperationSearch.cpp
        storage/ndb/test/ndbapi/testBlobs.cpp
        storage/ndb/test/run-test/daily-basic-tests.txt
[9 Dec 2009 12:08] Jon Stephens
How could a user encounter the problem that this fixes? I don't understand what was done here.

Thanks!
[9 Dec 2009 12:17] Pekka Nousiainen
It could happen if there are few disk tables and
they are repeatedly dropped and recreated.  It is
not necessary to have on-going ops when dropped.
[11 Dec 2009 9:13] Jon Stephens
Documented bugfix in the NDB-6.2.19, 6.3.29, and 7.0.10 changelogs, as follows:

        Repeatedly creating and then dropping Disk Data tables could
        eventually lead to data node failures.

Noted that this also fixes BUG#45794.

Closed.