MESOS-5886


Problem description:

Using FUTURE_DISPATCH might lead to flakiness or errors in tests.
FUTURE_DISPATCH
<https://github.com/apache/mesos/blob/e8ebbe5fe4189ef7ab046da2276a6abee41deeb2/3rdparty/libprocess/include/process/gmock.hpp#L50>
uses DispatchMatcher
<https://github.com/apache/mesos/blob/e8ebbe5fe4189ef7ab046da2276a6abee41deeb2/3rdparty/libprocess/include/process/gmock.hpp#L350>
to figure out whether a processed DispatchEvent is the same the user is
waiting for. Currently, we compare std::type_info of function pointers,
which is not enough: different class methods with same signatures will be
matched (see MESOS-5886 for an example).



A little bit of history on the issue.



Initial implementation of DispatchMatcher used stringified version of
pointer-to-member function — it’s just the same thing as comparing by value
two pointer-to-member functions, which, in essence, means comparison of the
virtual offsets in vtable or comparison of function addresses. This
approach has an issue: if two independent classes C1 and C2 have virtual
functions with the same vtable offsets, then DispatchMatcher might match
them as same functions under specific conditions (see
https://reviews.apache.org/r/28052/).



To address the aforementioned problem (MESOS-2112), it has been decided to
use type_info instead of function pointers for function matching. type_info
for class methods includes information about function signature, related
class name and class namespace. However, type_info is not enough to
uniquely identify two different methods with same signature. AlexR
described a simple test that reproduces the bug in MESOS-5886.



Michael Park proposed a solution in
https://reviews.apache.org/r/28052/#comment106033:
<https://reviews.apache.org/r/28052/#comment106033>keeping both type_info
and value of pointer-to-member function in DispatchEvent allows us to
uniquely identify class methods.



We plan to follow MPark’s suggestion and additionally store
pointer-to-member function in DispatchEvent. This will increase the memory
footprint of actors’ mailboxes, which is an acceptable consequence in our
opinion.



Looking forward to comments and suggestions on the proposed change,

Andrei

Reply via email to