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.

 

 

 

Reply via email to