[
https://issues.apache.org/jira/browse/MESOS-1509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15721914#comment-15721914
]
Yennick Trevels commented on MESOS-1509:
----------------------------------------
I can confirm that Mesos currently disregards the "Content-Disposition" header.
*My scenario*
I tried submitting a spark application to DC/OS where the Jar was hosted on S3.
This required a S3 presigned (Signature V4) url, of which the url parameters
can get pretty long.
sample presigned S3 url:
```
https://s3.eu-central-1.amazonaws.com/bucketA/spark-app.jar?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Credential=XXXXXXXXXXXXXXXXXXXXXXXXXX&X-Amz-SignedHeaders=host&X-Amz-Date=20161205T095356Z&X-Amz-Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
When trying to run the Spark app on DC/OS it immediately failed with the
following error:
```
Failed to fetch
'https://s3.eu-central-1.amazonaws.com/bucketA/spark-app.jar?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-Credential=XXXXXXXXXXXXXXXXXXXXXXXXXX&X-Amz-SignedHeaders=host&X-Amz-Date=20161205T095356Z&X-Amz-Signature=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX':
Error downloading resource: File name too long
```
Then I tried uploading the file to S3 with a Content-Disposition header:
```
attachment; filename='spark-app-alt.jar';
filename*=UTF-8''spark%2Dapp%2Dalt%2Ejar
```
The content disposition header is properly displayed in the AWS Console (so
nothing wrong there) and when downloading the file via a browser with a
presigned S3 url it gets properly saved with the filename specified in the
content-disposition header.
However, when the Mesos Fetcher tries to download the file, it still fails with
the "file name too long" error.
> Use Content-Disposition filename (if available) when downloading HTTP URIs
> --------------------------------------------------------------------------
>
> Key: MESOS-1509
> URL: https://issues.apache.org/jira/browse/MESOS-1509
> Project: Mesos
> Issue Type: Improvement
> Components: agent
> Affects Versions: 0.18.0, 0.19.0, 0.20.0, 0.21.0
> Environment: Linux (but should be irrelevant)
> Reporter: Bjoern Metzdorf
> Priority: Minor
>
> Currently the slave stores downloaded HTTP URIs in filenames that are made up
> from the part after the last "/" in the URI (in src/launcher/fetcher.cpp:122):
> {code}
> path = path::join(directory, path.substr(path.find_last_of("/") + 1));
> {code}
> The problem is that the query string is included in the filename and a URI
> like {{http://my.web.server/dynamic/resource.tar.gz?a=b}} results in a
> downloaded file named {{resource.tar.gz?a=b}}.
> The curl maintainers faced the same problem and added this:
> {code}
> -J, --remote-header-name
> (HTTP) This option tells the -O, --remote-name option to use
> the server-specified Content-Disposition filename instead of extracting a
> filename from the URL.
> {code}
> Maybe Mesos could do the same if a Content-Disposition header exists.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)