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

Andrew Gaul resolved JCLOUDS-1073.
----------------------------------
       Resolution: Fixed
         Assignee: Andrew Gaul
    Fix Version/s: 2.0.0

> in local-fs getBlob with open-ended range: parseInt instead of parseLong -> 
> NumberFormatException
> -------------------------------------------------------------------------------------------------
>
>                 Key: JCLOUDS-1073
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-1073
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-blobstore
>    Affects Versions: 2.0.0
>            Reporter: quod3
>            Assignee: Andrew Gaul
>              Labels: filesystem
>             Fix For: 2.0.0
>
>
> [~gaul] LocalBlobStore tries to parse the open-ended ranges using parseInt, 
> causing multipart downloads to fail on the last chunk of files that are 2GB+.
> This causes the following error from s3proxy (latest git head):
> {code}
> GET /bucket/key.tar HTTP/1.1
> Host: 10.10.10.10:8080
> Accept-Encoding: identity
> Date: Sat, 30 Jan 2016 04:57:54 GMT
> Range: bytes=2357198848-
> Authorization: AWS ---
> User-Agent: Boto3/1.2.3 Python/2.7.6 Linux/3.19.0-43-generic Botocore/1.3.22 
> Resource
> ***
> HTTP/1.1 416 Requested Range Not Satisfiable
> Date: Sat, 30 Jan 2016 04:57:54 GMT
> Transfer-Encoding: chunked
> Server: Jetty(9.2.z-SNAPSHOT)
> <?xml version="1.0" ?><Error><Code>InvalidRange</Code><Message>The requested 
> range is not satisfiable</Message><RequestId>...</RequestId></Error>
> {code}
> This fixes it for me:
> {code}
> diff --git 
> a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java 
> b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
> index 9c06f21..ce244ef 100644
> --- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
> +++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
> @@ -662,12 +662,12 @@ public final class LocalBlobStore implements BlobStore {
>                 long offset = 0;
>                 long last = 
> blob.getPayload().getContentMetadata().getContentLength() - 1;
>                 if (s.startsWith("-")) {
> -                  offset = last - Integer.parseInt(s.substring(1)) + 1;
> +                  offset = last - Long.parseLong(s.substring(1)) + 1;
>                    if (offset < 0) {
>                       offset = 0;
>                    }
>                 } else if (s.endsWith("-")) {
> -                  offset = Integer.parseInt(s.substring(0, s.length() - 1));
> +                  offset = Long.parseLong(s.substring(0, s.length() - 1));
>                 } else if (s.contains("-")) {
>                    String[] firstLast = s.split("\\-");
>                    offset = Long.parseLong(firstLast[0]);
> {code}



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

Reply via email to