Details
-
Task
-
Status: Accepted
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
After making composing containerizer as a default containerizer in tests by setting a value `mesos,docker` for `containerizers` flag in `MesosTest::CreateSlaveFlags()`, some tests started to endlessly wait for recovery completion after starting slave with paused clocks.
Recovery process for a docker c'zer uses `subprocess()` to spawn `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, when the libprocess' clocks are paused.
A possible solution might be using a single dedicated thread that doesn't use libprocess clocks and periodically iterates over pids and calls `waitpid` for each of them.
In addition, we can introduce one more dedicated thread that calls `waitpid(-1)` to wait for termination of children processes, so that we can get rid of
while (someEvent.isPending()) {
Clock::advance(process::MAX_REAP_INTERVAL());
Clock::settle();
}
pattern in tests.
Attachments
Issue Links
- relates to
-
MESOS-9139 Use composing containerizer by default in tests.
- Accepted
-
MESOS-8732 Use composing containerizer in some agent tests.
- Resolved