Bug #54155 incorrect ndbrequire in DbtupTrigger.cpp
Submitted: 1 Jun 2010 17:13 Modified: 2 Jun 2010 20:00
Reporter: Andrew Hutchings Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:mysql-5.1-telco-6.2 OS:Any
Assigned to: Jonas Oreland CPU Architecture:Any

[1 Jun 2010 17:13] Andrew Hutchings
Description:
When every attribute is used for a and the table has the maximum number of attributes for a table trigger this can happen:

Status: Temporary error, restart node
Message: Internal program error (failed ndbrequire) (Internal error, programming error or missing error message, please report a bug)
Error: 2341
Error data: dbtup/DbtupTrigger.cpp
Error object: DBTUP (Line: 1284) 0x0000000a

In DbtupTrigger.cpp:

ndbrequire(numAttrsToRead < MAX_ATTRIBUTES_IN_TABLE);

This should probably be <=

How to repeat:
Still working on test case.  At a guess create a table with maximum number of attributes per table and then modify every attribute whilst binary logging.
[1 Jun 2010 18:32] Andrew Hutchings
How to reproduce in 7.0.15/7.1.4:

shell> mysqlslap -a --number-of-queries=10000 -e ndb --number-int-cols=510

ndb_mgm> start backup

Please note that earlier versions do not support that number of columns so this would probably have to be --number-int-cols=126 in earlier versions.
[2 Jun 2010 9: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/109894

3102 Jonas Oreland	2010-06-02
      ndb - bug#54155 - fix incorrect assertion in DbtupTrigger, making it impossible to take backup with #cols == #max-cols
[2 Jun 2010 9:19] Jonas Oreland
pushed to 6.2.19, 6.3.35, 7.0.16 and 7.1.5
[2 Jun 2010 10: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/109921

3208 Martin Skold	2010-06-02 [merge]
      Merge
      added:
        storage/ndb/include/portlib/ndb_socket_poller.h
      modified:
        mysql-test/t/ctype_cp932_binlog_stm.test
        storage/ndb/include/portlib/NdbTCP.h
        storage/ndb/include/transporter/TransporterRegistry.hpp
        storage/ndb/include/util/SocketClient.hpp
        storage/ndb/include/util/SocketServer.hpp
        storage/ndb/src/common/transporter/TCP_Transporter.cpp
        storage/ndb/src/common/transporter/TCP_Transporter.hpp
        storage/ndb/src/common/transporter/Transporter.cpp
        storage/ndb/src/common/transporter/TransporterRegistry.cpp
        storage/ndb/src/common/util/SocketClient.cpp
        storage/ndb/src/common/util/SocketServer.cpp
        storage/ndb/src/common/util/socket_io.cpp
        storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp
        storage/ndb/src/kernel/vm/SimulatedBlock.cpp
        storage/ndb/src/kernel/vm/VMSignal.hpp
        storage/ndb/src/mgmapi/mgmapi.cpp
[2 Jun 2010 20:00] Jon Stephens
DOcumented bugfix in the NDB-6.2.19, 6.3.35, 7.0.16, and 7.1.5 changelogs, as follows:

        A table having the maximum aloowed number of attributes could 
        not be backed up using the ndb_mgm client.

        Note:
          The maximum number of attributes supported per table is not
          the same for all MySQL Cluster releases. See "Limits 
          Associated with Database Objects in MySQL Cluster", to 
          determine the maximum that applies in the release which you
          are using.

Closed.