File tree 3 files changed +25
-0
lines changed
java/src/org/openqa/selenium/grid/node
3 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -198,6 +198,15 @@ public class NodeFlags implements HasRoles {
198
198
@ ConfigValue (section = NODE_SECTION , name = "register-period" , example = "120" )
199
199
public int registerPeriod = DEFAULT_REGISTER_PERIOD ;
200
200
201
+ @ Parameter (
202
+ names = "--register-shutdown-on-failure" ,
203
+ description =
204
+ "If this flag is enabled, the Node will shut down after the register period is completed."
205
+ + " This is useful for container environments to restart and register again. If"
206
+ + " restarted multiple times, the Node container status will be CrashLoopBackOff." )
207
+ @ ConfigValue (section = NODE_SECTION , name = "register-shutdown-on-failure" , example = "false" )
208
+ public boolean registerShutdownOnFailure = false ;
209
+
201
210
@ Parameter (
202
211
names = "--heartbeat-period" ,
203
212
description =
Original file line number Diff line number Diff line change @@ -205,6 +205,10 @@ public Duration getRegisterPeriod() {
205
205
return Duration .ofSeconds (seconds );
206
206
}
207
207
208
+ public boolean getRegisterShutdownOnFailure () {
209
+ return config .getBool (NODE_SECTION , "register-shutdown-on-failure" ).orElse (false );
210
+ }
211
+
208
212
public Duration getHeartbeatPeriod () {
209
213
// If the user sets 0 or less, we default to 1s.
210
214
int seconds =
Original file line number Diff line number Diff line change @@ -216,6 +216,18 @@ public NettyServer start() {
216
216
.withMaxDuration (nodeOptions .getRegisterPeriod ())
217
217
.withDelay (nodeOptions .getRegisterCycle ())
218
218
.handleResultIf (result -> true )
219
+ .onFailure (
220
+ event -> {
221
+ LOG .severe (
222
+ String .format (
223
+ "Registration event failed after period of %s seconds. Node will not"
224
+ + " attempt to register again" ,
225
+ nodeOptions .getRegisterPeriod ().getSeconds ()));
226
+ if (nodeOptions .getRegisterShutdownOnFailure ()) {
227
+ LOG .severe ("Shutting down" );
228
+ System .exit (1 );
229
+ }
230
+ })
219
231
.build ();
220
232
221
233
LOG .info ("Starting registration process for Node " + node .getUri ());
You can’t perform that action at this time.
0 commit comments