In the code
https://github.com/jclouds/jclouds/blob/master/apis/ec2/src/main/java/org/jclouds/ec2/compute/EC2ComputeService.java#L151
If createNdoesInGroup fails to create a tag (addTagsAndNamesToInstancesInRegion
fails), it currently returns AWSResponseException. The caller has no way to
cleanup the the failed node as the exception doesn't have the node id field. It
should return RunNodesException which has fields containing failed nodes. The
caller can then remove such node and retry. To repro the issue try to create a
node with name larger than 300 character, it will create nodes with empty name
and possibly multiple of them if caller retries.
@Override
public Set<? extends NodeMetadata> createNodesInGroup(String group, int
count, final Template template)
throws RunNodesException {
Set<? extends NodeMetadata> nodes = super.createNodesInGroup(group,
count, template);
String region =
AWSUtils.getRegionFromLocationOrNull(template.getLocation());
if (client.getTagApiForRegion(region).isPresent()) {
Map<String, String> common =
metadataAndTagsAsValuesOfEmptyString(template.getOptions());
if (generateInstanceNames || !common.isEmpty() ||
!template.getOptions().getNodeNames().isEmpty()) {
return addTagsAndNamesToInstancesInRegion(common,
template.getOptions().getNodeNames(),
nodes, region, group);
}
}
return nodes;
}