Bug #48528 | Unable to use 7.0 ndbapi/mysqld with 6.3 data-nodes | ||
---|---|---|---|
Submitted: | 4 Nov 2009 11:08 | Modified: | 9 Dec 2009 10:26 |
Reporter: | Jonas Oreland | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Cluster: Cluster (NDB) storage engine | Severity: | S3 (Non-critical) |
Version: | mysql-5.1-telco-7.0 | OS: | Any |
Assigned to: | Frazer Clement | CPU Architecture: | Any |
[4 Nov 2009 11:08]
Jonas Oreland
[12 Nov 2009 17:10]
Frazer Clement
Is the requirement that 7.0 API can work with a) 7.0 MGMD and 6.3 NDBD nodes b) Both 6.3 / 7.0 MGMD and 6.3 NDBD nodes a) Requires mostly NDBAPI fixes API sends short TCKEY/INDX/SCANTAB REQ signals Small fix to Event Operation setup ... b) Requires some as-yet-unknown fix to MGMAPI to avoid time out when retrieving config. I recall some use cases where one of two hosts with both MGMD and MySQLD was upgraded in a single step. This would require the upgraded 7.0 MySQLD to be able to talk to the existing 6.3 MGMD which currently times out when retrieving config.
[12 Nov 2009 17:33]
Jonas Oreland
start with a) and i'll check if b) also is required... in fact I think then b) should be separate bug-report updated title to reflect this
[16 Nov 2009 22:29]
Frazer Clement
Proposed patch.
Attachment: bug48528.patch (text/x-patch), 25.78 KiB.
[16 Nov 2009 22:30]
Frazer Clement
Patch adds support for 7.0 + NdbApi nodes connecting to a Cluster with : - 7.0 MGMD node - 1 or more 6.3 API nodes Limitations : - 6.3 MGMD node not supported (Could probably be alleviated with further work) - 7.0 specific features must not be used until all data nodes are at version 7.0. - Backup with Snapshot Start - Online add node - Online table repartitioning - 7.0 MySQLD API nodes cannot perform DDL - DDL is enabled when all connected NDBD nodes are at least version 7.0.0 - Note that 6.3 MySQLD API nodes can continue to perform DDL while the 'Master' node is at version 6.3. An Ndbd node restart could result in the 'Master' node being at version 7.0.X + while another Ndbd is at version 6.3.Y. In this situation, no DDL can be performed from any API node as the 'Master' is not at version 6.3.Y, and the cluster contains nodes which are not at version 7.0.X. Details - NdbApi optionally send short TCKEYREQ, TCINDXREQ, SCANTABREQ requests. Will send them to Ndbd nodes at version <= 7.0.0, or if forceShortRequests is set. forceShortRequests is set by environment variable (NDB_FORCE_SHORT_REQUESTS=Y) or internal method : storage/ndb/src/ndbapi/NdbImpl::setForceShortRequests() - Some extra handling for Api-received signals modified in 7.0 GETTABINFOREF SUB_START_CONF - Added new --forceshortreqs option to NDBT_Testsuite options. Added three new testcase invocations with --forceshortreqs, covering PK, unique index ops and index scans. - Added 1 line fix to ha_ndbcluster::alter_table_phase1() to ensure failure starting schema transactions is handled correctly. Testing - Using NDB_FORCE_SHORT_REQUESTS, all Ndb testcases pass in 7.0 - A selection of 7.0 NdbApi tests and manual MySQLD tests pass when connected to a 6.3 Cluster.
[18 Nov 2009 10:06]
Frazer Clement
New patch with MTR testcase and daily-basic.txt mods.
Attachment: bug48528-2.patch (text/x-patch), 31.37 KiB.
[18 Nov 2009 11:05]
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/90834 3238 Frazer Clement 2009-11-18 Bug#48528 Unable to use 7.0 ndbapi/mysqld with 6.3 data-nodes added: mysql-test/suite/ndb/r/ndb_short_sigs.result mysql-test/suite/ndb/t/ndb_short_sigs.cnf mysql-test/suite/ndb/t/ndb_short_sigs.test modified: storage/ndb/include/kernel/signaldata/GetTabInfo.hpp storage/ndb/include/ndb_version.h.in storage/ndb/include/ndbapi/NdbOperation.hpp storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp storage/ndb/src/ndbapi/NdbImpl.hpp storage/ndb/src/ndbapi/NdbOperationExec.cpp storage/ndb/src/ndbapi/NdbScanOperation.cpp storage/ndb/src/ndbapi/Ndbinit.cpp storage/ndb/src/ndbapi/TransporterFacade.hpp storage/ndb/src/ndbapi/ndberror.c storage/ndb/test/include/NDBT_Test.hpp storage/ndb/test/run-test/daily-basic-tests.txt storage/ndb/test/src/CMakeLists.txt storage/ndb/test/src/Makefile.am storage/ndb/test/src/NDBT_Test.cpp
[18 Nov 2009 12:53]
Bugs System
Pushed into 5.1.39-ndb-7.0.10 (revid:frazer@mysql.com-20091118110502-9yvuwos7r1ble8k7) (version source revid:frazer@mysql.com-20091118110502-9yvuwos7r1ble8k7) (merge vers: 5.1.39-ndb-7.0.10) (pib:13)
[18 Nov 2009 12:53]
Bugs System
Pushed into 5.1.39-ndb-7.1.0 (revid:frazer@mysql.com-20091118125128-z1o7fldjkcl1k86n) (version source revid:frazer@mysql.com-20091118125128-z1o7fldjkcl1k86n) (merge vers: 5.1.39-ndb-7.1.0) (pib:13)
[2 Dec 2009 16:14]
Frazer Clement
See bug#49163 fixing interaction of 7.0+ API and 6.3 MGMD.
[9 Dec 2009 10:26]
Jon Stephens
Documented in the NDB-6.3.29 and 7.0.10 changelogs as follows: Previously, it was a requirement for online upgrades that MySQL Cluster binaries be updated in the following order: all management nodes, then all data nodes, then all API nodes. It is now possible, as part of an online upgrade, to update API node binaries before updating management server or data node binaries. See "Performing a Rolling Restart of a MySQL Cluster" for important additional information before attempting to use this new "order of node updates" functionality. [6.3.29 version:] This enhanced functionality is supported for online upgrades to MySQL Cluster NDB 7.0 when the NDB engine version is 7.0.10 or later. [7.0.10 version:] This enhanced functionality is supported for online upgrades from MySQL Cluster NDB 6.3 when the NDB engine version is 6.3.29 or later. Also updated "Performing a Rolling Restart of a MySQL Cluster" section of Manual with additional info, including limitations. (Will appear at http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-rolling-restart.html) Also added "new feature" item to NDB-6.3 and 7.0 Roadmap sections.