1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.chaos.actions;
20
21 import java.io.IOException;
22 import java.util.Collection;
23
24 import org.apache.commons.lang.math.RandomUtils;
25 import org.apache.hadoop.conf.Configuration;
26 import org.apache.hadoop.hbase.ServerName;
27 import org.apache.hadoop.hbase.client.HTable;
28
29
30
31
32 public class RestartRsHoldingTableAction extends RestartActionBaseAction {
33
34 private final String tableName;
35
36 public RestartRsHoldingTableAction(long sleepTime, String tableName) {
37 super(sleepTime);
38 this.tableName = tableName;
39 }
40
41 @Override
42 public void perform() throws Exception {
43 HTable table = null;
44 try {
45 Configuration conf = context.getHBaseIntegrationTestingUtility().getConfiguration();
46 table = new HTable(conf, tableName);
47 } catch (IOException e) {
48 LOG.debug("Error creating HTable used to get list of region locations.", e);
49 return;
50 }
51
52 Collection<ServerName> serverNames = table.getRegionLocations().values();
53 ServerName[] nameArray = serverNames.toArray(new ServerName[serverNames.size()]);
54
55 restartRs(nameArray[RandomUtils.nextInt(nameArray.length)], sleepTime);
56 }
57 }