Hi, I still believe that declaring methods of this module interface `except` is a good thing which IMO we should also do for all new module interfaces going forward. We do not perform any exception handling around calls to these functions in Mesos, and `noexcept` is intended to communicate exactly that.
Googletest (which has in the meantime absorbed googlemock) is preparing their 1.9.0 release with C++11 support, and it is expected to be released “soon”, so I am not sure that breaking backwards compatibility to end up with weaker interfaces will be that worthwhile in the long run. I left a sketch for a possible workaround in the issue you created, https://issues.apache.org/jira/browse/MESOS-8991?focusedCommentId=16512313. Let’s continue this discussion on the dev mailing list. Cheers, Benjamin > On Jun 14, 2018, at 12:47 PM, Benno Evers <bev...@mesosphere.com> wrote: > > Hi Alexander, > > > and it is compiled without exception support by default. > > What exactly do you mean by "without support"? My local libmesos.so includes > 500 KiB of unwind tables, and we had issues like MESOS-8417 that are caused > by unexpected exceptions being thrown. > > On Thu, Jun 14, 2018 at 12:10 PM, Alexander Rojas <alexan...@mesosphere.io> > wrote: > I may have brought up this issue in the past, however I’m bringing it again, > The `ObjectApprover::approved()` [1] method has the following signature: > > ``` > virtual Try<bool> approved( > const Option<Object>& object) const noexcept = 0; > ``` > > This is unfortunate since it is impossible to mock a function in google mock > with two qualifiers [2] without some modifications to gmock itself. this > reduces the amount of tests we can perform. > > Moreover, the `noexcept` qualifier is not even needed in Mesos, since it does > not use exceptions and it is compiled without exception support by default. > > The tricky situation here is that this is a public API so it would be tricky > to replace since it will break backwards compatibility. So I’m calling out to > any modules developer to notify if they are ok with the change or if we > should instead try to modify gmock. > > [1] > https://github.com/apache/mesos/blob/8b93fa3/include/mesos/authorizer/authorizer.hpp#L221 > [2] https://groups.google.com/forum/#!topic/googlemock/LsbubY26qx4 > > > > Alexander Rojas > alexan...@mesosphere.io > > > > > > > > -- > Benno Evers > Software Engineer, Mesosphere