You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@whirr.apache.org by "Adrian Cole (JIRA)" <ji...@apache.org> on 2011/08/13 13:23:27 UTC

[jira] [Reopened] (WHIRR-349) Retry if blobstore put fails

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

Adrian Cole reopened WHIRR-349:
-------------------------------

      Assignee: Adrian Cole  (was: Karel Vervaeke)

this issue can be worked around, if the endpoint relevant to the s3 region being used in assigned via configuration.  However, current code does not allow properties to be passed to the BlobStore.  This is resolved in WHIRR-362.

RECOMMENDATION:

We have a reasonable workaround which is much better than saying Whirr can only work in EC2 us-east-1.

Apply WHIRR-362 and dependencies, then retest with the following configuration, which I've tested to work:

whirr.blobstore-location-id=EU
jclouds.aws-s3.endpoint=https://s3-eu-west-1.amazonaws.com

> Retry if blobstore put fails
> ----------------------------
>
>                 Key: WHIRR-349
>                 URL: https://issues.apache.org/jira/browse/WHIRR-349
>             Project: Whirr
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 0.6.0
>         Environment: Ubuntu 11.04
> java version "1.6.0_26"
> Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
> Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
> (using https://github.com/bdumon/whirr 13cd70e which uses a jclouds 1.1.0-SNAPSHOT)
>            Reporter: Karel Vervaeke
>            Assignee: Adrian Cole
>            Priority: Minor
>             Fix For: 0.6.0
>
>         Attachments: WHIRR-349.patch, WHIRR-349.patch, failcase.zip
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> When the blobstore fails to upload a file, it might be worth retrying a couple of times rather than just aborting
> the whole process.
> OTOH, the failure would occur *before* any machines are launched, so the loss is limited.
> Here's an example stacktrace of a failed upload:
> Created blob cache container 'fr6mxqa4d6aa' located in '[id=EU, scope=REGION, description=EU, parent=aws-s3, iso3166Codes=[IE], metadata={}]'
> Uploading 'mydecorator-1.0-SNAPSHOT.tar.gz' to 'fr6mxqa4d6aa' blob cache.
> Jul 29, 2011 8:53:50 AM org.jclouds.logging.jdk.JDKLogger logWarn
> WARNING: Cannot retry after server error, command is not replayable: [method=AWSS3AsyncClient.putObject, request=PUT https://fr6mxqa4d6aa.s3.amazonaws.com/mydecorator-1.0-SNAPSHOT.tar.gz HTTP/1.1]
> Exception in thread "main" org.jclouds.http.HttpResponseException: error after writing 335872/637480 bytes to PUT https://fr6mxqa4d6aa.s3.amazonaws.com/mydecorator-1.0-SNAPSHOT.tar.gz HTTP/1.1 connecting to PUT https://fr6mxqa4d6aa.s3.amazonaws.com/mydecorator-1.0-SNAPSHOT.tar.gz HTTP/1.1
> 	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:183)
> 	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:134)
> 	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:679)
> Caused by: java.lang.RuntimeException: error after writing 335872/637480 bytes to PUT https://fr6mxqa4d6aa.s3.amazonaws.com/mydecorator-1.0-SNAPSHOT.tar.gz HTTP/1.1
> 	at org.jclouds.http.internal.JavaUrlHttpCommandExecutorService.convert(JavaUrlHttpCommandExecutorService.java:245)
> 	at org.jclouds.http.internal.JavaUrlHttpCommandExecutorService.convert(JavaUrlHttpCommandExecutorService.java:77)
> 	at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:156)
> 	... 6 more
> Caused by: java.io.IOException: Error writing request body to server
> 	at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:2716)
> 	at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:2699)
> 	at com.google.common.io.CountingOutputStream.write(CountingOutputStream.java:51)
> 	at com.google.common.io.ByteStreams.copy(ByteStreams.java:172)
> 	at org.jclouds.io.payloads.BasePayload.writeTo(BasePayload.java:67)
> 	at org.jclouds.http.internal.JavaUrlHttpCommandExecutorService.convert(JavaUrlHttpCommandExecutorService.java:243)
> 	... 8 more
> Removing blob cache 'fr6mxqa4d6aa'

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira