> On Aug. 24, 2016, 11:21 a.m., Stephan Erb wrote:
> > src/main/python/apache/aurora/executor/bin/thermos_executor_main.py, lines 
> > 117-124
> > <https://reviews.apache.org/r/51298/diff/2/?file=1482575#file1482575line117>
> >
> >     Have you considered reading that value from the `MESOS_SANDBOX` 
> > environment variable?
> >     
> >     From the docs: "MESOS_SANDBOX: Path to the mapped sandbox inside of the 
> > container (determined by the agent flag sandbox_directory) for either mesos 
> > container with image or docker container. For the case of command task 
> > without image specified, it is the path to the sandbox on the host 
> > filesystem, which is identical to MESOS_DIRECTORY. MESOS_DIRECTORY is 
> > always the sandbox on the host filesystem."

I did indeed consider this! However, in my testing the value of `MESOS_SANDBOX` 
matches the value of `MESOS_DIRECTORY` for our method of isolating the task's 
filesystem. I believe this is because the task is not actually specifying a 
`ContainerInfo`, but is instead mounting a `Volume` with an `Image` set.

I'll add a comment explaining as much.


> On Aug. 24, 2016, 11:21 a.m., Stephan Erb wrote:
> > src/main/python/apache/aurora/executor/common/sandbox.py, line 257
> > <https://reviews.apache.org/r/51298/diff/2/?file=1482576#file1482576line257>
> >
> >     I believe we don't need that `or mesos_directory` here. It should never 
> > happen that sanbox_mount_point is None. And if it happens, it is better to 
> > crash early rather then running into undefined behaviour later on.

Done, also now raising an error in `__init__` if the value is `None`.


> On Aug. 24, 2016, 11:21 a.m., Stephan Erb wrote:
> > src/main/python/apache/aurora/executor/common/sandbox.py, lines 266-270
> > <https://reviews.apache.org/r/51298/diff/2/?file=1482576#file1482576line266>
> >
> >     We are executing this as root on the host filesystem. It might 
> > therefore make sense to pass `-n` here to prevent that the `/etc/mtab` is 
> > modified.

I *believe* that Mesos is already running the executor in its own mount 
namespace, so there's no chance of modifying the host's /etc/mtab.


> On Aug. 24, 2016, 11:21 a.m., Stephan Erb wrote:
> > src/main/python/apache/thermos/core/process.py, lines 189-200
> > <https://reviews.apache.org/r/51298/diff/2/?file=1482578#file1482578line189>
> >
> >     The `ProcessBase` class is normaly oblivious to the existance of Mesos. 
> > Do you feel it would make sense to inline this special case at the 
> > call-side?
> >     
> >     I haven't checked that, but I suppose in its current place we would 
> > leak the containerizer launch call in the Thermos UI?

It does not leak the containerizer launch call to the Thermos UI. The observer 
takes a circuitous path, but essentially loads up the contents of task.json 
from the sandbox which has the raw cmdline and not the value generated here 
that's wrapped by `mesos-containerizer launch`.

As to your larger question, I'm not sure I follow your meaning. As part of 
refactoring to properly support .thermos_profile, I moved the mesos-specific 
logic from ProcessBase to Process, but that doesn't feel like a major shift. 
Are you instead saying that everything Mesos-related should live under 
apache.aurora rather apache.thermos? I can see the case for that, but I feel 
like that split is artificial and just adds to complexity. We don't have any 
intentions of supporting Thermos as a standalone process manager and I'd rather 
not make this already complex change even more complex by adding the need to 
plumb this command through to process from who knows where ;).


> On Aug. 24, 2016, 11:21 a.m., Stephan Erb wrote:
> > src/main/python/apache/thermos/core/process.py, line 420
> > <https://reviews.apache.org/r/51298/diff/2/?file=1482578#file1482578line420>
> >
> >     This will point to a wrong path in the `taskfs_isolated` case as the 
> > profile will be sourced by bash before calling the containerize launch 
> > command. At that point in time we are still in the host filesystem.
> >     
> >     Might be worthwhile to add a test to check that it is working correctly.

I fixed support for .thermos_profile and added coverage to the e2e tests to 
make sure it works.


