You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ch...@apache.org on 2018/05/02 01:35:54 UTC

[6/9] mesos git commit: Remembered recovered and subscribed providers in ephemeral state.

Remembered recovered and subscribed providers in ephemeral state.

This patch adds a data structure to bookkeep subscribed and recovered
resource providers in the ephemeral state of the resource provider
manager.

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


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

Branch: refs/heads/master
Commit: 9a8cef0739446925a0719abf51758ea7443c8990
Parents: 169efe6
Author: Benjamin Bannier <be...@mesosphere.io>
Authored: Tue May 1 13:09:17 2018 -0700
Committer: Chun-Hung Hsiao <ch...@mesosphere.io>
Committed: Tue May 1 13:09:17 2018 -0700

----------------------------------------------------------------------
 src/resource_provider/manager.cpp | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/9a8cef07/src/resource_provider/manager.cpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/manager.cpp b/src/resource_provider/manager.cpp
index dfb8e73..bc52741 100644
--- a/src/resource_provider/manager.cpp
+++ b/src/resource_provider/manager.cpp
@@ -208,6 +208,10 @@ private:
   struct ResourceProviders
   {
     hashmap<ResourceProviderID, Owned<ResourceProvider>> subscribed;
+    hashmap<
+        ResourceProviderID,
+        mesos::resource_provider::registry::ResourceProvider>
+      known;
   } resourceProviders;
 
   struct Metrics
@@ -253,6 +257,13 @@ void ResourceProviderManagerProcess::initialize()
 Future<Nothing> ResourceProviderManagerProcess::recover(
     const mesos::resource_provider::registry::Registry& registry)
 {
+  foreach (
+      const mesos::resource_provider::registry::ResourceProvider&
+        resourceProvider,
+      registry.resource_providers()) {
+    resourceProviders.known.put(resourceProvider.id(), resourceProvider);
+  }
+
   recovered.set(Nothing());
 
   return Nothing();
@@ -697,6 +708,17 @@ void ResourceProviderManagerProcess::subscribe(
   resourceProviders.subscribed.put(
       resourceProviderId,
       std::move(resourceProvider));
+
+  if (!resourceProviders.known.contains(resourceProviderId)) {
+    mesos::resource_provider::registry::ResourceProvider resourceProvider_;
+    resourceProvider_.mutable_id()->CopyFrom(resourceProviderId);
+
+    resourceProviders.known.put(
+        resourceProviderId,
+        std::move(resourceProvider_));
+
+    // TODO(bbannier): Persist this information in the registry.
+  }
 }