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.Random;
23
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
33
34 public class ChangeVersionsAction extends Action {
35 private final TableName tableName;
36
37 private Admin admin;
38 private Random random;
39
40 public ChangeVersionsAction(TableName tableName) {
41 this.tableName = tableName;
42 this.random = new Random();
43 }
44
45 @Override
46 public void init(ActionContext context) throws IOException {
47 super.init(context);
48 this.admin = context.getHBaseIntegrationTestingUtility().getHBaseAdmin();
49 }
50
51 @Override
52 public void perform() throws Exception {
53 HTableDescriptor tableDescriptor = admin.getTableDescriptor(tableName);
54 HColumnDescriptor[] columnDescriptors = tableDescriptor.getColumnFamilies();
55
56 if ( columnDescriptors == null || columnDescriptors.length == 0) {
57 return;
58 }
59
60 int versions = random.nextInt(3) + 1;
61 for(HColumnDescriptor descriptor:columnDescriptors) {
62
63
64
65 descriptor.setMinVersions(versions);
66 descriptor.setMaxVersions(versions);
67 }
68 LOG.debug("Performing action: Changing versions on " + tableName.getNameAsString());
69 admin.modifyTable(tableName, tableDescriptor);
70 }
71 }