Using the latest dev version of the EC2 plugin from GitHub, the launching of slaves sometimes fails due to an IndexOutOfBoundsException.
Relevant stack trace from Jenkins logs:
WARNING: Provisioned slave QIIME 1.6.0 AMI (Ubuntu 64-bit) (ami-10b12f79) failed to launch java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252) at java.util.concurrent.FutureTask.get(FutureTask.java:111) at hudson.plugins.ec2.EC2Cloud$1.call(EC2Cloud.java:344) at hudson.plugins.ec2.EC2Cloud$1.call(EC2Cloud.java:329) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:679) Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:571) at java.util.ArrayList.get(ArrayList.java:349) at hudson.plugins.ec2.EC2Computer._describeInstanceOnce(EC2Computer.java:142) at hudson.plugins.ec2.EC2Computer._describeInstance(EC2Computer.java:125) at hudson.plugins.ec2.EC2Computer.getState(EC2Computer.java:101) at hudson.plugins.ec2.EC2ComputerLauncher.launch(EC2ComputerLauncher.java:56) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:222) ... 5 more
This results in a disconnected node (from Jenkins' point of view) but the instance is still running on Amazon EC2. The Jenkins logs indicate that the slave is idle, but it is never terminated by the EC2 plugin, even though I have the idle termination time set to 10 minutes:
... QIIME 1.6.0 AMI (Ubuntu 64-bit) (i-54fb093e) idle: 32412220 QIIME 1.6.0 AMI (Ubuntu 64-bit) (i-54fb093e) idle: 32532221 ...
Other slaves using the same AMI are automatically launched just fine after this failure occurs.