@@ -1421,6 +1421,54 @@ private int getNumCoveredRegionsInWriteQuorum(List<BookieId> ensemble, int write
1421
1421
return numCoveredWriteQuorums ;
1422
1422
}
1423
1423
1424
+ @ Test
1425
+ public void testRecoveryOnNodeFailure () throws Exception {
1426
+ repp .uninitalize ();
1427
+ repp = new RegionAwareEnsemblePlacementPolicy ();
1428
+ repp .initialize (conf , Optional .empty (), timer , DISABLE_ALL ,
1429
+ NullStatsLogger .INSTANCE , BookieSocketAddress .LEGACY_BOOKIEID_RESOLVER );
1430
+ BookieSocketAddress addr1 = new BookieSocketAddress ("127.0.0.2" , 3181 );
1431
+ BookieSocketAddress addr2 = new BookieSocketAddress ("127.0.0.3" , 3181 );
1432
+ BookieSocketAddress addr3 = new BookieSocketAddress ("127.0.0.4" , 3181 );
1433
+ BookieSocketAddress addr4 = new BookieSocketAddress ("127.0.0.5" , 3181 );
1434
+ BookieSocketAddress addr5 = new BookieSocketAddress ("127.0.0.6" , 3181 );
1435
+ BookieSocketAddress addr6 = new BookieSocketAddress ("127.0.0.7" , 3181 );
1436
+
1437
+ // Update dns mapping
1438
+ StaticDNSResolver .addNodeToRack (addr1 .getHostName (), "/region1/r1" );
1439
+ StaticDNSResolver .addNodeToRack (addr2 .getHostName (), "/region1/r1" );
1440
+ StaticDNSResolver .addNodeToRack (addr3 .getHostName (), "/region2/r2" );
1441
+ StaticDNSResolver .addNodeToRack (addr4 .getHostName (), "/region2/r2" );
1442
+ StaticDNSResolver .addNodeToRack (addr5 .getHostName (), "/region3/r3" );
1443
+ StaticDNSResolver .addNodeToRack (addr6 .getHostName (), "/region3/r3" );
1444
+
1445
+ // Update cluster
1446
+ Set <BookieId > addrs = new HashSet <>();
1447
+ addrs .add (addr1 .toBookieId ());
1448
+ addrs .add (addr2 .toBookieId ());
1449
+ addrs .add (addr3 .toBookieId ());
1450
+ addrs .add (addr4 .toBookieId ());
1451
+ addrs .add (addr5 .toBookieId ());
1452
+ addrs .add (addr6 .toBookieId ());
1453
+
1454
+ repp .onClusterChanged (addrs , new HashSet <>());
1455
+
1456
+ Set <BookieId > bookiesLeftSet = new HashSet <>();
1457
+ bookiesLeftSet .add (addr1 .toBookieId ());
1458
+ repp .handleBookiesThatLeft (bookiesLeftSet );
1459
+
1460
+ List <BookieId > currentEnsemble = new ArrayList <>();
1461
+ currentEnsemble .add (addr1 .toBookieId ());
1462
+ currentEnsemble .add (addr3 .toBookieId ());
1463
+ currentEnsemble .add (addr6 .toBookieId ());
1464
+
1465
+ EnsemblePlacementPolicy .PlacementResult <BookieId > placementResult = repp .replaceBookie (3 ,
1466
+ 3 , 2 , null ,
1467
+ currentEnsemble , addr1 .toBookieId (), new HashSet <>());
1468
+
1469
+ assertEquals (placementResult .getResult (), addr2 .toBookieId ());
1470
+ }
1471
+
1424
1472
@ Test
1425
1473
public void testNodeWithFailures () throws Exception {
1426
1474
repp .uninitalize ();
0 commit comments