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.factories;
20
21 import org.apache.hadoop.hbase.chaos.actions.Action;
22 import org.apache.hadoop.hbase.chaos.actions.AddColumnAction;
23 import org.apache.hadoop.hbase.chaos.actions.ChangeBloomFilterAction;
24 import org.apache.hadoop.hbase.chaos.actions.ChangeCompressionAction;
25 import org.apache.hadoop.hbase.chaos.actions.ChangeEncodingAction;
26 import org.apache.hadoop.hbase.chaos.actions.ChangeVersionsAction;
27 import org.apache.hadoop.hbase.chaos.actions.CompactRandomRegionOfTableAction;
28 import org.apache.hadoop.hbase.chaos.actions.CompactTableAction;
29 import org.apache.hadoop.hbase.chaos.actions.DumpClusterStatusAction;
30 import org.apache.hadoop.hbase.chaos.actions.FlushRandomRegionOfTableAction;
31 import org.apache.hadoop.hbase.chaos.actions.FlushTableAction;
32 import org.apache.hadoop.hbase.chaos.actions.MergeRandomAdjacentRegionsOfTableAction;
33 import org.apache.hadoop.hbase.chaos.actions.MoveRandomRegionOfTableAction;
34 import org.apache.hadoop.hbase.chaos.actions.MoveRegionsOfTableAction;
35 import org.apache.hadoop.hbase.chaos.actions.RemoveColumnAction;
36 import org.apache.hadoop.hbase.chaos.actions.SnapshotTableAction;
37 import org.apache.hadoop.hbase.chaos.actions.SplitRandomRegionOfTableAction;
38 import org.apache.hadoop.hbase.chaos.monkies.ChaosMonkey;
39 import org.apache.hadoop.hbase.chaos.monkies.PolicyBasedChaosMonkey;
40 import org.apache.hadoop.hbase.chaos.policies.PeriodicRandomActionPolicy;
41 import org.apache.hadoop.hbase.chaos.policies.TwoConcurrentActionPolicy;
42
43
44
45
46
47 public class NoKillMonkeyFactory extends MonkeyFactory {
48 @Override public ChaosMonkey build() {
49 Action[] actions1 = new Action[] {
50 new CompactTableAction(tableName, MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD),
51 new CompactRandomRegionOfTableAction(tableName,
52 MonkeyConstants.DEFAULT_COMPACT_RANDOM_REGION_RATIO),
53 new FlushTableAction(tableName),
54 new FlushRandomRegionOfTableAction(tableName),
55 new MoveRandomRegionOfTableAction(tableName)
56 };
57
58 Action[] actions2 = new Action[] {
59 new SplitRandomRegionOfTableAction(tableName),
60 new MergeRandomAdjacentRegionsOfTableAction(tableName),
61 new SnapshotTableAction(tableName),
62 new AddColumnAction(tableName),
63 new RemoveColumnAction(tableName, columnFamilies),
64 new ChangeEncodingAction(tableName),
65 new ChangeCompressionAction(tableName),
66 new ChangeBloomFilterAction(tableName),
67 new ChangeVersionsAction(tableName)
68 };
69
70 Action[] actions3 = new Action[] {
71 new MoveRegionsOfTableAction(MonkeyConstants.DEFAULT_MOVE_REGIONS_SLEEP_TIME,
72 MonkeyConstants.DEFAULT_MOVE_REGIONS_MAX_TIME,
73 tableName),
74 new MoveRandomRegionOfTableAction(MonkeyConstants.DEFAULT_RESTART_ACTIVE_MASTER_SLEEP_TIME,
75 tableName),
76 };
77
78 Action[] actions4 = new Action[] {
79 new DumpClusterStatusAction()
80 };
81
82 return new PolicyBasedChaosMonkey(util,
83 new TwoConcurrentActionPolicy(MonkeyConstants.DEFAULT_PERIODIC_ACTION1_PERIOD, actions1, actions2),
84 new PeriodicRandomActionPolicy(MonkeyConstants.DEFAULT_PERIODIC_ACTION2_PERIOD,actions3),
85 new PeriodicRandomActionPolicy(MonkeyConstants.DEFAULT_PERIODIC_ACTION4_PERIOD,actions4));
86 }
87 }