You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by as...@apache.org on 2020/03/04 08:27:34 UTC
[mesos] 02/02: Got rid of passing Shared<> into
`Subscribers::Subscriber::send(...)`.
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 54227a33b68d83b97ef1a7c14283351d45322317
Author: Andrei Sekretenko <as...@apache.org>
AuthorDate: Fri Feb 28 22:39:54 2020 +0100
Got rid of passing Shared<> into `Subscribers::Subscriber::send(...)`.
Now that operator API events are authorized synchronously,
`Subscribers::Subscriber::send(...)` is no longer deferred,
and copying arguments of `Subscribers::send()` into `Shared`
becomes unnecessary.
Review: https://reviews.apache.org/r/72179
---
src/master/master.cpp | 64 ++++++++++++++++++++-------------------------------
src/master/master.hpp | 8 +++----
2 files changed, 29 insertions(+), 43 deletions(-)
diff --git a/src/master/master.cpp b/src/master/master.cpp
index e05fc8f..a8cca62 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -12232,63 +12232,49 @@ static bool isValidFailoverTimeout(const FrameworkInfo& frameworkInfo)
void Master::Subscribers::send(
- mesos::master::Event&& event,
+ const mesos::master::Event& event,
const Option<FrameworkInfo>& frameworkInfo,
const Option<Task>& task)
{
VLOG(1) << "Notifying all active subscribers about " << event.type()
<< " event";
- // TODO(asekretenko): Now that we have synchronous authorization,
- // we can get rid of Shared in this code.
-
- // Create a single copy of the event for all subscribers to share.
- Shared<mesos::master::Event> sharedEvent(
- new mesos::master::Event(std::move(event)));
-
- // Create a single copy of `FrameworkInfo` and `Task` for all
- // subscribers to share.
- Shared<FrameworkInfo> sharedFrameworkInfo(
- frameworkInfo.isSome()
- ? new FrameworkInfo(frameworkInfo.get()) : nullptr);
- Shared<Task> sharedTask(task.isSome() ? new Task(task.get()) : nullptr);
-
foreachvalue (const Owned<Subscriber>& subscriber, subscribed) {
- subscriber->send(sharedEvent, sharedFrameworkInfo, sharedTask);
+ subscriber->send(event, frameworkInfo, task);
}
}
void Master::Subscribers::Subscriber::send(
- const Shared<mesos::master::Event>& event,
- const Shared<FrameworkInfo>& frameworkInfo,
- const Shared<Task>& task)
+ const mesos::master::Event& event,
+ const Option<FrameworkInfo>& frameworkInfo,
+ const Option<Task>& task)
{
- switch (event->type()) {
+ switch (event.type()) {
case mesos::master::Event::TASK_ADDED: {
- CHECK_NOTNULL(frameworkInfo.get());
+ CHECK_SOME(frameworkInfo);
if (approvers->approved<VIEW_TASK>(
- event->task_added().task(), *frameworkInfo) &&
+ event.task_added().task(), *frameworkInfo) &&
approvers->approved<VIEW_FRAMEWORK>(*frameworkInfo)) {
- http.send(*event);
+ http.send(event);
}
break;
}
case mesos::master::Event::TASK_UPDATED: {
- CHECK_NOTNULL(frameworkInfo.get());
- CHECK_NOTNULL(task.get());
+ CHECK_SOME(frameworkInfo);
+ CHECK_SOME(task);
if (approvers->approved<VIEW_TASK>(*task, *frameworkInfo) &&
approvers->approved<VIEW_FRAMEWORK>(*frameworkInfo)) {
- http.send(*event);
+ http.send(event);
}
break;
}
case mesos::master::Event::FRAMEWORK_ADDED: {
if (approvers->approved<VIEW_FRAMEWORK>(
- event->framework_added().framework().framework_info())) {
- mesos::master::Event event_(*event);
+ event.framework_added().framework().framework_info())) {
+ mesos::master::Event event_(event);
event_.mutable_framework_added()->mutable_framework()->
mutable_allocated_resources()->Clear();
event_.mutable_framework_added()->mutable_framework()->
@@ -12296,7 +12282,7 @@ void Master::Subscribers::Subscriber::send(
foreach(
const Resource& resource,
- event->framework_added().framework().allocated_resources()) {
+ event.framework_added().framework().allocated_resources()) {
if (approvers->approved<VIEW_ROLE>(resource)) {
event_.mutable_framework_added()->mutable_framework()->
add_allocated_resources()->CopyFrom(resource);
@@ -12305,7 +12291,7 @@ void Master::Subscribers::Subscriber::send(
foreach(
const Resource& resource,
- event->framework_added().framework().offered_resources()) {
+ event.framework_added().framework().offered_resources()) {
if (approvers->approved<VIEW_ROLE>(resource)) {
event_.mutable_framework_added()->mutable_framework()->
add_offered_resources()->CopyFrom(resource);
@@ -12318,8 +12304,8 @@ void Master::Subscribers::Subscriber::send(
}
case mesos::master::Event::FRAMEWORK_UPDATED: {
if (approvers->approved<VIEW_FRAMEWORK>(
- event->framework_updated().framework().framework_info())) {
- mesos::master::Event event_(*event);
+ event.framework_updated().framework().framework_info())) {
+ mesos::master::Event event_(event);
event_.mutable_framework_updated()->mutable_framework()->
mutable_allocated_resources()->Clear();
event_.mutable_framework_updated()->mutable_framework()->
@@ -12327,7 +12313,7 @@ void Master::Subscribers::Subscriber::send(
foreach(
const Resource& resource,
- event->framework_updated().framework().allocated_resources()) {
+ event.framework_updated().framework().allocated_resources()) {
if (approvers->approved<VIEW_ROLE>(resource)) {
event_.mutable_framework_updated()->mutable_framework()->
add_allocated_resources()->CopyFrom(resource);
@@ -12336,7 +12322,7 @@ void Master::Subscribers::Subscriber::send(
foreach(
const Resource& resource,
- event->framework_updated().framework().offered_resources()) {
+ event.framework_updated().framework().offered_resources()) {
if (approvers->approved<VIEW_ROLE>(resource)) {
event_.mutable_framework_updated()->mutable_framework()->
add_offered_resources()->CopyFrom(resource);
@@ -12349,19 +12335,19 @@ void Master::Subscribers::Subscriber::send(
}
case mesos::master::Event::FRAMEWORK_REMOVED: {
if (approvers->approved<VIEW_FRAMEWORK>(
- event->framework_removed().framework_info())) {
- http.send(*event);
+ event.framework_removed().framework_info())) {
+ http.send(event);
}
break;
}
case mesos::master::Event::AGENT_ADDED: {
- mesos::master::Event event_(*event);
+ mesos::master::Event event_(event);
event_.mutable_agent_added()->mutable_agent()->
mutable_total_resources()->Clear();
foreach(
const Resource& resource,
- event->agent_added().agent().total_resources()) {
+ event.agent_added().agent().total_resources()) {
if (approvers->approved<VIEW_ROLE>(resource)) {
event_.mutable_agent_added()->mutable_agent()->add_total_resources()
->CopyFrom(resource);
@@ -12375,7 +12361,7 @@ void Master::Subscribers::Subscriber::send(
case mesos::master::Event::SUBSCRIBED:
case mesos::master::Event::HEARTBEAT:
case mesos::master::Event::UNKNOWN:
- http.send(*event);
+ http.send(event);
break;
}
}
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 6d99d4f..a57237d 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -2236,9 +2236,9 @@ private:
// TODO(greggomann): Refactor this function into multiple event-specific
// overloads. See MESOS-8475.
void send(
- const process::Shared<mesos::master::Event>& event,
- const process::Shared<FrameworkInfo>& frameworkInfo,
- const process::Shared<Task>& task);
+ const mesos::master::Event& event,
+ const Option<FrameworkInfo>& frameworkInfo,
+ const Option<Task>& task);
~Subscriber()
{
@@ -2256,7 +2256,7 @@ private:
// Sends the event to all subscribers connected to the 'api/vX' endpoint.
void send(
- mesos::master::Event&& event,
+ const mesos::master::Event& event,
const Option<FrameworkInfo>& frameworkInfo = None(),
const Option<Task>& task = None());