Bug #41594 Not connectng to the Cluster should not keep MySQL demon from starting
Submitted: 18 Dec 2008 16:29 Modified: 18 Dec 2008 16:30
Reporter: Jonathan Miller Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S3 (Non-critical)
Version:mysql-5.1-telco-7.0 OS:Linux
Assigned to: CPU Architecture:Any

[18 Dec 2008 16:29] Jonathan Miller
Description:
Hi,

There are 2 cases (I have found so far) in starting the MySQL Demon where it was not able to connect (any connection) to the cluster and then just failed to 
start.

Case #1

Configuration error: Error : Could not alloc node id at ndb13 port 14000: No free node id found for mysqld(API).
081218 17:10:59 [Warning] NDB[3]: starting connect thread
Configuration error: Error : Could not alloc node id at ndb13 port 14000: No free node id found for mysqld(API).
Configuration error: Error : Could not alloc node id at ndb13 port 14000: No free node id found for mysqld(API).
081218 17:11:23 [Warning] NDB[4]: starting connect thread
Configuration error: Error : Could not alloc node id at ndb13 port 14000: No free node id found for mysqld(API).
Configuration error: Error : Could not alloc node id at ndb13 port 14000: No free node id found for mysqld(API).
081218 17:11:23 mysqld_safe mysqld from pid file /space/var/ndb13.pid ended

Case #2

081218 17:16:25 [Note] NDB: NodeID is 4, management server 'ndb13:14000'
081218 17:16:26 [Note] NDB[0]: NodeID: 4, no storage nodes connected (timed out)
081218 17:16:26 mysqld_safe mysqld from pid file /space/var/ndb13.pid ended

How to repeat:
Steps:
1. Start a MySQL Demon using mysqld_safe connected to a cluster
2. From command prompt "killall -9 mysqld" repeatedly. You will get one of the 2 messages above after about 3 or 4 times of executing the killall

Suggested fix:
The mysqld should start, log the errors and continue to try and connect. Replication does this and has setting for # of attempts and time between attempts.
[18 Dec 2008 16:30] Jonathan Miller
Workaround of course is to restart the MySQLD after a period of time.