> On May 19, 2017, 8:51 p.m., Neil Conway wrote:
> > `stout`, `libprocess`, and `mesos` are nominally distinct projects, so a 
> > single RR should touch no more than one of them. i.e., please split the 
> > `stout` changes into a separate review.
> > 
> > Might also be worth waiting to see if GCC upstream is going to fix the 
> > problem promptly. If GCC 7.2 fixes the problem, we don't necessarily need 
> > to workaround a bug that occurs in just a single minor release of GCC.
> 
> Aaron Wood wrote:
>     Sure, I can hold on this and see what they say. If it's something that 
> still needs to be fixed I'll break out this RR into separate ones.

I am not a big fan of the derived classes of `Bytes` since they are practically 
designed to be used with slicing (`Bytes b = Kilobytes(42)`) which is nasty by 
itself. I believe the intention here was to provide easy to use factory 
functions, and don't believe introducing dedicated types for multiples is a 
very useful but instead confusing (think e.g., number of implicit conversions 
and overload resolution). This fix makes sense regardless of whether GCC fixes 
this particular regression.


> On May 19, 2017, 8:51 p.m., Neil Conway wrote:
> > src/master/constants.hpp
> > Line 49 (original), 49 (patched)
> > <https://reviews.apache.org/r/59413/diff/1/?file=1725380#file1725380line49>
> >
> >     This change (and all the similar changes) seems unfortunate. Can't we 
> > play a similar trick to the change you made to `Bytes`?
> 
> Aaron Wood wrote:
>     I had wanted to but I didn't see a quick and easy way to do this without 
> making some major changes. The extended classes in `duration.hpp` mostly look 
> something like this:
>     ```
>     class Nanoseconds : public Duration
>     {
>     public:
>       explicit constexpr Nanoseconds(int64_t nanoseconds)
>         : Duration(nanoseconds, NANOSECONDS) {}
>     
>       constexpr Nanoseconds(const Duration& d) : Duration(d) {}
>     
>       double value() const { return static_cast<double>(this->ns()); }
>     
>       static std::string units() { return "ns"; }
>     };
>     ```
>     I'm open to ideas, I just figured if I changed these clases a lot I'd 
> have even more code to change around Mesos.

It looks like the only custom method here is `units` which seems to be used by 
just the lengthy stringification function below. I believe getting rid of the 
derived classes here makes just as much sense as it did for `Bytes` and friends.


- Benjamin


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


On May 19, 2017, 9 p.m., Aaron Wood wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/59413/
> -----------------------------------------------------------
> 
> (Updated May 19, 2017, 9 p.m.)
> 
> 
> Review request for mesos, Benjamin Bannier, James Peach, Michael Park, and 
> Neil Conway.
> 
> 
> Bugs: MESOS-7520
>     https://issues.apache.org/jira/browse/MESOS-7520
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Many of the `constexpr` variables fail to compile with errors such as `error: 
> 'Megabytes(32).Megabytes::<anonymous>' is not a constant expression because 
> it refers to an incompletely initialized variable`. 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80829
> 
> This patch changes around the `Bytes` class a bit by getting rid of the small 
> classes that extend `Bytes`. Additionally, any usage of the `Duration` class 
> has been adjusted to not instantiate using the base type (which triggers the 
> issue along with `constexpr`).
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/bytes.hpp 98223db50 
>   src/master/constants.hpp 725680b1e 
>   src/sched/constants.hpp 9edb25b38 
>   src/sched/sched.cpp ef73c1dcc 
>   src/scheduler/constants.hpp e3da12646 
>   src/slave/constants.hpp 9c1d7245c 
>   src/slave/containerizer/mesos/isolators/docker/volume/driver.cpp 929b7e0b7 
>   src/slave/slave.cpp 14de72fa4 
>   src/slave/status_update_manager.cpp 0cd88ac3a 
> 
> 
> Diff: https://reviews.apache.org/r/59413/diff/3/
> 
> 
> Testing
> -------
> 
> `./bootstrap && mkdir build && cd build && ../configure --disable-python 
> --disable-java --disable-optimize --disable-hardening &&  make -j$(nproc)`
> 
> 
> Thanks,
> 
> Aaron Wood
> 
>

Reply via email to