You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by an...@apache.org on 2017/07/27 21:41:04 UTC

[2/4] mesos git commit: Added 'FRAMEWORK_UPDATED' event for master streaming api.

Added 'FRAMEWORK_UPDATED' event for master streaming api.

Added event 'FRAMEWORK_UPDATED' for master's v1 streaming operator API.
It will be generated when the framework re-registers with the master.

Review: https://reviews.apache.org/r/60929/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/77486d77
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/77486d77
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/77486d77

Branch: refs/heads/master
Commit: 77486d777973bc4e7e4a2098c66e128a56702a94
Parents: 5073717
Author: Quinn Leng <qu...@gmail.com>
Authored: Thu Jul 27 14:31:23 2017 -0700
Committer: Anand Mazumdar <an...@apache.org>
Committed: Thu Jul 27 14:38:25 2017 -0700

----------------------------------------------------------------------
 include/mesos/master/master.proto    |  8 ++++++++
 include/mesos/v1/master/master.proto |  8 ++++++++
 src/common/protobuf_utils.cpp        | 27 +++++++++++++++++++++++++++
 src/common/protobuf_utils.hpp        |  5 +++++
 src/master/master.cpp                | 20 ++++++++++++++++++++
 5 files changed, 68 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/77486d77/include/mesos/master/master.proto
----------------------------------------------------------------------
diff --git a/include/mesos/master/master.proto b/include/mesos/master/master.proto
index 8051519..c387504 100644
--- a/include/mesos/master/master.proto
+++ b/include/mesos/master/master.proto
@@ -481,6 +481,7 @@ message Event {
     AGENT_ADDED = 4; // See `AgentAdded` below.
     AGENT_REMOVED = 5; // See `AgentRemoved` below.
     FRAMEWORK_ADDED = 6; // See `FrameworkAdded` below.
+    FRAMEWORK_UPDATED = 7; // See `FrameworkUpdated` below.
 
     // TODO(vinod): Fill in more events.
   }
@@ -517,6 +518,12 @@ message Event {
     required Response.GetFrameworks.Framework framework = 1;
   }
 
+  // Forwarded by the master when a framework re-registers with the master
+  // upon a disconnection (network error) or upon a master failover.
+  message FrameworkUpdated {
+    required Response.GetFrameworks.Framework framework = 1;
+  }
+
   // Forwarded by the master when an agent becomes known to it.
   // This can happen when an agent registered for the first
   // time, or reregistered after a master failover.
