> On May 7, 2015, 5:40 p.m., Jie Yu wrote:
> > src/master/master.cpp, lines 732-735
> > <https://reviews.apache.org/r/33935/diff/1/?file=952157#file952157line732>
> >
> >     Why do you need to capture `this`? Http::log is a static function, I 
> > don't think you need to capture `this`.
> >     
> >     Capture `this` is in general dangeous because you want to make sure the 
> > callback is invoked before this object is destructured. It's not obviously 
> > here that this is the case.
> 
> Ben Mahler wrote:
>     We need `http` which is a member variable. The last line is essentialy 
> `return this->http.observe(request);`. It's already being captured with the 
> bind approach as `http` contains the `Master*` pointer. Make sense? 
> Alternatives you'd prefer?

To match the previous semantics, you want to capture `http` object (instead of 
`this`) by value since lambda::bind does a copy on `http` object. I just 
thought capturing `this` in general is a bad practice.

I got confused initialy because I thought the callback of `route` will be 
invoked at a different context. After checking the code, seems that the 
callback (even if it's just a lambda function) will be invoked at Master 
Process's context. It's not documented and quite confusing because we have an 
overload version of `route` which takes a `T::*method`.


- Jie


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


On May 7, 2015, 5:47 a.m., Ben Mahler wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/33935/
> -----------------------------------------------------------
> 
> (Updated May 7, 2015, 5:47 a.m.)
> 
> 
> Review request for mesos, Jie Yu and Vinod Kone.
> 
> 
> Bugs: MESOS-2519
>     https://issues.apache.org/jira/browse/MESOS-2519
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This adds the client address, as well as user-agent and forwarding 
> information, if present.
> 
> 
> Diffs
> -----
> 
>   src/master/http.cpp fb448256d7ced1f47ea48ccfca2ae267bc26ef94 
>   src/master/master.hpp 49ee050ca4d2b2c5f75ce864fcf6ae703dfdeadd 
>   src/master/master.cpp bee842557c8397428ca51e46faa182a391584be3 
>   src/slave/http.cpp f678aabdccd8c16e25c18ffb5075265ed8b76a70 
>   src/slave/slave.hpp 654a8698be88e0d0f588190775dc3eee6b36f92e 
>   src/slave/slave.cpp c78ee3c9e7fc38ad364e83f4abe267e86bfbbc13 
> 
> Diff: https://reviews.apache.org/r/33935/diff/
> 
> 
> Testing
> -------
> 
> Tested manually:
> 
> I0507 05:41:37.386196 28393 http.cpp:233] HTTP GET for /master/state.json 
> from 127.0.0.1:5050 with User-Agent='curl/7.15.5 (x86_64-redhat-linux-gnu) 
> libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5'
> 
> I0507 05:42:34.905570 31000 http.cpp:237] HTTP GET for /slave(1)/state.json 
> from 127.0.0.1:5051 with User-Agent='curl/7.15.5 (x86_64-redhat-linux-gnu) 
> libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5'
> 
> 
> Thanks,
> 
> Ben Mahler
> 
>

Reply via email to