Hopefully launchpad will actually submit this this time around. Here's the original commit message of the fix in thew new branch, which summarizes what it does:
This commit adds two warnings; one for the case of master -> cluster,
and one for cluster1 -> cluster2.
The code that checks if two nodes belong to the same cluster
is "best effort" -- it will generally DTRT, but will fail in
the case that all of the following are true:
* Both nodes have the same cluster name
* They aren't in a master-slave relationship
* Both nodes have a different wsrep_cluster_address,
or both of their addresses aren't 'gcom://'; that is,
they both aren't the first node of a cluster.
Which can happen in the case that
Cluster 1 (pt_cluster_name):
node1 -> addr points to node2
node2 -> addr points to node3
node3 -> addr points to node1
Cluster 2 (pt_cluster_name):
_node1 -> addr points to _node2
_node2 -> addr points to _node3
_node3 -> addr points to _node1
node1 is a master to _node1.
The dsns table has all of the nodes.
ptc will think that cluster 2 is only _node1, and cluster 1
is everything else. Further heuristics could check if we've
seen a second cluster and check the addresses from there,
but isn't currently worth the effort.
Hopefully launchpad will actually submit this this time around. Here's the original commit message of the fix in thew new branch, which summarizes what it does:
This commit adds two warnings; one for the case of master -> cluster, address,
and one for cluster1 -> cluster2.
The code that checks if two nodes belong to the same cluster
is "best effort" -- it will generally DTRT, but will fail in
the case that all of the following are true:
* Both nodes have the same cluster name
* They aren't in a master-slave relationship
* Both nodes have a different wsrep_cluster_
or both of their addresses aren't 'gcom://'; that is,
they both aren't the first node of a cluster.
Which can happen in the case that
Cluster 1 (pt_cluster_name):
node1 -> addr points to node2
node2 -> addr points to node3
node3 -> addr points to node1
Cluster 2 (pt_cluster_name):
_node1 -> addr points to _node2
_node2 -> addr points to _node3
_node3 -> addr points to _node1
node1 is a master to _node1.
The dsns table has all of the nodes.
ptc will think that cluster 2 is only _node1, and cluster 1
is everything else. Further heuristics could check if we've
seen a second cluster and check the addresses from there,
but isn't currently worth the effort.