@@ -543,4 +550,5 @@ message Event {
   optional AgentAdded agent_added = 5;
   optional AgentRemoved agent_removed = 6;
   optional FrameworkAdded framework_added = 7;
+  optional FrameworkUpdated framework_updated = 8;
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/77486d77/include/mesos/v1/master/master.proto
----------------------------------------------------------------------
diff --git a/include/mesos/v1/master/master.proto b/include/mesos/v1/master/master.proto
index 22800fe..b79143a 100644
--- a/include/mesos/v1/master/master.proto
+++ b/include/mesos/v1/master/master.proto
@@ -481,6 +481,7 @@ message Event {
     AGENT_ADDED = 4; // See `AgentAdded` below.
     AGENT_REMOVED = 5; // See `AgentRemoved` below.
     FRAMEWORK_ADDED = 6; // See `FrameworkAdded` below.
+    FRAMEWORK_UPDATED = 7; // See `FrameworkUpdated` below.
 
     // TODO(vinod): Fill in more events.
   }
@@ -518,6 +519,12 @@ message Event {
     required Response.GetFrameworks.Framework framework = 1;
   }
 
+  // Forwarded by the master when a framework re-registers with the master
+  // upon a disconnection (network error) or upon a master failover.
+  message FrameworkUpdated {
+    required Response.GetFrameworks.Framework framework = 1;
+  }
+
   // Forwarded by the master when an agent becomes known to it.
   // This can happen when an agent registered for the first
   // time, or reregistered after a master failover.
@@ -544,4 +551,5 @@ message Event {
   optional AgentAdded agent_added = 5;
   optional AgentRemoved agent_removed = 6;
   optional FrameworkAdded framework_added = 7;
+  optional FrameworkUpdated framework_updated = 8;
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/77486d77/src/common/protobuf_utils.cpp
----------------------------------------------------------------------
diff --git a/src/common/protobuf_utils.cpp b/src/common/protobuf_utils.cpp
index 5e0bddc..1ab168a 100644
--- a/src/common/protobuf_utils.cpp
+++ b/src/common/protobuf_utils.cpp
@@ -839,6 +839,33 @@ mesos::master::Event createFrameworkAdded(
 }
 
 
+mesos::master::Event createFrameworkUpdated(
+    const mesos::internal::master::Framework& _framework)
+{
+  mesos::master::Event event;
+  event.set_type(mesos::master::Event::FRAMEWORK_UPDATED);
+
+  mesos::master::Response::GetFrameworks::Framework* framework =
+    event.mutable_framework_updated()->mutable_framework();
+
+  framework->mutable_framework_info()->CopyFrom(_framework.info);
+  framework->set_active(_framework.active());
+  framework->set_connected(_framework.connected());
+  framework->set_recovered(_framework.recovered());
+
+  framework->mutable_registered_time()->set_nanoseconds(
+      _framework.registeredTime.duration().ns());
+
+  framework->mutable_reregistered_time()->set_nanoseconds(
+      _framework.reregisteredTime.duration().ns());
+
+  framework->mutable_unregistered_time()->set_nanoseconds(
+      _framework.unregisteredTime.duration().ns());
+
+  return event;
+}
+
+
 mesos::master::Response::GetAgents::Agent createAgentResponse(
     const mesos::internal::master::Slave& slave)
 {

http://git-wip-us.apache.org/repos/asf/mesos/blob/77486d77/src/common/protobuf_utils.hpp
----------------------------------------------------------------------
diff --git a/src/common/protobuf_utils.hpp b/src/common/protobuf_utils.hpp
index 8f04978..2060e52 100644
--- a/src/common/protobuf_utils.hpp
+++ b/src/common/protobuf_utils.hpp
@@ -309,6 +309,11 @@ mesos::master::Event createFrameworkAdded(
     const mesos::internal::master::Framework& framework);
 
 
+// Helper for creating a 'FRAMEWORK_UPDATED' event from a `Framework`.
+mesos::master::Event createFrameworkUpdated(
+    const mesos::internal::master::Framework& framework);
+
+
 // Helper for creating an `Agent` response.
 mesos::master::Response::GetAgents::Agent createAgentResponse(
     const mesos::internal::master::Slave& slave);

http://git-wip-us.apache.org/repos/asf/mesos/blob/77486d77/src/master/master.cpp
----------------------------------------------------------------------
diff --git a/src/master/master.cpp b/src/master/master.cpp
index c972841..a80cc5e 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -2752,6 +2752,11 @@ void Master::_subscribe(
     }
   }
 
+  if (!subscribers.subscribed.empty()) {
+    subscribers.send(
+        protobuf::master::event::createFrameworkUpdated(*framework));
+  }
+
   // Broadcast the new framework pid to all the slaves. We have to
   // broadcast because an executor might be running on a slave but
   // it currently isn't running any tasks.
@@ -3077,6 +3082,11 @@ void Master::_subscribe(
       // if necesssary.
       LOG(INFO) << "Framework " << *framework << " failed over";
       failoverFramework(framework, from);
+
+      if (!subscribers.subscribed.empty()) {
+        subscribers.send(
+            protobuf::master::event::createFrameworkUpdated(*framework));
+      }
     } else {
       LOG(INFO) << "Allowing framework " << *framework
                 << " to subscribe with an already used id";
@@ -3124,6 +3134,11 @@ void Master::_subscribe(
       message.mutable_framework_id()->MergeFrom(frameworkInfo.id());
       message.mutable_master_info()->MergeFrom(info_);
       framework->send(message);
+
+      if (!subscribers.subscribed.empty()) {
+        subscribers.send(
+            protobuf::master::event::createFrameworkUpdated(*framework));
+      }
       return;
     }
   } else {
@@ -3140,6 +3155,11 @@ void Master::_subscribe(
       send(from, message);
       return;
     }
+
+    if (!subscribers.subscribed.empty()) {
+      subscribers.send(
+          protobuf::master::event::createFrameworkUpdated(*framework));
+    }
   }
 
   // Broadcast the new framework pid to all the slaves. We have to