Hi.
We are currently working on a feature to track the rebalancing of our Ignite
cluster listening all events: when it starts and end, how many partitions
are sent, etc.
We implemented a singleton Ignite Service and deploy it on the cluster.
When the service starts it listens the following remote events:
EVT_NODE_JOINED
EVT_NODE_LEFT
EVT_NODE_FAILED
EVT_NODE_SEGMENTED
EVT_CACHE_REBALANCE_STARTED
EVT_CACHE_REBALANCE_STOPPED
EVT_CACHE_REBALANCE_PART_SUPPLIED
EVT_CACHE_REBALANCE_PART_LOADED
EVT_CACHE_REBALANCE_PART_UNLOADED
EVT_CACHE_REBALANCE_PART_DATA_LOST
EVT_CACHE_REBALANCE_PART_MISSED
Some questions about our approach:
1. Is the following sequence of events correct?
* Baseline: A,B
* setBaselineTopology: A, B, C, D
* C and D send event EVT_CACHE_REBALANCE_STARTED
* A and B send multiple EVT_CACHE_REBALANCE_PART_SUPPLIED with the
partitions to rebalance
* C and D receive data from A and B
* C and D send multiple CACHE_ENTRY_CREATED, CACHE_ENTRY_DESTROYED,
CACHE_REBALANCE_OBJECT_LOADED to create new entries
* C and D send multiple CACHE_REBALANCE_PART_LOADED when the data is
loaded into the new nodes
* C and D send event EVT_CACHE_REBALANCE_STOPPED
* A and B send multiple CACHE_ENTRY_CREATED, CACHE_ENTRY_DESTROYED,
CACHE_REBALANCE_OBJECT_UNLOADED to remove old entries
* A and B send multiple EVT_CACHE_REBALANCE_PART_UNLOADED when the
partitions are removed
2. As you can see, I receive some CACHE_ENTRY_DESTROYED when C and D
are receiving the data. Why are they destroying entries? Also, something
similar happens when A and B are removing partitions, I receive some
CACHE_ENTRY_CREATED.
3. Sometimes I did not receive an EVT_CACHE_REBALANCE_STARTED from a
node that is supposed to start a rebalancing, how is this possible?
4. About the use of services, when the node that contains a service is
removed from the cluster, it is translated to another node. Is there a way
to do it manually? A mean, for example I know that the node is processing a
lot of data, and I want to transfer this service to a different node, is it
possible to do it?
5. We want to know if a rebalancing is in course, is there a way to ask
the cluster about this? We currently listen the events and maintain a
variable with this state, but if the service dies. the variable is lost.
Thank you.