mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Neil Conway <neil.con...@gmail.com>
Subject Re: Review Request 45999: Ensure GC is terminated last during libprocess shutdown.
Date Mon, 11 Apr 2016 13:16:22 GMT


> On April 11, 2016, 4:06 a.m., Kevin Klues wrote:
> > 3rdparty/libprocess/src/process.cpp, lines 2170-2195
> > <https://reviews.apache.org/r/45999/diff/1/?file=1338571#file1338571line2170>
> >
> >     Is there a reason, we can't just remove the gc process from the list as a preliminary
step, and then leave the rest of the logic as is? Followed by the explicit gc terminate/delete?

That was actually the original approach that I took, but removing `gc` from `processes` manually
breaks some invariants in the code -- for example, `process::wait(gc)` is a no-op if `gc`
has been removed from `processes`, which makes it a bit tricky to wait for `gc` to terminate.
I think the approach in this RR is safer.


- Neil


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


On April 11, 2016, 3:48 a.m., Neil Conway wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/45999/
> -----------------------------------------------------------
> 
> (Updated April 11, 2016, 3:48 a.m.)
> 
> 
> Review request for mesos and Joris Van Remoortere.
> 
> 
> Bugs: MESOS-5144
>     https://issues.apache.org/jira/browse/MESOS-5144
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Without this change, `finalize()` terminates processes in the order
> that they happen to be found when iterating over the `processes`
> map. That means that if the GarbageCollector process is terminated
> while any GC-managed processes are still running, those processes
> will not be GC'd (i.e., they will be leaked).
> 
> Fix this by skipping the garbage collector process when iterating
> over `processes` in `finalize()`, and then only terminating it after
> all other processes have been terminated.
> 
> 
> Diffs
> -----
> 
>   3rdparty/libprocess/src/process.cpp 5e9dcfdc52f3a8223bc43af149b8e1f5dbdf5b0a 
> 
> Diff: https://reviews.apache.org/r/45999/diff/
> 
> 
> Testing
> -------
> 
> make check
> 
> Confirmed reduction of leaked memory via ASAN on Linux/amd64.
> 
> 
> Thanks,
> 
> Neil Conway
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message