|
17 | 17 | */ |
18 | 18 | package org.apache.hadoop.hbase.master; |
19 | 19 |
|
| 20 | +import static org.junit.Assert.assertFalse; |
| 21 | +import static org.junit.Assert.assertNotNull; |
| 22 | +import static org.junit.Assert.assertNull; |
| 23 | +import static org.junit.Assert.assertTrue; |
| 24 | + |
20 | 25 | import java.util.List; |
21 | 26 | import java.util.stream.Collectors; |
| 27 | + |
22 | 28 | import org.apache.hadoop.hbase.HBaseClassTestRule; |
23 | 29 | import org.apache.hadoop.hbase.ServerName; |
24 | 30 | import org.apache.hadoop.hbase.TableName; |
|
29 | 35 | import org.apache.hadoop.hbase.procedure2.Procedure; |
30 | 36 | import org.apache.hadoop.hbase.testclassification.LargeTests; |
31 | 37 | import org.apache.hadoop.hbase.testclassification.MasterTests; |
32 | | -import org.junit.Assert; |
33 | 38 | import org.junit.ClassRule; |
34 | 39 | import org.junit.Test; |
35 | 40 | import org.junit.experimental.categories.Category; |
@@ -61,54 +66,51 @@ public void test() throws Exception { |
61 | 66 | UTIL.waitFor(60000, () -> UTIL.getMiniHBaseCluster().getMaster().isInitialized()); |
62 | 67 | // wait for all SCPs finished |
63 | 68 | UTIL.waitFor(60000, () -> UTIL.getHBaseCluster().getMaster().getProcedures().stream() |
64 | | - .noneMatch(p -> p instanceof ServerCrashProcedure)); |
| 69 | + .noneMatch(p -> p instanceof ServerCrashProcedure)); |
65 | 70 | TableName tableName = TABLES[0]; |
66 | 71 | ServerName testServer = UTIL.getHBaseCluster().getRegionServer(0).getServerName(); |
67 | 72 | UTIL.waitFor(30000, () -> getServerStateNode(testServer) != null); |
68 | 73 | ServerStateNode serverNode = getServerStateNode(testServer); |
69 | | - Assert.assertNotNull(serverNode); |
70 | | - Assert.assertTrue("serverNode should be ONLINE when cluster runs normally", |
71 | | - serverNode.isInState(ServerState.ONLINE)); |
| 74 | + assertNotNull(serverNode); |
| 75 | + assertTrue("serverNode should be ONLINE when cluster runs normally", |
| 76 | + serverNode.isInState(ServerState.ONLINE)); |
72 | 77 | UTIL.createMultiRegionTable(tableName, FAMILY); |
73 | 78 | UTIL.waitTableEnabled(tableName); |
74 | 79 | Table table = UTIL.getConnection().getTable(tableName); |
75 | 80 | for (int i = 0; i < 100; i++) { |
76 | 81 | UTIL.loadTable(table, FAMILY); |
77 | 82 | } |
78 | 83 | List<Integer> ports = |
79 | | - UTIL.getHBaseCluster().getMaster().getServerManager().getOnlineServersList().stream() |
80 | | - .map(serverName -> serverName.getPort()).collect(Collectors.toList()); |
| 84 | + UTIL.getHBaseCluster().getMaster().getServerManager().getOnlineServersList().stream() |
| 85 | + .map(serverName -> serverName.getPort()).collect(Collectors.toList()); |
81 | 86 | LOG.info("Shutting down cluster"); |
82 | 87 | UTIL.getHBaseCluster().killAll(); |
83 | 88 | UTIL.getHBaseCluster().waitUntilShutDown(); |
84 | 89 | LOG.info("Starting cluster the second time"); |
85 | 90 | UTIL.restartHBaseCluster(3, ports); |
86 | | - UTIL.waitFor(30000, () -> UTIL.getHBaseCluster().getMaster().isInitialized()); |
| 91 | + UTIL.waitFor(60000, () -> UTIL.getHBaseCluster().getMaster().isInitialized()); |
87 | 92 | serverNode = UTIL.getHBaseCluster().getMaster().getAssignmentManager().getRegionStates() |
88 | | - .getServerNode(testServer); |
89 | | - Assert.assertNotNull("serverNode should not be null when restart whole cluster", serverNode); |
90 | | - Assert.assertFalse(serverNode.isInState(ServerState.ONLINE)); |
91 | | - LOG.info("start to find the procedure of SCP for the severName we choose"); |
92 | | - UTIL.waitFor(60000, |
93 | | - () -> UTIL.getHBaseCluster().getMaster().getProcedures().stream() |
94 | | - .anyMatch(procedure -> (procedure instanceof ServerCrashProcedure) && |
95 | | - ((ServerCrashProcedure) procedure).getServerName().equals(testServer))); |
96 | | - Assert.assertFalse("serverNode should not be ONLINE during SCP processing", |
97 | | - serverNode.isInState(ServerState.ONLINE)); |
98 | | - LOG.info("start to submit the SCP for the same serverName {} which should fail", testServer); |
99 | | - Assert |
100 | | - .assertFalse(UTIL.getHBaseCluster().getMaster().getServerManager().expireServer(testServer)); |
101 | | - Procedure<?> procedure = UTIL.getHBaseCluster().getMaster().getProcedures().stream() |
102 | | - .filter(p -> (p instanceof ServerCrashProcedure) && |
103 | | - ((ServerCrashProcedure) p).getServerName().equals(testServer)) |
104 | | - .findAny().get(); |
105 | | - UTIL.waitFor(60000, () -> procedure.isFinished()); |
| 93 | + .getServerNode(testServer); |
| 94 | + if (serverNode != null) { |
| 95 | + assertFalse(serverNode.isInState(ServerState.ONLINE)); |
| 96 | + LOG.info("start to find the procedure of SCP for the severName we choose"); |
| 97 | + Procedure<?> procedure = UTIL.getHBaseCluster().getMaster().getProcedures().stream().filter( |
| 98 | + p -> (p instanceof ServerCrashProcedure) && |
| 99 | + ((ServerCrashProcedure) p).getServerName().equals(testServer)).findAny().get(); |
| 100 | + if (procedure != null) { |
| 101 | + assertFalse("serverNode should not be ONLINE during SCP processing", |
| 102 | + serverNode.isInState(ServerState.ONLINE)); |
| 103 | + LOG.info("start to submit the SCP for the same serverName {} which should fail", |
| 104 | + testServer); |
| 105 | + assertFalse(UTIL.getHBaseCluster().getMaster().getServerManager().expireServer(testServer)); |
| 106 | + UTIL.waitFor(60000, () -> procedure.isFinished()); |
| 107 | + } |
| 108 | + } |
106 | 109 | LOG.info("even when the SCP is finished, the duplicate SCP should not be scheduled for {}", |
107 | | - testServer); |
108 | | - Assert |
109 | | - .assertFalse(UTIL.getHBaseCluster().getMaster().getServerManager().expireServer(testServer)); |
| 110 | + testServer); |
| 111 | + assertFalse(UTIL.getHBaseCluster().getMaster().getServerManager().expireServer(testServer)); |
110 | 112 | serverNode = UTIL.getHBaseCluster().getMaster().getAssignmentManager().getRegionStates() |
111 | | - .getServerNode(testServer); |
112 | | - Assert.assertNull("serverNode should be deleted after SCP finished", serverNode); |
| 113 | + .getServerNode(testServer); |
| 114 | + assertNull("serverNode should be deleted after SCP finished", serverNode); |
113 | 115 | } |
114 | 116 | } |
0 commit comments