You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ivan Daschinskiy (Jira)" <ji...@apache.org> on 2020/10/02 08:10:00 UTC
[jira] [Updated] (IGNITE-13508) Test scenario of two-phased
rebalance (PDS reduce)
[ https://issues.apache.org/jira/browse/IGNITE-13508?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ivan Daschinskiy updated IGNITE-13508:
--------------------------------------
Description:
Let us assume a cluster of 16 affinity nodes.
Lets divide cluster in 4 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:
{code:java}
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;
}
}
{code}
Also, caches should be partitioned and have 3 backups.
Steps:
* Preparations.
1. Start all 4 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)
was:
Let us assume a cluster of 16 affinity nodes.
Lets divide cluster in 4 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:
{code:java}
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;
}
}
{code}
Steps:
* Preparations.
1. Start all 4 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)
> Test scenario of two-phased rebalance (PDS reduce)
> --------------------------------------------------
>
> Key: IGNITE-13508
> URL: https://issues.apache.org/jira/browse/IGNITE-13508
> Project: Ignite
> Issue Type: Test
> Reporter: Ivan Daschinskiy
> Priority: Major
> Labels: IEP-56, ducktape
>
> Let us assume a cluster of 16 affinity nodes.
> Lets divide cluster in 4 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:
> {code:java}
> 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;
> }
> }
> {code}
> Also, caches should be partitioned and have 3 backups.
> Steps:
> * Preparations.
> 1. Start all 4 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)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)