[ 
https://issues.apache.org/jira/browse/JCLOUDS-767?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yaron Rosenbaum updated JCLOUDS-767:
------------------------------------
    Description: 
My program creates spot instances (see 'addNode' below).
Recently, in some cases I've been getting "RequestResourceCountExceeded" error 
(see below).

I am creating multiple nodes on multiple threads (3).
It appears that jClouds is polling node status too frequently, and AWS 
perceives this as a DOS attack. AWS polling queries fail on "The amount of data 
you requested and frequency of requests together exceed the levels allowed by 
the Spot service".

jClouds interprets this as a failure to create, whereas this is just a failure 
to poll.

The spot requests, however, are valid - and eventually fulfilled, but because 
of this error - they are never properly configured by jClouds, and in fact - 
are just left as orphans.

This scenario, in turn, ends up creating more and more nodes - endlessly, all 
left as orphans (but costing dear $).

So,
1) This specific error should not be interpreted as failure
2) The polling interval should be increased, or at least configurable
3) Maybe some sort of exponential backoff should be used in case this error 
happens
4) Failed spot requests should verify that the spot request is cancelled

(the code below happens on 3 threads, concurrently)
        public ComputeMetadata addNode(Template template) throws 
RunNodesException {
                ComputeMetadata result = 
Iterables.getOnlyElement(getComputeService().createNodesInGroup(getGroupName(), 
1, template));
                LOG.info("Node \"{}\" created", result.getName());

10:06:02.795 [main] INFO  io.multicloud.controller.AWSProvider - quorum is 
missing 3 nodes
10:06:03.077 [main] INFO  i.m.controller.CloudProviderImpl - Adding 3 nodes
10:06:04.113 [pool-3-thread-1] WARN  jclouds.compute - << not api visible 
instances([{region=us-east-1, name=sir-02gebgm2}])
10:06:04.342 [pool-3-thread-3] WARN  jclouds.compute - << not api visible 
instances([{region=us-east-1, name=sir-02gez2h5}])
10:06:04.460 [pool-3-thread-2] WARN  jclouds.compute - << not api visible 
instances([{region=us-east-1, name=sir-02ghn9t2}])
10:06:17.853 [user thread 1] ERROR jclouds.compute - << problem customizing 
node(us-east-1/sir-02gez2h5): 
org.jclouds.aws.AWSResponseException: request POST 
https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
AWSError{requestId='c5ffce45-02c3-4443-b4c2-42cfe3e2a7ef', requestToken='null', 
code='RequestResourceCountExceeded', message='the amount of data you requested 
and frequency of requests together exceed the levels allowed by the Spot 
service', context='{Response=, Errors=}'}
        at 
org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
 ~[sts-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
 ~[guava-17.0.jar:na]
        at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source) 
~[na:na]
        at 
org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
 ~[aws-ec2-1.8.1.jar:1.8.1]
        at 
org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
 ~[ec2-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63) 
~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42) 
~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
 [jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
 [jclouds-compute-1.8.1.jar:1.8.1]
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
[na:1.7.0_09]
        at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
[na:1.7.0_09]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
10:06:17.872 [pool-3-thread-3] ERROR i.m.controller.CloudProviderImpl - Failed 
to create node: 
org.jclouds.compute.RunNodesException: error running 1 node group(AWS-East-1) 
location(us-east-1) image(ami-06ff446e) size(m1.medium) 
options({userMetadata={TYPE=SPOT}, keyPair=Yaron, userDataCksum=c242210b, 
subnetId=subnet-4f5a433b, spotPrice=0.013, groupIds=[sg-ce6512ab, sg-d9cb77bc]})
Execution failures:

0 error[s]
Node failures:

1) AWSResponseException on node us-east-1/sir-02gez2h5:
org.jclouds.aws.AWSResponseException: request POST 
https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
AWSError{requestId='c5ffce45-02c3-4443-b4c2-42cfe3e2a7ef', requestToken='null', 
code='RequestResourceCountExceeded', message='the amount of data you requested 
and frequency of requests together exceed the levels allowed by the Spot 
service', context='{Response=, Errors=}'}
        at 
org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
        at 
org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
        at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
        at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
        at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source)
        at 
org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
        at 
org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
        at 
org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63)
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42)
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
        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:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)


