After sifting through the NDB API Events documentation and class comments, I came across this comment in NdbEventOperation.hpp:
/*
* Known Issues:
* - If a node failure has occured not all events will be recieved
* anymore. Drop NdbEventOperation and Create again after nodes are up
* again. Will be fixed in later versions
*/
Does this mean if a Data node fails, NDB Events will not be received?
I have tested killing a data node while I'm running my NDB API Event listener program, and I am still receiving all events(I only have 2 events right now during prototyping).
Update:
Here's some more clarification:
Say, for example, we have a cluster of four hosts(n1, n2, n3, n4), with two data nodes(n1, n2), and 1 Management Node(n3), and one two SQL Nodes(n3, n4). So, if a Data node goes down(say n1), I would imagine those Events that were handled by n1, will now be handled by n2, since Cluster Events happen synchronously. So, I don't see how we would lose any of these Events.
I'm wondering if the comment in NdbEventOperation.hpp refers to a Data Node, a Management Node, or a SQL Node.
I'm also wondering if this issue has been fixed(since it says in the comments that "it will be fixed in later versions").
This comment in NdbEventOperation.hpp looks really bad, since the whole concept of a MySQL Cluster revolves around availability and Events. I have trouble believing that some events will not be received if a Data node goes down in a cluster.