Details
-
Improvement
-
Status: Accepted
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
If we assign "docker,mesos" to the `containerizers` flag for an agent, then ComposingContainerizer will be used for many tests that do not specify containerizers flag. That's the goal of this task.
I tried to do that by adding flags.containerizers = "docker,mesos", but it turned out that some tests are started to hang due to a paused clocks, while docker c'zer and docker library use libprocess clocks.
After setting composing c'zer by default, some tests (e.g. AgentAPITest.AttachContainerInputValidation) started to hang due to a paused clocks and the use of clock-dependent methods, like await(), delay(), etc. by the docker library.
It hangs in Docker::validateVersion(), which is called from Docker::create(). After I added Clock::resume() before calling version.await(DOCKER_VERSION_WAIT_TIMEOUT), tests have started to hang due to the hanging docker recovery: docker c'zer launches docker ps -a subprocess and subscribes for its termination. As a reaper process uses delay(), this leads to a hanging recovery process for the docker c'zer.
Attachments
Issue Links
- is blocked by
-
MESOS-8828 Clock::advance can race with process::delay in tests.
- Accepted
- is related to
-
MESOS-8827 Eliminate calling of `await()` in the docker library.
- Open
-
MESOS-8732 Use composing containerizer in some agent tests.
- Resolved
-
MESOS-8826 ReaperProcess depends on clock manipulation.
- Accepted