1 error[s]
        at 
org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:222)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.ec2.compute.EC2ComputeService.createNodesInGroup(EC2ComputeService.java:148)
 ~[ec2-1.8.1.jar:1.8.1]
        at 
io.multicloud.controller.CloudProviderImpl.addNode(CloudProviderImpl.java:65) 
~[classes/:na]
        at 
io.multicloud.controller.CloudProviderImpl$CreateNewNodeTask.run(CloudProviderImpl.java:227)
 ~[classes/:na]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
[na:1.7.0_09]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
10:07:47.218 [user thread 0] ERROR jclouds.compute - << problem customizing 
node(us-east-1/sir-02gebgm2): 
org.jclouds.aws.AWSResponseException: request POST 
https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
AWSError{requestId='82736b80-b101-4111-acd0-69e3ce53d645', requestToken='null', 
code='RequestResourceCountExceeded', message='the amount of data you requested 
and frequency of requests together exceed the levels allowed by the Spot 
service', context='{Response=, Errors=}'}
        at 
org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
 ~[sts-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
 ~[guava-17.0.jar:na]
        at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source) 
~[na:na]
        at 
org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
 ~[aws-ec2-1.8.1.jar:1.8.1]
        at 
org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
 ~[ec2-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63) 
~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42) 
~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
 [jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
 [jclouds-compute-1.8.1.jar:1.8.1]
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
[na:1.7.0_09]
        at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
[na:1.7.0_09]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
10:07:47.220 [pool-3-thread-1] ERROR i.m.controller.CloudProviderImpl - Failed 
to create node: 
org.jclouds.compute.RunNodesException: error running 1 node group(AWS-East-1) 
location(us-east-1) image(ami-06ff446e) size(m1.medium) 
options({userMetadata={TYPE=SPOT}, keyPair=Yaron, userDataCksum=c242210b, 
subnetId=subnet-0afda622, spotPrice=0.013, groupIds=[sg-ce6512ab, sg-d9cb77bc]})
Execution failures:

0 error[s]
Node failures:

1) AWSResponseException on node us-east-1/sir-02gebgm2:
org.jclouds.aws.AWSResponseException: request POST 
https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
AWSError{requestId='82736b80-b101-4111-acd0-69e3ce53d645', requestToken='null', 
code='RequestResourceCountExceeded', message='the amount of data you requested 
and frequency of requests together exceed the levels allowed by the Spot 
service', context='{Response=, Errors=}'}
        at 
org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
        at 
org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
        at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
        at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
        at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source)
        at 
org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
        at 
org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
        at 
org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63)
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42)
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
        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:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)


1 error[s]
        at 
org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:222)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.ec2.compute.EC2ComputeService.createNodesInGroup(EC2ComputeService.java:148)
 ~[ec2-1.8.1.jar:1.8.1]
        at 
io.multicloud.controller.CloudProviderImpl.addNode(CloudProviderImpl.java:65) 
~[classes/:na]
        at 
io.multicloud.controller.CloudProviderImpl$CreateNewNodeTask.run(CloudProviderImpl.java:227)
 ~[classes/:na]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
