...
- No more than 2 cross-DC connections between two datacenters are allowed in the ring.
- In order to achive the first requirement a join protocol should be modified to support adding a node at an arbitrary point in the ring in contrast with current implementation (new server node is always added to the very end of the ring).
- To enable the second requirement new node attribute is introduced labeling the node as belonging to a particular DC (e.g. NODE_DC with String values).
- TcpDiscoveryNode properties order and internalOrder are reworked to protect higher-level code from changed behavior and to preserve as much internal discovery invariants as possible (to avoid throwing away battle-tested code).
At the same time any improvements to TcpDiscoverySpi should not affect single-DC installations (no additional complexity of configuration or overhead is added for an existing use-casesperformance penalty is introduced).
Other components' improvements
...