[ 
https://issues.apache.org/jira/browse/IGNITE-29083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18123641#comment-18123641
 ] 

Maksim Davydov commented on IGNITE-29083:
-----------------------------------------

[~sergeychugunov] [~baranoveg] Thanks for review!

> Add a JUnit base for multi-DC network split tests
> -------------------------------------------------
>
>                 Key: IGNITE-29083
>                 URL: https://issues.apache.org/jira/browse/IGNITE-29083
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Maksim Davydov
>            Assignee: Maksim Davydov
>            Priority: Minor
>              Labels: IEP-140, ise
>             Fix For: 2.19
>
>          Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> JUnit tests have no reliable way to cut the network between the data centers 
> (DCs) of one cluster. The existing template, 
> IgniteCacheTopologySplitAbstractTest, splits the cluster into two halves and 
> waits for one exact topology version without a timeout. If the split ends in 
> a different topology, the test hangs until it is killed. Its heal delivers 
> the messages held during the split, which replays one side's view of the 
> cluster on the other side.
> This adds MdcTopologySplitAbstractTest, a new abstract test on top of the 
> template:
> - It splits the cluster into two or more sides by each node's DC. A client 
> knows only the servers of its own DC, so it stays on that DC's side.
> - It waits up to 30 s until every node sees only its own side. Otherwise the 
> test fails and logs what every node sees.
> - It heals by dropping the held messages and restarting every side but one. 
> The restarted nodes rejoin and rebalance from the side that stayed up.
> The first test on it, MdcDcIsolationTest, checks the topology validator in 
> four cases:
> - 3 DCs, majority validator, DC3 cut off: DC1 and DC2 write, DC3 rejects 
> writes and serves reads.
> - The same with DC1 cut off, so that no DC is privileged.
> - 3 DCs split three ways: no side writes, every side reads.
> - 2 DCs with DC1 as the main one: DC2 cut off rejects writes and serves reads.
> After heal, every DC holds the same data and idle_verify finds no conflicts. 
> Test code only.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to