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.TableName;
28 import org.apache.hadoop.hbase.client.HTable;
29
30
31
32
33 public class RestartRsHoldingTableAction extends RestartActionBaseAction {
34
35 private final String tableName;
36
37 public RestartRsHoldingTableAction(long sleepTime, String tableName) {
38 super(sleepTime);
39 this.tableName = tableName;
40 }
41
42 @Override
43 public void perform() throws Exception {
44 HTable table = null;
45 try {
46 LOG.info("Performing action: Restart random RS holding table " + this.tableName);
47 Configuration conf = context.getHBaseIntegrationTestingUtility().getConfiguration();
48 table = new HTable(conf, TableName.valueOf(tableName));
49 } catch (IOException e) {
50 LOG.debug("Error creating HTable used to get list of region locations.", e);
51 return;
52 }
53
54 Collection<ServerName> serverNames = table.getRegionLocations().values();
55 ServerName[] nameArray = serverNames.toArray(new ServerName[serverNames.size()]);
56
57 restartRs(nameArray[RandomUtils.nextInt(nameArray.length)], sleepTime);
58 }
59 }