> On Feb. 10, 2018, 8:55 a.m., Vinod Kone wrote: > > src/docker/executor.cpp > > Lines 277 (patched) > > <https://reviews.apache.org/r/65518/diff/2/?file=1953359#file1953359line277> > > > > s/never returns though/to never return although/
I see Greg suggests to change `returns` to `returning` in his comment below which I think is better. > On Feb. 10, 2018, 8:55 a.m., Vinod Kone wrote: > > src/docker/executor.cpp > > Lines 280 (patched) > > <https://reviews.apache.org/r/65518/diff/2/?file=1953359#file1953359line280> > > > > when can this be None()? According to this comment https://github.com/apache/mesos/blob/1.5.0/src/docker/docker.hpp#L104:L106, it will be `None()` when the container is not running. But I am not sure if it will be `None()` when the container is not running AND the Docker issue (https://github.com/moby/moby/issues/33820) occurs. I mean if we launch a Docker container which exits immediately (e.g., execute the command `exit 0`), and due to that Docker issue Docker daemon does not catch the container's exit, will `container.pid` be `None()` or not? If it is not `None()` in this case, then we will reap the process in this lambda which is good, but if it is `None()`, then we will miss to reap the process which is not correct. My suspect is it will not be `None` in this case, but just to be safe, let's also do the below in the case that `container.pid` is `None()`, how do you think? ``` delay( Seconds(3), self(), &Self::reapedContainer, container.pid.get()); ``` > On Feb. 10, 2018, 8:55 a.m., Vinod Kone wrote: > > src/docker/executor.cpp > > Lines 288 (patched) > > <https://reviews.apache.org/r/65518/diff/2/?file=1953359#file1953359line288> > > > > Add a LOG line here? If we add a LOG here, then we may need to add a LOG into `reaped` too? They are the two methods to catch the exit status of the container. > On Feb. 10, 2018, 8:55 a.m., Vinod Kone wrote: > > src/docker/executor.cpp > > Lines 530 (patched) > > <https://reviews.apache.org/r/65518/diff/2/?file=1953359#file1953359line530> > > > > why not call `reaped` directly? sounds like `reaped` does a bunch of > > necessary cleanup that you are skipping by calling `_reaped`? Agree, thanks for catching it! > On Feb. 10, 2018, 8:55 a.m., Vinod Kone wrote: > > src/docker/executor.cpp > > Line 490 (original), 535 (patched) > > <https://reviews.apache.org/r/65518/diff/2/?file=1953359#file1953359line535> > > > > shouldn't we return here if `terminated` already is set in case the > > `run` returns after `reapedContainer` is called? Yes, we should return here if we call `reaped` instead of `_reaped` in `reapedContainer` as you mentioned in the above comment. - Qian ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/65518/#review197206 ----------------------------------------------------------- On Feb. 9, 2018, 9:03 a.m., Qian Zhang wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/65518/ > ----------------------------------------------------------- > > (Updated Feb. 9, 2018, 9:03 a.m.) > > > Review request for mesos, Gaston Kleiman, Gilbert Song, Greg Mann, and Vinod > Kone. > > > Bugs: MESOS-8488 > https://issues.apache.org/jira/browse/MESOS-8488 > > > Repository: mesos > > > Description > ------- > > Due to a Docker issue (https://github.com/moby/moby/issues/33820), > Docker daemon will fail to catch a container exit, i.e., the container > process has already exited but the command `docker ps` shows the > container still running, this will lead to the "docker run" command > that we execute in Docker executor never returns, and it will also > cause the `docker stop` command takes no effect, i.e., it will return > without error but `docker ps` shows the container still running, so > the task will stuck in `TASK_KILLING` state. > > To workaround this Docker issue, in this patch we made Docker executor > reaps the container process directly so Docker executor will be notified > once the container process exits. > > > Diffs > ----- > > src/docker/executor.cpp e4c53d558e414e50b1c429fba8e31e504c63744a > > > Diff: https://reviews.apache.org/r/65518/diff/2/ > > > Testing > ------- > > sudo make check > > > Thanks, > > Qian Zhang > >