[na:1.7.0_09]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
10:09:24.051 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - Node 
"AWS-East-1-8b5f5f66" created
10:09:24.051 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - Adding 
node "AWS-East-1-8b5f5f66" to load balancer
10:09:25.110 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - 
Creating node using template: {image={id=us-east-1/ami-06ff446e, 
providerId=ami-06ff446e, name=CoreOS-beta-444.5.0, location={scope=REGION, 
id=us-east-1, description=us-east-1, parent=aws-ec2, iso3166Codes=[US-VA]}, 
os={family=unrecognized, arch=paravirtual, version=, 
description=595879546273/CoreOS-beta-444.5.0, is64Bit=true}, description=CoreOS 
beta 444.5.0 (PV), status=AVAILABLE[available], loginUser=root, 
userMetadata={owner=595879546273, rootDeviceType=ebs, 
virtualizationType=paravirtual, hypervisor=xen}}, hardware={id=m1.medium, 
providerId=m1.medium, processors=[{cores=1.0, speed=2.0}], ram=3750, 
volumes=[{type=LOCAL, size=10.0, device=/dev/sda1, bootDevice=true, 
durable=false}, {type=LOCAL, size=420.0, device=/dev/sdb, bootDevice=false, 
durable=false}, {type=LOCAL, size=420.0, device=/dev/sdc, bootDevice=false, 
durable=false}], 
supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(isWindows(),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue())},
 location={scope=REGION, id=us-east-1, description=us-east-1, parent=aws-ec2, 
iso3166Codes=[US-VA]}, options={userMetadata={TYPE=SPOT}, keyPair=Yaron, 
userDataCksum=c242210b, subnetId=subnet-50cdf616, spotPrice=0.013, 
groupIds=[sg-ce6512ab, sg-d9cb77bc]}}



  was:
My program creates spot instances (see 'addNode' below).
Recently, in some cases I've been getting "RequestResourceCountExceeded" error 
(see below).

The problem is that JClouds throws an exception, but the spot request IS 
created and executed by AWS. The node is never properly configured. Thus, I 
have no way to cancel the spot request (there's no node ID).

Correct behaviour should be: Failure should leave no active spot requests.
At the very least, there should be a way to cancel the spot request if it fails.

Also, it does seem like it shouldn't have failed - since the spot request is 
successful...




        public ComputeMetadata addNode(Template template) throws 
RunNodesException {
                ComputeMetadata result = 
Iterables.getOnlyElement(getComputeService().createNodesInGroup(getGroupName(), 
1, template));
                LOG.info("Node \"{}\" created", result.getName());
                if (isLoadBalancerLogicEnabled()) {
                        LOG.info("Adding node \"{}\" to load balancer", 
result.getName());
                        addNodeToLoadBalancer(result);
                }


10:05:43.966 [main] INFO  io.multicloud.controller.AWSProvider - Successfully 
created compute context
10:06:02.795 [main] DEBUG i.m.controller.CloudProviderImpl - Current nodes:
10:06:02.795 [main] INFO  io.multicloud.controller.AWSProvider - quorum is 
missing 3 nodes
10:06:03.077 [main] INFO  i.m.controller.CloudProviderImpl - Adding 3 nodes
10:06:04.113 [pool-3-thread-1] WARN  jclouds.compute - << not api visible 
instances([{region=us-east-1, name=sir-02gebgm2}])
10:06:04.342 [pool-3-thread-3] WARN  jclouds.compute - << not api visible 
instances([{region=us-east-1, name=sir-02gez2h5}])
10:06:04.460 [pool-3-thread-2] WARN  jclouds.compute - << not api visible 
instances([{region=us-east-1, name=sir-02ghn9t2}])
10:06:17.853 [user thread 1] ERROR jclouds.compute - << problem customizing 
node(us-east-1/sir-02gez2h5): 
org.jclouds.aws.AWSResponseException: request POST 
https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
AWSError{requestId='c5ffce45-02c3-4443-b4c2-42cfe3e2a7ef', requestToken='null', 
code='RequestResourceCountExceeded', message='the amount of data you requested 
and frequency of requests together exceed the levels allowed by the Spot 
service', context='{Response=, Errors=}'}
        at 
org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
 ~[sts-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
 ~[guava-17.0.jar:na]
        at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source) 
~[na:na]
        at 
org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
 ~[aws-ec2-1.8.1.jar:1.8.1]
        at 
org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
 ~[ec2-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63) 
~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42) 
~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
 [jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
 [jclouds-compute-1.8.1.jar:1.8.1]
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
[na:1.7.0_09]
        at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
[na:1.7.0_09]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
10:06:17.872 [pool-3-thread-3] ERROR i.m.controller.CloudProviderImpl - Failed 
to create node: 
org.jclouds.compute.RunNodesException: error running 1 node group(AWS-East-1) 
location(us-east-1) image(ami-06ff446e) size(m1.medium) 
options({userMetadata={TYPE=SPOT}, keyPair=Yaron, userDataCksum=c242210b, 
subnetId=subnet-4f5a433b, spotPrice=0.013, groupIds=[sg-ce6512ab, sg-d9cb77bc]})
Execution failures:

0 error[s]
Node failures:

1) AWSResponseException on node us-east-1/sir-02gez2h5:
org.jclouds.aws.AWSResponseException: request POST 
https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
AWSError{requestId='c5ffce45-02c3-4443-b4c2-42cfe3e2a7ef', requestToken='null', 
code='RequestResourceCountExceeded', message='the amount of data you requested 
and frequency of requests together exceed the levels allowed by the Spot 
service', context='{Response=, Errors=}'}
        at 
org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
        at 
org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
        at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
        at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
        at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source)
        at 
org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
        at 
org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
        at 
org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63)
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42)
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
        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:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)


