Uploaded image for project: 'Mesos'
  1. Mesos
  2. MESOS-8826

ReaperProcess depends on clock manipulation.

    XMLWordPrintableJSON

Details

    • Task
    • Status: Accepted
    • Major
    • Resolution: Unresolved
    • None
    • None
    • libprocess

    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

          Activity

            People

              Unassigned Unassigned
              abudnik Andrei Budnik
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: