You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@mesos.apache.org by Benjamin Hindman <be...@berkeley.edu> on 2017/07/15 00:13:48 UTC

Review Request 60830: Replaced std::map with hashmap for ProcessBase::handlers.

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

Review request for mesos and Benjamin Mahler.


Repository: mesos


Description
-------

Replaced std::map with hashmap for ProcessBase::handlers.


Diffs
-----

  3rdparty/libprocess/include/process/process.hpp 944fcc6449edfd022db4048f70a13aff4a1ff345 
  3rdparty/libprocess/src/process.cpp 7ce6d2b13baa68906e091a95c0dd58ee1ca2bc7d 


Diff: https://reviews.apache.org/r/60830/diff/1/


Testing
-------


Thanks,

Benjamin Hindman


Re: Review Request 60830: Replaced std::map with hashmap for ProcessBase::handlers.

Posted by Benjamin Mahler <bm...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60830/#review180896
-----------------------------------------------------------


Ship it!




Ship It!

- Benjamin Mahler


On July 18, 2017, 11:44 p.m., Benjamin Hindman wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/60830/
> -----------------------------------------------------------
> 
> (Updated July 18, 2017, 11:44 p.m.)
> 
> 
> Review request for mesos and Benjamin Mahler.
> 
> 
> Bugs: MESOS-7798
>     https://issues.apache.org/jira/browse/MESOS-7798
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Replaced std::map with hashmap for ProcessBase::handlers.
> 
> 
> Diffs
> -----
> 
>   3rdparty/libprocess/include/process/process.hpp 944fcc6449edfd022db4048f70a13aff4a1ff345 
> 
> 
> Diff: https://reviews.apache.org/r/60830/diff/2/
> 
> 
> Testing
> -------
> 
> make check
> 
> 
> Thanks,
> 
> Benjamin Hindman
> 
>


Re: Review Request 60830: Replaced std::map with hashmap for ProcessBase::handlers.

Posted by Benjamin Hindman <be...@berkeley.edu>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60830/
-----------------------------------------------------------

(Updated July 18, 2017, 11:44 p.m.)


Review request for mesos and Benjamin Mahler.


Bugs: MESOS-7798
    https://issues.apache.org/jira/browse/MESOS-7798


Repository: mesos


Description
-------

Replaced std::map with hashmap for ProcessBase::handlers.


Diffs (updated)
-----

  3rdparty/libprocess/include/process/process.hpp 944fcc6449edfd022db4048f70a13aff4a1ff345 


Diff: https://reviews.apache.org/r/60830/diff/2/

Changes: https://reviews.apache.org/r/60830/diff/1-2/


Testing
-------

make check


Thanks,

Benjamin Hindman


Re: Review Request 60830: Replaced std::map with hashmap for ProcessBase::handlers.

Posted by Benjamin Mahler <bm...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60830/#review180619
-----------------------------------------------------------




3rdparty/libprocess/src/process.cpp
Line 3806 (original), 3806 (patched)
<https://reviews.apache.org/r/60830/#comment255819>

    A couple of questions:
    
    (1) Is MessageHandler cheap to copy? I assume in most cases, yes. But if the message handler came from a lambda with copy captures, then it seems like copying it here is expensive?
    
    (2) More importantly, if the handler is a lambda with copy captures, then I think copying it each time we execute it is actually incorrect:
    
    ```
    #include <iostream>
    #include <functional>
    
    using namespace std;
    
    int main()
    {
      int x = 1;
      function<void()> f1 = [=]() mutable {
        cout << x << endl;
        x *= 2;
      };
      auto f2 = f1;
      cout << "calling f1:" << endl;
      f1();
      f1();
      f1();
      cout << "calling copy of f1:" << endl;
      f2();
      f2();
      return 0;
    }
    ```
    
    This prints:
    
    ```
    calling f1:
    1
    2
    4
    calling copy of f1:
    1
    2
    ```
    
    So by copying the function each time we're messing with the caller's expectation of the capture semantics.
    
    Ideally, hashmap::get returned an `Option<Value&>` rather than `Option<Value>` but it's probably a little tedious for you to make that change right now.


- Benjamin Mahler


On July 15, 2017, 12:13 a.m., Benjamin Hindman wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/60830/
> -----------------------------------------------------------
> 
> (Updated July 15, 2017, 12:13 a.m.)
> 
> 
> Review request for mesos and Benjamin Mahler.
> 
> 
> Bugs: MESOS-7798
>     https://issues.apache.org/jira/browse/MESOS-7798
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Replaced std::map with hashmap for ProcessBase::handlers.
> 
> 
> Diffs
> -----
> 
>   3rdparty/libprocess/include/process/process.hpp 944fcc6449edfd022db4048f70a13aff4a1ff345 
>   3rdparty/libprocess/src/process.cpp 7ce6d2b13baa68906e091a95c0dd58ee1ca2bc7d 
> 
> 
> Diff: https://reviews.apache.org/r/60830/diff/1/
> 
> 
> Testing
> -------
> 
> make check
> 
> 
> Thanks,
> 
> Benjamin Hindman
> 
>