From ee65f3d39720524a1314a26f0acbcb79e3940a5c Mon Sep 17 00:00:00 2001 From: Michael Dodsworth Date: Thu, 20 Jun 2019 12:08:26 -0700 Subject: [PATCH 1/2] fixing JENKINS-53952: wait for spot instances to get an instance id --- src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java b/src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java index b4f376784..f5d598606 100644 --- a/src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java +++ b/src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java @@ -366,6 +366,13 @@ private Connection connectToSsh(EC2Computer computer, TaskListener listener) thr } String host = getEC2HostAddress(computer); + if ((computer.getNode() instanceof EC2SpotSlave) && computer.getInstanceId() == null) { + // getInstanceId() on EC2SpotSlave can return null if the spot request doesn't yet know + // the instance id that it is starting. Continue to wait until the instanceId is set. + logInfo(computer, listener, "empty instanceId for Spot Slave."); + throw new IOException("goto sleep"); + } + if ("0.0.0.0".equals(host)) { logWarning(computer, listener, "Invalid host 0.0.0.0, your host is most likely waiting for an ip address."); throw new IOException("goto sleep"); From 1504b9fd9c62b4591e9e612fe65e5e7fffc4916a Mon Sep 17 00:00:00 2001 From: Fabrizio Manfredi Furuholmen Date: Wed, 3 Jul 2019 17:21:41 +0200 Subject: [PATCH 2/2] Update EC2UnixLauncher.java --- src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java b/src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java index f5d598606..6be47f746 100644 --- a/src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java +++ b/src/main/java/hudson/plugins/ec2/ssh/EC2UnixLauncher.java @@ -366,7 +366,7 @@ private Connection connectToSsh(EC2Computer computer, TaskListener listener) thr } String host = getEC2HostAddress(computer); - if ((computer.getNode() instanceof EC2SpotSlave) && computer.getInstanceId() == null) { + if ((node instanceof EC2SpotSlave) && computer.getInstanceId() == null) { // getInstanceId() on EC2SpotSlave can return null if the spot request doesn't yet know // the instance id that it is starting. Continue to wait until the instanceId is set. logInfo(computer, listener, "empty instanceId for Spot Slave.");