This is an automated email from the ASF dual-hosted git repository. asekretenko pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
commit 095a409913506b0f12772c9a1ee380a67417b083 Author: Andrei Sekretenko <[email protected]> AuthorDate: Thu Sep 17 19:23:19 2020 +0200 Enforced explicit construction of `protobuf::...::Capabilities`. This makes Mesos code more compliant with the Google C++ styleguide's rule banning implicit conversions for non-interchangeable types, for which the Mesos styleguide makes no exception. In particular, not enabling a type conversion from an iterable into `Capabilities` disallows puzzling code that looks like copying the same protobuf twice. Now, an example like ``` framework.info = info; framework.capabilities = info.capabilities();` ``` can no longer occur. Review: https://reviews.apache.org/r/72886 --- src/common/protobuf_utils.hpp | 6 +++--- src/master/allocator/mesos/hierarchical.cpp | 4 +++- src/master/master.cpp | 2 +- src/slave/slave.cpp | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/common/protobuf_utils.hpp b/src/common/protobuf_utils.hpp index 0558249..e6ece8d 100644 --- a/src/common/protobuf_utils.hpp +++ b/src/common/protobuf_utils.hpp @@ -334,7 +334,7 @@ struct Capabilities Capabilities() = default; template <typename Iterable> - Capabilities(const Iterable& capabilities) + explicit Capabilities(const Iterable& capabilities) { foreach (const SlaveInfo::Capability& capability, capabilities) { switch (capability.type()) { @@ -550,7 +550,7 @@ struct Capabilities Capabilities() = default; template <typename Iterable> - Capabilities(const Iterable& capabilities) + explicit Capabilities(const Iterable& capabilities) { foreach (const MasterInfo::Capability& capability, capabilities) { switch (capability.type()) { @@ -633,7 +633,7 @@ struct Capabilities Capabilities() = default; template <typename Iterable> - Capabilities(const Iterable& capabilities) + explicit Capabilities(const Iterable& capabilities) { foreach (const FrameworkInfo::Capability& capability, capabilities) { switch (capability.type()) { diff --git a/src/master/allocator/mesos/hierarchical.cpp b/src/master/allocator/mesos/hierarchical.cpp index d8ebc2c..0b9588d 100644 --- a/src/master/allocator/mesos/hierarchical.cpp +++ b/src/master/allocator/mesos/hierarchical.cpp @@ -933,7 +933,9 @@ void HierarchicalAllocatorProcess::updateFramework( framework.info = frameworkInfo; framework.roles = newRoles; - framework.capabilities = frameworkInfo.capabilities(); + framework.capabilities = + protobuf::framework::Capabilities(frameworkInfo.capabilities()); + framework.minAllocatableResources = unpackFrameworkOfferFilters(frameworkInfo.offer_filters()); diff --git a/src/master/master.cpp b/src/master/master.cpp index 54b24b4..599d2c9 100644 --- a/src/master/master.cpp +++ b/src/master/master.cpp @@ -12989,7 +12989,7 @@ Try<Nothing> Slave::update( } version = _version; - capabilities = _capabilities; + capabilities = protobuf::slave::Capabilities(_capabilities); info = _info; checkpointedResources = _checkpointedResources; diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp index a69937b..c715951 100644 --- a/src/slave/slave.cpp +++ b/src/slave/slave.cpp @@ -4461,7 +4461,8 @@ void Slave::updateFramework( // if from a master older than 1.3. if (message.has_framework_info()) { framework->info.CopyFrom(message.framework_info()); - framework->capabilities = message.framework_info().capabilities(); + framework->capabilities = protobuf::framework::Capabilities( + message.framework_info().capabilities()); } if (pid == UPID()) {
