Details
-
Test
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
-
Ducktape Sprint 5, Ducktape Sprint 6, Ducktape Sprint 7
Description
Let us assume a cluster of 8 affinity nodes.
Lets divide cluster in 2 equal cells:
Each node in cell has the same node attribute CELL=CELL_<idx>
Caches, that will be started on nodes, should have affinity function with this backup filter:
public class CellularAffinityBackupFilter implements IgniteBiPredicate<ClusterNode, List<ClusterNode>> { private static final long serialVersionUID = 1L; private final String attrName; public CellularAffinityBackupFilter(String attrName) { this.attrName = attrName; } @Override public boolean apply(ClusterNode candidate, List<ClusterNode> previouslySelected) { for (ClusterNode node : previouslySelected) return Objects.equals(candidate.attribute(attrName), node.attribute(attrName)); return true; } }
Also, caches should be partitioned and have 3 backups.
Steps:
- Preparations.
1. Start all 2 cells.
2. Load data to cache with the mentioned above affinity function and fix PDS size on all nodes.
3. Delete 80% of data and fix PDS size on all nodes. - Phase 1
1. Stop two nodes in each cell, total a half of all nodes and clean PDS.
2. Start cleaned node with preservance of consistent id and cell attributes.
3. Wait for rebalance finished. - Phase 2
Run steps 1-3 of Phase 2 on the other half of the cluster. - Verifications
1. Check that PDS size reduced (compare to step 3)
2. Check data consistency (idle_verify --dump)
Attachments
Issue Links
- links to