Bug #52228 MySQL Cluster : DDL during data node upgrade results in client hanging
Submitted: 19 Mar 2010 17:35 Modified: 29 Mar 2010 7:57
Reporter: Frazer Clement Email Updates:
Status: Closed Impact on me:
None 
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

[19 Mar 2010 17:35] Frazer Clement
Description:
From 7.0 onwards, DDL operations complete within a schema transaction.

The kernel code for starting a schema transaction checks that all data nodes are at the same version before allowing a schema transaction to start.

However when this code detects a version mismatch it currently returns without informing the client of the problem.

This results in the client hanging.

How to repeat:
Create cluster with mixed NDBD versions >= 7.0.

Attempt DDL from a client (e.g. create_tab T1).

Observe client hang.

Suggested fix:
--- mysql-5.1-telco-7.1-wl4197.orig/storage/ndb/src/kernel/blocks/dbdict/Dbdict.
cpp	2010-03-19 17:09:47.000000000 +0000
+++ mysql-5.1-telco-7.1-wl4197/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp	
2010-03-19 17:10:49.000000000 +0000
@@ -23015,7 +23015,7 @@ Dbdict::execSCHEMA_TRANS_BEGIN_REQ(Signa
     {
       jam();
       setError(error, SchemaTransBeginRef::IncompatibleVersions, __LINE__);
-      return;
+      break;
     }
[22 Mar 2010 13: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/103995

3469 Frazer Clement	2010-03-22
      Bug#52228 : MySQL Cluster : DDL during data node upgrade results in client hanging
[23 Mar 2010 7:04] Jonas Oreland
pushed to 7.0.14 and 7.1.3
[29 Mar 2010 7:57] Jon Stephens
Documented bugfix in the NDB-7.0.14 and 7.1.3 changelogs as follows:

        In MySQL Cluster NDB 7.0 and later, DDL operations are performed
        within schema transactions; the NDB kernel code for starting a
        schema transaction checks that all data nodes are at the same
        version before allowing a schema transaction to start. However,
        when a version mismatch was detected, the client was not
        actually informed of this problem, which caused the client to
        hang.

Closed.