1 error[s]
        at 
org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:222)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.ec2.compute.EC2ComputeService.createNodesInGroup(EC2ComputeService.java:148)
 ~[ec2-1.8.1.jar:1.8.1]
        at 
io.multicloud.controller.CloudProviderImpl.addNode(CloudProviderImpl.java:65) 
~[classes/:na]
        at 
io.multicloud.controller.CloudProviderImpl$CreateNewNodeTask.run(CloudProviderImpl.java:227)
 ~[classes/:na]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
[na:1.7.0_09]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
10:07:47.218 [user thread 0] ERROR jclouds.compute - << problem customizing 
node(us-east-1/sir-02gebgm2): 
org.jclouds.aws.AWSResponseException: request POST 
https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
AWSError{requestId='82736b80-b101-4111-acd0-69e3ce53d645', requestToken='null', 
code='RequestResourceCountExceeded', message='the amount of data you requested 
and frequency of requests together exceed the levels allowed by the Spot 
service', context='{Response=, Errors=}'}
        at 
org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
 ~[sts-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
 ~[jclouds-core-1.8.1.jar:1.8.1]
        at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
 ~[guava-17.0.jar:na]
        at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source) 
~[na:na]
        at 
org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
 ~[aws-ec2-1.8.1.jar:1.8.1]
        at 
org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
 ~[ec2-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111) 
~[jclouds-core-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63) 
~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42) 
~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
 [jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
 [jclouds-compute-1.8.1.jar:1.8.1]
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
[na:1.7.0_09]
        at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
[na:1.7.0_09]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
10:07:47.220 [pool-3-thread-1] ERROR i.m.controller.CloudProviderImpl - Failed 
to create node: 
org.jclouds.compute.RunNodesException: error running 1 node group(AWS-East-1) 
location(us-east-1) image(ami-06ff446e) size(m1.medium) 
options({userMetadata={TYPE=SPOT}, keyPair=Yaron, userDataCksum=c242210b, 
subnetId=subnet-0afda622, spotPrice=0.013, groupIds=[sg-ce6512ab, sg-d9cb77bc]})
Execution failures:

0 error[s]
Node failures:

1) AWSResponseException on node us-east-1/sir-02gebgm2:
org.jclouds.aws.AWSResponseException: request POST 
https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
AWSError{requestId='82736b80-b101-4111-acd0-69e3ce53d645', requestToken='null', 
code='RequestResourceCountExceeded', message='the amount of data you requested 
and frequency of requests together exceed the levels allowed by the Spot 
service', context='{Response=, Errors=}'}
        at 
org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
        at 
org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
        at 
org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
        at 
org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
        at 
org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
        at 
com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
        at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source)
        at 
org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
        at 
org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
        at 
org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
        at 
org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
        at 
org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
        at 
org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63)
        at 
