You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Gilbert Song (JIRA)" <ji...@apache.org> on 2016/10/18 18:35:58 UTC
[jira] [Comment Edited] (MESOS-6010) Docker registry puller shows
decode error "No response decoded".
[ https://issues.apache.org/jira/browse/MESOS-6010?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15586271#comment-15586271 ]
Gilbert Song edited comment on MESOS-6010 at 10/18/16 6:35 PM:
---------------------------------------------------------------
The root cause is that our 3rd party http_parser cannot handle the case that a http response does not contain any header and body. It would return `No response decoded`.
Currently, we are using `curl` to pull docker images. When we firstly send a request to the registry server for manifest, we expect the http response like the following:
{noformat}
HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
Docker-Distribution-Api-Version: registry/2.0
Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:library/redis:pull"
Date: Tue, 09 Aug 2016 08:10:32 GMT
Content-Length: 145
Strict-Transport-Security: max-age=31536000
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Name":"library/redis","Action":"pull"}]}]}
{noformat}
However, when the agent node is behind a proxy. The http response returned from curl may contain the proxy connect information as an extra http response (may or may not container headers/body). Then, the response may be as following:
{noformat}
{noformat}
It is problematic for the 3rd party http_parser (currently we are using http-parser-2.6.2) to parse a response without herders/body. We should either:
1. Fix the 3rd party http_parser library, or upgrade to a version contains the fix, or find another substitute library.
2. Introduce a workaround to skip the response from the proxy (e.g., config the curl using some flags to ignore the proxy response).
I would personally prefer (1), since we may have similar issues coming up in the future.
was (Author: gilbert):
The root cause is that our 3rd party http_parser cannot handle the case that a http response does not contain any header and body. It would return `No response decoded`.
Currently, we are using `curl` to pull docker images. When we firstly send a request to the registry server for manifest, we expect the http response like the following:
{noformat}
{noformat}
However, when the agent node is behind a proxy. The http response returned from curl may contain the proxy connect information as an extra http response (may or may not container headers/body). Then, the response may be as following:
{noformat}
{noformat}
It is problematic for the 3rd party http_parser (currently we are using http-parser-2.6.2) to parse a response without herders/body. We should either:
1. Fix the 3rd party http_parser library, or upgrade to a version contains the fix, or find another substitute library.
2. Introduce a workaround to skip the response from the proxy (e.g., config the curl using some flags to ignore the proxy response).
I would personally prefer (1), since we may have similar issues coming up in the future.
> Docker registry puller shows decode error "No response decoded".
> ----------------------------------------------------------------
>
> Key: MESOS-6010
> URL: https://issues.apache.org/jira/browse/MESOS-6010
> Project: Mesos
> Issue Type: Bug
> Components: containerization, docker
> Affects Versions: 1.0.0, 1.0.1
> Reporter: Sunzhe
> Labels: Docker, mesos-containerizer
>
> The {{mesos-agent}} flags:
> {code}
> GLOG_v=1 ./bin/mesos-agent.sh \
> --master=zk://${MESOS_MASTER_IP}:2181/mesos \
> --ip=10.100.3.3 \
> --work_dir=${MESOS_WORK_DIR} \
> --isolation=cgroups/devices,gpu/nvidia,disk/du,docker/runtime,filesystem/linux \
> --enforce_container_disk_quota \
> --containerizers=mesos \
> --image_providers=docker \
> --executor_environment_variables="{}"
> {code}
> And the {{mesos-execute}} flags:
> {code}
> ./src/mesos-execute \
> --master=${MESOS_MASTER_IP}:5050 \
> --name=${INSTANCE_NAME} \
> --docker_image=${DOCKER_IMAGE} \
> --framework_capabilities=GPU_RESOURCES \
> --shell=false
> {code}
> But when {{./src/mesos-execute}}, the errors like below:
> {code}
> I0809 16:11:46.207875 25583 scheduler.cpp:172] Version: 1.0.0
> I0809 16:11:46.212442 25582 scheduler.cpp:461] New master detected at master@10.103.0.125:5050
> Subscribed with ID '168ab900-ee7e-4829-a59a-d16de956637e-0009'
> Submitted task 'test' to agent '168ab900-ee7e-4829-a59a-d16de956637e-S1'
> Received status update TASK_FAILED for task 'test'
> message: 'Failed to launch container: Failed to decode HTTP responses: No response decoded
> HTTP/1.1 200 Connection established
> HTTP/1.1 401 Unauthorized
> Content-Type: application/json; charset=utf-8
> Docker-Distribution-Api-Version: registry/2.0
> Www-Authenticate: Bearer realm="https://auth.docker.io/token",service="registry.docker.io",scope="repository:library/redis:pull"
> Date: Tue, 09 Aug 2016 08:10:32 GMT
> Content-Length: 145
> Strict-Transport-Security: max-age=31536000
> {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Name":"library/redis","Action":"pull"}]}]}
> ; Container destroyed while provisioning images'
> source: SOURCE_AGENT
> reason: REASON_CONTAINER_LAUNCH_FAILED
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)