diff --git a/src/main/java/hudson/plugins/ec2/EC2RetentionStrategy.java b/src/main/java/hudson/plugins/ec2/EC2RetentionStrategy.java index 748e88fef..159a35da6 100644 --- a/src/main/java/hudson/plugins/ec2/EC2RetentionStrategy.java +++ b/src/main/java/hudson/plugins/ec2/EC2RetentionStrategy.java @@ -131,9 +131,14 @@ private long internalCheck(EC2Computer computer) { SlaveTemplate slaveTemplate = computer.getSlaveTemplate(); if (slaveTemplate != null) { long numberOfCurrentInstancesForTemplate = MinimumInstanceChecker.countCurrentNumberOfAgents(slaveTemplate); - if (numberOfCurrentInstancesForTemplate > 0 && numberOfCurrentInstancesForTemplate <= slaveTemplate.getMinimumNumberOfInstances()) { - //Check if we're in an active time-range for keeping minimum number of instances + long numberOfCurrentSpareInstancesForTemplate = MinimumInstanceChecker.countCurrentNumberOfSpareAgents(slaveTemplate); + boolean atOrBelowMinInstances = numberOfCurrentInstancesForTemplate > 0 && numberOfCurrentInstancesForTemplate <= slaveTemplate.getMinimumNumberOfInstances(); + boolean atOrBelowMinSpareInstances = numberOfCurrentSpareInstancesForTemplate > 0 && numberOfCurrentSpareInstancesForTemplate <= slaveTemplate.getMinimumNumberOfSpareInstances(); + if (atOrBelowMinInstances || atOrBelowMinSpareInstances) { + // Check if we're in an active time-range for keeping minimum number of instances if (MinimumInstanceChecker.minimumInstancesActive(slaveTemplate.getMinimumNumberOfInstancesTimeRangeConfig())) { + // Time range is active and we are at (or below) one of the "minimum number" settings, so return here + // to avoid terminating any instances seeing as MinimumInstanceChecker will immediately re-provision return 1; } }