[ 
https://issues.apache.org/jira/browse/JCLOUDS-1179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15493209#comment-15493209
 ] 

Nick Howes commented on JCLOUDS-1179:
-------------------------------------

On a blobStore.getBlob, when BaseHttpCommandExecutorService encounters a 401 it 
is returned as a normal response and so handled by the client retry handler, 
which is RetryOnRenew which renews tokens. On a blobStore.putBlob, a 
ProtocolException is thrown and it is handled by the IOExceptionRetryHandler, 
which is BackoffLimitedRetryHandler which retries 5 times but doesn't renew 
tokens.

This seems to be because of HttpUrlConnection (the Sun/Oracle implementation 
anyway), which will throw {{ProtocolException("Server rejected operation")}} if 
the request has {{Expect: 100-Continue}} header but it receives anything other 
than a 100.



> putBlob doesn't handle 401s 
> ----------------------------
>
>                 Key: JCLOUDS-1179
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1179
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-blobstore
>    Affects Versions: 1.9.2, 2.0.0
>         Environment: Devstack on Ubuntu 14.04
>            Reporter: Nick Howes
>              Labels: openstack-swift, swift
>
> After the token used by jclouds expires, subsequent `putBlob` requests to 
> swift fail with 401.
> Unlike other operations, the `putBlob` command does not resolve this by 
> `POST`ing to keystone, but instead tries a few times to `PUT` the blob to 
> swift. Each request fails with a 401 and then it gives up.
> Other operations such as a get _will_ handle a retry by refreshing the auth 
> token, after which subsequent puts work (until the next expiry)
> Project to reproduce can be found here 
> https://github.com/UniversityofWarwick/jclouds-bug
> It should be noted that when running this script I have altered [token] 
> expiration in /etc/keystone/keystone.conf to be 2 seconds.



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

Reply via email to