Bug #47072 Incorrect extent free space accounting
Submitted: 2 Sep 2009 18:56 Modified: 7 Sep 2009 8:32
Reporter: Jonas Oreland Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Disk Data Severity:S3 (Non-critical)
Version:mysql-5.1-telco-6.2 OS:Any
Assigned to: Jonas Oreland CPU Architecture:Any

[2 Sep 2009 18:56] Jonas Oreland
Description:
While adding information about how much disk space and much of it is free
per fragment, I noticed that the free space accounting sometimes got incorrect.

This sometimes lead to poor allocation, i.e new extents was allocated even though
already allocated was not full.
Uncertain if it could have other effect.

NOTE: This is not related to INFORMATION_SCHEMA.FILES, as it involves extents allocated to a fragment

How to repeat:
run insert/delete load
notice (by printout, or new pseudo-columns) that extent free space
  sometimes does not add up.

Suggested fix:
calc correctly ?
[2 Sep 2009 19:15] 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/82246

3028 Jonas Oreland	2009-09-02
      ndb - tentative patch for bug#47072 - commit for autotest
[4 Sep 2009 6:14] Jonas Oreland
recent finding shows that this might cause crash during restart
[4 Sep 2009 10:16] 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/82437

2979 Jonas Oreland	2009-09-04
      ndb - bug#47072
        Incorrect extent free space accounting
        Which could lead to suboptimal selection of extents for inserts
        (and maybe maybe also crash during restart)
[4 Sep 2009 11:44] Bugs System
Pushed into 5.1.37-ndb-7.0.8 (revid:jonas@mysql.com-20090904113338-65p55dyr4v62k5rg) (version source revid:jonas@mysql.com-20090904113338-65p55dyr4v62k5rg) (merge vers: 5.1.37-ndb-7.0.8) (pib:11)
[4 Sep 2009 11:44] Bugs System
Pushed into 5.1.35-ndb-7.1.0 (revid:jonas@mysql.com-20090904113937-h018xnx1ynmbnk5a) (version source revid:jonas@mysql.com-20090904113937-h018xnx1ynmbnk5a) (merge vers: 5.1.35-ndb-7.1.0) (pib:11)
[4 Sep 2009 11:45] Bugs System
Pushed into 5.1.37-ndb-6.3.27 (revid:jonas@mysql.com-20090904110123-8qk0tj3f4z4eap9g) (version source revid:jonas@mysql.com-20090904103516-1lcc83drbcctew32) (merge vers: 5.1.37-ndb-6.3.27) (pib:11)
[4 Sep 2009 11:53] Jonas Oreland
also pushed to 6.2.19
[7 Sep 2009 8:32] Jon Stephens
Documented bugfix in the NDB-6.2.19, 6.3.27, and 7.0.8 changelogs, as follows:

        Calculation of free space for Disk Data table fragments was
        sometimes done incorrectly. This could lead to unnecessary
        allocation of new extents even when sufficient space was
        available in existing ones for inserted data. In some cases,
        this might also lead to crashes when restarting data nodes.

        NOTE: This miscalculation was not reflected in the contents 
        of the INFORMATION_SCHEMA.FILES table, as it applied to 
        extents allocated to a fragment, and not to a file.
[7 Sep 2009 9:31] 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/82563

2973 Martin Skold	2009-09-07 [merge]
      Merge
      modified:
        mysql-test/suite/ndb/r/ndb_auto_increment.result
        mysql-test/suite/ndb/r/ndb_trigger.result
        mysql-test/suite/ndb/t/ndb_auto_increment.test
        mysql-test/suite/ndb/t/ndb_trigger.test
        sql/ha_ndbcluster.cc
        storage/ndb/include/kernel/signaldata/CloseComReqConf.hpp
        storage/ndb/src/kernel/blocks/ERROR_codes.txt
        storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
        storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp
        storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
        storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
        storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp
        storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
        storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
        storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
        storage/ndb/test/ndbapi/testNdbApi.cpp
        storage/ndb/test/run-test/autotest-boot.sh
        storage/ndb/test/run-test/daily-basic-tests.txt