> On Jan. 2, 2018, 5:12 p.m., Zhitao Li wrote:
> > src/slave/containerizer/mesos/provisioner/provisioner.cpp
> > Line 568 (original), 568 (patched)
> > <https://reviews.apache.org/r/64885/diff/1/?file=1929384#file1929384line568>
> >
> >     I don't think the callback here uses any internal state of calling 
> > actor, so I don't see it really necessary that continuation *must* happen 
> > in `self()`.
> >     
> >     Do we have a rule to require even continuation without side effect to 
> > calling actor be defered?

This callback make use of the member variable `rootfs` which will be accessed 
via a `this` pointer; `containerId`, `imageInfo`, and `rootfs` are all captured 
by value.

My _personal_ rule of thumb is to not use default capture, but instead list 
every captured variable explicitly in the capture list. I also like to prefix 
uses of member variables with `this` in the lambda body. I feel that makes it 
easier to spot such issues even without static analysis.


- Benjamin


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


On Jan. 2, 2018, 11:38 a.m., Benjamin Bannier wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/64885/
> -----------------------------------------------------------
> 
> (Updated Jan. 2, 2018, 11:38 a.m.)
> 
> 
> Review request for mesos, Gilbert Song and Zhitao Li.
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> In `e273efe6976434858edb85bbcf367a02e963a467` we introduced layer
> checkpointing to the provisioner, but did not make sure that
> continutations making use of internal state of the provisioner actor
> installed on futures where always executed in the actor's context.
> This was problematic as continuations could be executed while actor
> state was changing (data races), or after the the actor had terminated
> (use after free).
> 
> In this patch we instead defer execution of continutions to the actor
> owning the data.
> 
> This issue was identified with the clang-tidy `mesos-this-capture`
> check.
> 
> 
> Diffs
> -----
> 
>   src/slave/containerizer/mesos/provisioner/provisioner.cpp 
> 61e771872ba2c3f5ecabbe085db102433c7bac3f 
> 
> 
> Diff: https://reviews.apache.org/r/64885/diff/1/
> 
> 
> Testing
> -------
> 
> `make check`
> 
> 
> Thanks,
> 
> Benjamin Bannier
> 
>

Reply via email to