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
Priority: Minor
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