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
23 import org.apache.commons.lang.RandomStringUtils;
24 import org.apache.hadoop.hbase.HColumnDescriptor;
25 import org.apache.hadoop.hbase.HTableDescriptor;
26 import org.apache.hadoop.hbase.TableName;
27 import org.apache.hadoop.hbase.client.Admin;
28
29
30
31
32 public class AddColumnAction extends Action {
33 private final TableName tableName;
34 private Admin admin;
35
36 public AddColumnAction(TableName tableName) {
37 this.tableName = tableName;
38 }
39
40 @Override
41 public void init(ActionContext context) throws IOException {
42 super.init(context);
43 this.admin = context.getHBaseIntegrationTestingUtility().getHBaseAdmin();
44 }
45
46 @Override
47 public void perform() throws Exception {
48 HTableDescriptor tableDescriptor = admin.getTableDescriptor(tableName);
49 HColumnDescriptor columnDescriptor = null;
50
51 while(columnDescriptor == null ||
52 tableDescriptor.getFamily(columnDescriptor.getName()) != null) {
53 columnDescriptor = new HColumnDescriptor(RandomStringUtils.randomAlphabetic(5));
54 }
55
56 LOG.debug("Performing action: Adding " + columnDescriptor + " to " + tableName);
57
58 tableDescriptor.addFamily(columnDescriptor);
59 admin.modifyTable(tableName, tableDescriptor);
60 }
61 }