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.hadoop.hbase.ServerName;
24 import org.apache.hadoop.hbase.util.Threads;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28
29
30
31 public class RestartActionBaseAction extends Action {
32 private static final Logger LOG =
33 LoggerFactory.getLogger(RestartActionBaseAction.class);
34 long sleepTime;
35
36 public RestartActionBaseAction(long sleepTime) {
37 this.sleepTime = sleepTime;
38 }
39
40 @Override protected Logger getLogger() {
41 return LOG;
42 }
43
44 void sleep(long sleepTime) {
45 getLogger().info("Sleeping for:" + sleepTime);
46 Threads.sleep(sleepTime);
47 }
48
49 void restartMaster(ServerName server, long sleepTime) throws IOException {
50 sleepTime = Math.max(sleepTime, 1000);
51
52 if (context.isStopping()) {
53 return;
54 }
55
56 getLogger().info("Killing master: " + server);
57 killMaster(server);
58 sleep(sleepTime);
59 getLogger().info("Starting master: " + server);
60 startMaster(server);
61 }
62
63
64
65
66
67
68
69 void gracefulRestartRs(ServerName server, long sleepTime) throws IOException {
70 sleepTime = Math.max(sleepTime, 1000);
71
72 if (context.isStopping()) {
73 return;
74 }
75 getLogger().info("Stopping region server: " + server);
76 stopRs(server);
77 sleep(sleepTime);
78 getLogger().info("Starting region server: " + server);
79 startRs(server);
80 }
81
82 void restartRs(ServerName server, long sleepTime) throws IOException {
83 sleepTime = Math.max(sleepTime, 1000);
84
85 if (context.isStopping()) {
86 return;
87 }
88 getLogger().info("Killing region server: " + server);
89 killRs(server);
90 sleep(sleepTime);
91 getLogger().info("Starting region server: " + server);
92 startRs(server);
93 }
94
95 void restartZKNode(ServerName server, long sleepTime) throws IOException {
96 sleepTime = Math.max(sleepTime, 1000);
97
98 if (context.isStopping()) {
99 return;
100 }
101 getLogger().info("Killing zookeeper node: " + server);
102 killZKNode(server);
103 sleep(sleepTime);
104 getLogger().info("Starting zookeeper node: " + server);
105 startZKNode(server);
106 }
107
108 void restartDataNode(ServerName server, long sleepTime) throws IOException {
109 sleepTime = Math.max(sleepTime, 1000);
110
111 if (context.isStopping()) {
112 return;
113 }
114 getLogger().info("Killing data node: " + server);
115 killDataNode(server);
116 sleep(sleepTime);
117 getLogger().info("Starting data node: " + server);
118 startDataNode(server);
119 }
120
121 void restartNameNode(ServerName server, long sleepTime) throws IOException {
122 sleepTime = Math.max(sleepTime, 1000);
123
124 if (context.isStopping()) {
125 return;
126 }
127 getLogger().info("Killing name node: " + server);
128 killNameNode(server);
129 sleep(sleepTime);
130 getLogger().info("Starting name node: " + server);
131 startNameNode(server);
132 }
133 }