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 LOG.info("Performing action: Restart random RS holding table " + this.tableName);
46 Configuration conf = context.getHBaseIntegrationTestingUtility().getConfiguration();
47 table = new HTable(conf, tableName);
48 } catch (IOException e) {
49 LOG.debug("Error creating HTable used to get list of region locations.", e);
50 return;
51 }
52
53 Collection<ServerName> serverNames = table.getRegionLocations().values();
54 ServerName[] nameArray = serverNames.toArray(new ServerName[serverNames.size()]);
55
56 restartRs(nameArray[RandomUtils.nextInt(nameArray.length)], sleepTime);
57 }
58 }