James Peach created MESOS-8907: ---------------------------------- Summary: curl fetcher fails with HTTP/2 Key: MESOS-8907 URL: https://issues.apache.org/jira/browse/MESOS-8907 Project: Mesos Issue Type: Task Components: fetcher Reporter: James Peach
{noformat} [ RUN ] ImageAlpine/ProvisionerDockerTest.ROOT_INTERNET_CURL_SimpleCommand/2 ... I0510 20:52:00.209815 25010 registry_puller.cpp:287] Pulling image 'quay.io/coreos/alpine-sh' from 'docker-manifest://quay.iocoreos/alpine-sh?latest#https' to '/tmp/ImageAlpine_ProvisionerDockerTest_ROOT_INTERNET_CURL_SimpleCommand_2_wF7EfM/store/docker/staging/qit1Jn' E0510 20:52:00.756072 25003 slave.cpp:6176] Container '5eb869c5-555c-4dc9-a6ce-ddc2e7dbd01a' for executor 'ad9aa898-026e-47d8-bac6-0ff993ec5904' of framework 7dbe7cd6-8ffe-4bcf-986a-17ba677b5a69-0000 failed to start: Failed to decode HTTP responses: Decoding failed HTTP/2 200 server: nginx/1.13.12 date: Fri, 11 May 2018 03:52:00 GMT content-type: application/vnd.docker.distribution.manifest.v1+prettyjws content-length: 4486 docker-content-digest: sha256:61bd5317a92c3213cfe70e2b629098c51c50728ef48ff984ce929983889ed663 x-frame-options: DENY strict-transport-security: max-age=63072000; preload ... {noformat} Note that curl is saying the HTTP version is "HTTP/2". This happens on modern curl that automatically negotiates HTTP/2, but the docker fetcher isn't prepared to parse that. {noformat} $ curl -i --raw -L -s -S -o - 'http://quay.io/coreos/alpine-sh?latest#https' HTTP/1.1 301 Moved Permanently Content-Type: text/html Date: Fri, 11 May 2018 04:07:44 GMT Location: https://quay.io/coreos/alpine-sh?latest Server: nginx/1.13.12 Content-Length: 186 Connection: keep-alive HTTP/2 301 server: nginx/1.13.12 date: Fri, 11 May 2018 04:07:45 GMT content-type: text/html; charset=utf-8 content-length: 287 location: https://quay.io/coreos/alpine-sh/?latest x-frame-options: DENY strict-transport-security: max-age=63072000; preload {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)