org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42)
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
        at 
org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
        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:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)


1 error[s]
        at 
org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:222)
 ~[jclouds-compute-1.8.1.jar:1.8.1]
        at 
org.jclouds.ec2.compute.EC2ComputeService.createNodesInGroup(EC2ComputeService.java:148)
 ~[ec2-1.8.1.jar:1.8.1]
        at 
io.multicloud.controller.CloudProviderImpl.addNode(CloudProviderImpl.java:65) 
~[classes/:na]
        at 
io.multicloud.controller.CloudProviderImpl$CreateNewNodeTask.run(CloudProviderImpl.java:227)
 ~[classes/:na]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
[na:1.7.0_09]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
[na:1.7.0_09]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
10:09:24.051 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - Node 
"AWS-East-1-8b5f5f66" created
10:09:24.051 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - Adding 
node "AWS-East-1-8b5f5f66" to load balancer
10:09:25.110 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - 
Creating node using template: {image={id=us-east-1/ami-06ff446e, 
providerId=ami-06ff446e, name=CoreOS-beta-444.5.0, location={scope=REGION, 
id=us-east-1, description=us-east-1, parent=aws-ec2, iso3166Codes=[US-VA]}, 
os={family=unrecognized, arch=paravirtual, version=, 
description=595879546273/CoreOS-beta-444.5.0, is64Bit=true}, description=CoreOS 
beta 444.5.0 (PV), status=AVAILABLE[available], loginUser=root, 
userMetadata={owner=595879546273, rootDeviceType=ebs, 
virtualizationType=paravirtual, hypervisor=xen}}, hardware={id=m1.medium, 
providerId=m1.medium, processors=[{cores=1.0, speed=2.0}], ram=3750, 
volumes=[{type=LOCAL, size=10.0, device=/dev/sda1, bootDevice=true, 
durable=false}, {type=LOCAL, size=420.0, device=/dev/sdb, bootDevice=false, 
durable=false}, {type=LOCAL, size=420.0, device=/dev/sdc, bootDevice=false, 
durable=false}], 
supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(isWindows(),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue())},
 location={scope=REGION, id=us-east-1, description=us-east-1, parent=aws-ec2, 
iso3166Codes=[US-VA]}, options={userMetadata={TYPE=SPOT}, keyPair=Yaron, 
userDataCksum=c242210b, subnetId=subnet-50cdf616, spotPrice=0.013, 
groupIds=[sg-ce6512ab, sg-d9cb77bc]}}
10:09:39.105 [main] DEBUG i.m.controller.CloudProviderImpl - Current nodes:
10:09:39.105 [main] DEBUG i.m.controller.CloudProviderImpl - Name: 
AWS-East-1-8b5f5f66, User metadata: {TYPE=SPOT, Name=AWS-East-1-8b5f5f66}
10:09:39.106 [main] INFO  io.multicloud.controller.AWSProvider - Optimizing 
availability: Adding 1 nodes
10:09:39.106 [main] INFO  i.m.controller.CloudProviderImpl - Adding 1 nodes




