You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Konstantin Kalin (JIRA)" <ji...@apache.org> on 2017/12/22 14:49:01 UTC

[jira] [Created] (MESOS-8356) Persistent volume ownership is set to root despite of sandbox owner (frameworkInfo.user) when docker executor is used

Konstantin Kalin created MESOS-8356:
---------------------------------------

             Summary: Persistent volume ownership is set to root despite of sandbox owner (frameworkInfo.user) when docker executor is used
                 Key: MESOS-8356
                 URL: https://issues.apache.org/jira/browse/MESOS-8356
             Project: Mesos
          Issue Type: Bug
          Components: docker
         Environment: Centos 7, Mesos 1.4.1, Docker Engine 1.13
            Reporter: Konstantin Kalin


PersistentVolume ownership is not set to match the sandbox user when the docker executor is used. Looks like the issue was introduced by https://reviews.apache.org/r/45963/
I didn't check the universal containerizer yet. 

As far as I understand the following code is supposed to check that a volume is not being already used by other tasks/containers.

src/slave/containerizer/docker.cpp
{code:c++}
    foreachvalue (const Container* container, containers_) {
      if (container->resources.contains(resource)) {
        isVolumeInUse = true;
        break;
      }
    }
{code}
But it doesn't exclude a container to be launch (In my case I have only one container - no group of tasks). Thus the ownership of PersistentVolume stays "root" (I run mesos-agent under root)

Making a small patch to exclude the container to launch fixes the issue.
{code:c++}
    foreachvalue (const Container* container, containers_) {
      if (container->resources.contains(resource) &&
          containerId != container->id) {
        isVolumeInUse = true;
        break;
      }
    }
{code}




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)