> On Aug. 24, 2016, 11:21 a.m., Stephan Erb wrote:
> > src/main/python/apache/thermos/core/process.py, line 437
> > <https://reviews.apache.org/r/51298/diff/2/?file=1482578#file1482578line437>
> >
> >     In the `taskfs_isolated` case, `cwd` will be set to a path within the 
> > container, but we use it before the pivot root is completed. This is a 
> > problem similar to the thermos_profile issue mentioned above.

I'm not sure what you're getting at here? The `cwd` arg is passed on to 
mesos-containerizer as the value for the `--working_directory` flag. That value 
is used to `chdir` after the pivot_root/chroot logic is run. I've also 
thoroughly verified that this directory is respected by the running task 
(original by the `create_datafile` process in the e2e test, now replaced by the 
`setup_env` process).


> On Aug. 24, 2016, 11:21 a.m., Stephan Erb wrote:
> > src/main/python/apache/thermos/runner/thermos_runner.py, lines 139-144
> > <https://reviews.apache.org/r/51298/diff/2/?file=1482579#file1482579line139>
> >
> >     Can this be changed in a meaningful way? I have always assumed that the 
> > observer UI has the hardcoded assumption that logs can be found within 
> > `sandbox/.logs`.

You're right, this was working only by coincidence (because the value being 
passed was a bind mount of the sandbox). I cleaned this up which uncovered a 
few more bugs (e.g. the runner was ensuring the sandbox directory existed, so 
when we passed in /mnt/mesos/sandbox as the value, that path was created on the 
host filesystem).


> On Aug. 24, 2016, 11:21 a.m., Stephan Erb wrote:
> > src/main/python/apache/aurora/executor/common/sandbox.py, line 36
> > <https://reviews.apache.org/r/51298/diff/1-2/?file=1481195#file1481195line36>
> >
> >     Please extend this doc string slightly to mention that this path is 
> > within the host filesystem.

Done.


- Joshua


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/51298/#review146619
-----------------------------------------------------------


On Aug. 25, 2016, 6:54 p.m., Joshua Cohen wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/51298/
> -----------------------------------------------------------
> 
> (Updated Aug. 25, 2016, 6:54 p.m.)
> 
> 
> Review request for Aurora and Maxim Khutornenko.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> - Add an option to skip the groupadd/useradd calls into the task's filesystem.
> - Mount any configured volumes into the task's filesystem.
> - Clean up http server script used by appc e2e tests.
> 
> 
> Diffs
> -----
> 
>   src/main/python/apache/aurora/executor/aurora_executor.py 
> dde19a6914c7c7b2178220707f242f61f11f38bd 
>   src/main/python/apache/aurora/executor/bin/thermos_executor_main.py 
> 65a495d5c50d91b38c4328bab3bfec667f6a7ba9 
>   src/main/python/apache/aurora/executor/common/sandbox.py 
> 5f091af7636bd94f028f15d63437e305b02f741c 
>   src/main/python/apache/aurora/executor/thermos_task_runner.py 
> 1d713ca3d81a2e7be88b787dfcab328d887be24c 
>   src/main/python/apache/thermos/core/process.py 
> a296fa715ef6fbb8d5feae356914334437f353f1 
>   src/main/python/apache/thermos/core/runner.py 
> dcfc190f7ed529e4f816e02b2d969077c60b008f 
>   src/main/python/apache/thermos/runner/thermos_runner.py 
> 441bacdfe93b1805a03a1216762c74db810a9540 
>   src/test/python/apache/aurora/executor/common/test_sandbox.py 
> ce989b1ccda0f1bc7ba9e15dfe4be20116db3491 
>   src/test/python/apache/aurora/executor/test_thermos_executor.py 
> 06601df3bc355a690ff1789b2e2e34484fadefe9 
>   src/test/python/apache/thermos/core/test_process.py 
> 759f783202803c296ce19bb64c59cbe896d40a43 
>   src/test/sh/org/apache/aurora/e2e/http/http_example.aurora 
> b69ddf129c0015a878b089d85d731bc0c26fd55c 
>   src/test/sh/org/apache/aurora/e2e/run-server.sh 
> 76939888bed2e8138671d97f7bc56fd5641008e4 
>   src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh 
> 0404d0e0a1a1054a5ed0c0b9f5f5be9fb3ecc113 
> 
> Diff: https://reviews.apache.org/r/51298/diff/
> 
> 
> Testing
> -------
> 
> ./build-support/jenkins/build.sh
> e2e tests
> 
> 
> Thanks,
> 
> Joshua Cohen
> 
>

Reply via email to