jclouds-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ignasi Barrera <n...@apache.org>
Subject Re: Insufficient timeout length creating servers in callable threads
Date Wed, 07 May 2014 15:03:51 GMT
Hi Daniel,

The timeout for the node running is 20 minutes by default, and should
be the same regardless of where you use it, and it should be possible
to create servers concurrently in a multi-threaded environment. Could
you share your code in a gist [1] or pastie [2] , so we can have a
better idea of how you are creating the servers?


Thanks!

Ignasi


[1] https://gist.github.com/
[2] http://pastie.org/



On 7 May 2014 00:42, Daniel Widdis <widdis@gmail.com> wrote:
> I'm relatively new to jclouds, using it to create (and delete) servers on
> Rackspace, and have been steadily trying to improve its use in my code.
>
> I have developed a class based on the excellent examples provided in
> org.jclouds.examples.rackspace.cloudservers and they have been working fine.
>
> In my code I have a need to build three types of servers from my saved
> images, and am currently doing so with consecutive calls to a server
> creation class, which eventually calls computeService.createNodesInGroup().
> The build process has been taking from a few seconds to a few minutes
> routinely, with occasional long creation times of about 20 minutes, but
> usually in about the 3 or 4 minute range.   Building three different types
> of images in sequence has been taking up to 10 minutes to complete.
>
> In order to try to speed up this process, I have tried to multi-thread my
> server generation calls using the Callable interface (basically replacing
> create() and delete() with call() and using an ExecutorService to submit()
> the creation task and get() the resulting NodeMetadata.   The code executes
> just fine in a test case where I invoke the call() method sequentially, but
> when I submit the same code to the Executor, it does not work. I am
> successfully creating all the servers I ask for, but the threaded calls I'm
> using to return the NodeMetadata are all timing out with errors similar to
> this:
>
> SEVERE: << problem customizing
> node(IAD/a04b5524-1c75-459b-b7ec-bd3256f52928):
> java.lang.IllegalStateException:
> node(IAD/a04b5524-1c75-459b-b7ec-bd3256f52928) didn't achieve the status
> running; aborting after 124 seconds with final status: PENDING
>
> I've seen times from 124 seconds (shortest) to 179 seconds (longest).
>
> After research, I found jclouds.compute.timeout.node-running value in the
> org.jclouds.compute.functions.PollNodeRunning class is what I wanted to try
> to manipulate here, and used ComputeService Properties to override that
> setting with 30 minutes; however, that introduces a new error:
>
> SEVERE: RuntimeException while executing runnable
> callGetOnFuture(server-test-5be,com.google.common.util.concurrent.Futures$ChainingListenableFuture@2a6a4239)
> with executor
> com.google.common.util.concurrent.MoreExecutors$ListeningDecorator@2621c1f0
> java.util.concurrent.RejectedExecutionException:
> java.lang.InterruptedException
>     at
> org.jclouds.concurrent.DynamicThreadPoolExecutor$ForceQueuePolicy.rejectedExecution(DynamicThreadPoolExecutor.java:132)
>
> So, my questions are:
>
> 1. Why is the timeout.node-running value different when running in a
> Callable thread vs. when running sequentially?  What is its default?
>
> 2. Why might I be getting the second exception?  Is it not possible to
> multithread server creation?  Are there any working examples of a
> multithreaded implementation?
>

Mime
View raw message