> Creating multiple spot instances fails. Status polling too frequent?
> --------------------------------------------------------------------
>
>                 Key: JCLOUDS-767
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-767
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-compute
>    Affects Versions: 1.8.1
>         Environment: AWS, Spot instances, CoreOS
>            Reporter: Yaron Rosenbaum
>            Priority: Blocker
>              Labels: AWS, DOS, Spot
>
> My program creates spot instances (see 'addNode' below).
> Recently, in some cases I've been getting "RequestResourceCountExceeded" 
> error (see below).
> I am creating multiple nodes on multiple threads (3).
> It appears that jClouds is polling node status too frequently, and AWS 
> perceives this as a DOS attack. AWS polling queries fail on "The amount of 
> data you requested and frequency of requests together exceed the levels 
> allowed by the Spot service".
> jClouds interprets this as a failure to create, whereas this is just a 
> failure to poll.
> The spot requests, however, are valid - and eventually fulfilled, but because 
> of this error - they are never properly configured by jClouds, and in fact - 
> are just left as orphans.
> This scenario, in turn, ends up creating more and more nodes - endlessly, all 
> left as orphans (but costing dear $).
> So,
> 1) This specific error should not be interpreted as failure
> 2) The polling interval should be increased, or at least configurable
> 3) Maybe some sort of exponential backoff should be used in case this error 
> happens
> 4) Failed spot requests should verify that the spot request is cancelled
> (the code below happens on 3 threads, concurrently)
>       public ComputeMetadata addNode(Template template) throws 
> RunNodesException {
>               ComputeMetadata result = 
> Iterables.getOnlyElement(getComputeService().createNodesInGroup(getGroupName(),
>  1, template));
>               LOG.info("Node \"{}\" created", result.getName());
> 10:06:02.795 [main] INFO  io.multicloud.controller.AWSProvider - quorum is 
> missing 3 nodes
> 10:06:03.077 [main] INFO  i.m.controller.CloudProviderImpl - Adding 3 nodes
> 10:06:04.113 [pool-3-thread-1] WARN  jclouds.compute - << not api visible 
> instances([{region=us-east-1, name=sir-02gebgm2}])
> 10:06:04.342 [pool-3-thread-3] WARN  jclouds.compute - << not api visible 
> instances([{region=us-east-1, name=sir-02gez2h5}])
> 10:06:04.460 [pool-3-thread-2] WARN  jclouds.compute - << not api visible 
> instances([{region=us-east-1, name=sir-02ghn9t2}])
> 10:06:17.853 [user thread 1] ERROR jclouds.compute - << problem customizing 
> node(us-east-1/sir-02gez2h5): 
> org.jclouds.aws.AWSResponseException: request POST 
> https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
> AWSError{requestId='c5ffce45-02c3-4443-b4c2-42cfe3e2a7ef', 
> requestToken='null', code='RequestResourceCountExceeded', message='the amount 
> of data you requested and frequency of requests together exceed the levels 
> allowed by the Spot service', context='{Response=, Errors=}'}
>       at 
> org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
>  ~[sts-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
>  ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
>  ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
>  ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) 
> ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) 
> ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) 
> ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
>  ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
>  ~[guava-17.0.jar:na]
>       at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source) 
> ~[na:na]
>       at 
> org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
>  ~[aws-ec2-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
>  ~[ec2-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111) 
> ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63) 
> ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42) 
> ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
>  [jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
>  [jclouds-compute-1.8.1.jar:1.8.1]
>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
> [na:1.7.0_09]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
> [na:1.7.0_09]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>  [na:1.7.0_09]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>  [na:1.7.0_09]
>       at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
> 10:06:17.872 [pool-3-thread-3] ERROR i.m.controller.CloudProviderImpl - 
> Failed to create node: 
> org.jclouds.compute.RunNodesException: error running 1 node group(AWS-East-1) 
> location(us-east-1) image(ami-06ff446e) size(m1.medium) 
> options({userMetadata={TYPE=SPOT}, keyPair=Yaron, userDataCksum=c242210b, 
> subnetId=subnet-4f5a433b, spotPrice=0.013, groupIds=[sg-ce6512ab, 
> sg-d9cb77bc]})
> Execution failures:
> 0 error[s]
> Node failures:
> 1) AWSResponseException on node us-east-1/sir-02gez2h5:
> org.jclouds.aws.AWSResponseException: request POST 
> https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
> AWSError{requestId='c5ffce45-02c3-4443-b4c2-42cfe3e2a7ef', 
> requestToken='null', code='RequestResourceCountExceeded', message='the amount 
> of data you requested and frequency of requests together exceed the levels 
> allowed by the Spot service', context='{Response=, Errors=}'}
>       at 
> org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
>       at 
> org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
>       at 
> org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
>       at 
> org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
>       at 
> org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
>       at 
> com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
>       at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source)
>       at 
> org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
>       at 
> org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
>       at 
> org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
>       at 
> org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
>       at 
> org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
>       at 
> org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
>       at 
> org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111)
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
>       at 
> org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63)
>       at 
> org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42)
>       at 
> org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
>       at 
> org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
>       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:1110)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>       at java.lang.Thread.run(Thread.java:722)
> 1 error[s]
>       at 
> org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:222)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.ec2.compute.EC2ComputeService.createNodesInGroup(EC2ComputeService.java:148)
>  ~[ec2-1.8.1.jar:1.8.1]
>       at 
> io.multicloud.controller.CloudProviderImpl.addNode(CloudProviderImpl.java:65) 
> ~[classes/:na]
>       at 
> io.multicloud.controller.CloudProviderImpl$CreateNewNodeTask.run(CloudProviderImpl.java:227)
>  ~[classes/:na]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>  [na:1.7.0_09]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>  [na:1.7.0_09]
>       at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
> 10:07:47.218 [user thread 0] ERROR jclouds.compute - << problem customizing 
> node(us-east-1/sir-02gebgm2): 
> org.jclouds.aws.AWSResponseException: request POST 
> https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
> AWSError{requestId='82736b80-b101-4111-acd0-69e3ce53d645', 
> requestToken='null', code='RequestResourceCountExceeded', message='the amount 
> of data you requested and frequency of requests together exceed the levels 
> allowed by the Spot service', context='{Response=, Errors=}'}
>       at 
> org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
>  ~[sts-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
>  ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
>  ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
>  ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) 
> ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73) 
> ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44) 
> ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
>  ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
>  ~[guava-17.0.jar:na]
>       at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source) 
> ~[na:na]
>       at 
> org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
>  ~[aws-ec2-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
>  ~[ec2-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111) 
> ~[jclouds-core-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63) 
> ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42) 
> ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
>  [jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
>  [jclouds-compute-1.8.1.jar:1.8.1]
>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
> [na:1.7.0_09]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
> [na:1.7.0_09]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>  [na:1.7.0_09]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>  [na:1.7.0_09]
>       at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
> 10:07:47.220 [pool-3-thread-1] ERROR i.m.controller.CloudProviderImpl - 
> Failed to create node: 
> org.jclouds.compute.RunNodesException: error running 1 node group(AWS-East-1) 
> location(us-east-1) image(ami-06ff446e) size(m1.medium) 
> options({userMetadata={TYPE=SPOT}, keyPair=Yaron, userDataCksum=c242210b, 
> subnetId=subnet-0afda622, spotPrice=0.013, groupIds=[sg-ce6512ab, 
> sg-d9cb77bc]})
> Execution failures:
> 0 error[s]
> Node failures:
> 1) AWSResponseException on node us-east-1/sir-02gebgm2:
> org.jclouds.aws.AWSResponseException: request POST 
> https://ec2.us-east-1.amazonaws.com/ HTTP/1.1 failed with code 400, error: 
> AWSError{requestId='82736b80-b101-4111-acd0-69e3ce53d645', 
> requestToken='null', code='RequestResourceCountExceeded', message='the amount 
> of data you requested and frequency of requests together exceed the levels 
> allowed by the Spot service', context='{Response=, Errors=}'}
>       at 
> org.jclouds.aws.handlers.ParseAWSErrorFromXmlContent.handleError(ParseAWSErrorFromXmlContent.java:75)
>       at 
> org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
>       at 
> org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:128)
>       at 
> org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:98)
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
>       at 
> org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
>       at 
> org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
>       at 
> com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
>       at $Proxy70.describeSpotInstanceRequestsInRegion(Unknown Source)
>       at 
> org.jclouds.aws.ec2.compute.strategy.AWSEC2GetNodeMetadataStrategy.getRunningInstanceInRegion(AWSEC2GetNodeMetadataStrategy.java:53)
>       at 
> org.jclouds.ec2.compute.strategy.EC2GetNodeMetadataStrategy.getNode(EC2GetNodeMetadataStrategy.java:56)
>       at 
> org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:58)
>       at 
> org.jclouds.compute.predicates.internal.RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.refreshOrNull(RefreshNodeAndDoubleCheckOnFailUnlessStatusInvalid.java:38)
>       at 
> org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:57)
>       at 
> org.jclouds.compute.predicates.internal.RefreshAndDoubleCheckOnFailUnlessStatusInvalid.apply(RefreshAndDoubleCheckOnFailUnlessStatusInvalid.java:40)
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:142)
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull$1.apply(ComputeServiceTimeoutsModule.java:137)
>       at 
> org.jclouds.util.Predicates2$RetryablePredicate.apply(Predicates2.java:111)
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:154)
>       at 
> org.jclouds.compute.config.ComputeServiceTimeoutsModule$RetryablePredicateGuardingNull.apply(ComputeServiceTimeoutsModule.java:118)
>       at 
> org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:63)
>       at 
> org.jclouds.compute.functions.PollNodeRunning.apply(PollNodeRunning.java:42)
>       at 
> org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:117)
>       at 
> org.jclouds.compute.strategy.CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.call(CustomizeNodeAndAddToGoodMapOrPutExceptionIntoBadMap.java:49)
>       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:1110)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>       at java.lang.Thread.run(Thread.java:722)
> 1 error[s]
>       at 
> org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:222)
>  ~[jclouds-compute-1.8.1.jar:1.8.1]
>       at 
> org.jclouds.ec2.compute.EC2ComputeService.createNodesInGroup(EC2ComputeService.java:148)
>  ~[ec2-1.8.1.jar:1.8.1]
>       at 
> io.multicloud.controller.CloudProviderImpl.addNode(CloudProviderImpl.java:65) 
> ~[classes/:na]
>       at 
> io.multicloud.controller.CloudProviderImpl$CreateNewNodeTask.run(CloudProviderImpl.java:227)
>  ~[classes/:na]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>  [na:1.7.0_09]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>  [na:1.7.0_09]
>       at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09]
> 10:09:24.051 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - Node 
> "AWS-East-1-8b5f5f66" created
> 10:09:24.051 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - 
> Adding node "AWS-East-1-8b5f5f66" to load balancer
> 10:09:25.110 [pool-3-thread-2] INFO  i.m.controller.CloudProviderImpl - 
> Creating node using template: {image={id=us-east-1/ami-06ff446e, 
> providerId=ami-06ff446e, name=CoreOS-beta-444.5.0, location={scope=REGION, 
> id=us-east-1, description=us-east-1, parent=aws-ec2, iso3166Codes=[US-VA]}, 
> os={family=unrecognized, arch=paravirtual, version=, 
> description=595879546273/CoreOS-beta-444.5.0, is64Bit=true}, 
> description=CoreOS beta 444.5.0 (PV), status=AVAILABLE[available], 
> loginUser=root, userMetadata={owner=595879546273, rootDeviceType=ebs, 
> virtualizationType=paravirtual, hypervisor=xen}}, hardware={id=m1.medium, 
> providerId=m1.medium, processors=[{cores=1.0, speed=2.0}], ram=3750, 
> volumes=[{type=LOCAL, size=10.0, device=/dev/sda1, bootDevice=true, 
> durable=false}, {type=LOCAL, size=420.0, device=/dev/sdb, bootDevice=false, 
> durable=false}, {type=LOCAL, size=420.0, device=/dev/sdc, bootDevice=false, 
> durable=false}], 
> supportsImage=Predicates.and(Predicates.alwaysTrue(),Predicates.or(isWindows(),requiresVirtualizationType(paravirtual)),Predicates.alwaysTrue(),Predicates.alwaysTrue())},
>  location={scope=REGION, id=us-east-1, description=us-east-1, parent=aws-ec2, 
> iso3166Codes=[US-VA]}, options={userMetadata={TYPE=SPOT}, keyPair=Yaron, 
> userDataCksum=c242210b, subnetId=subnet-50cdf616, spotPrice=0.013, 
> groupIds=[sg-ce6512ab, sg-d9cb77bc]}}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to