You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2017/12/09 00:21:37 UTC

[2/2] mesos-site git commit: Updated the website built from mesos SHA: 2ab1a31.

Updated the website built from mesos SHA: 2ab1a31.


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

Branch: refs/heads/asf-site
Commit: cf2cf68359a9c4fd3cbb94809166a957d1612c6b
Parents: 3d6a445
Author: jenkins <bu...@apache.org>
Authored: Sat Dec 9 00:21:33 2017 +0000
Committer: jenkins <bu...@apache.org>
Committed: Sat Dec 9 00:21:33 2017 +0000

----------------------------------------------------------------------
 .../latest/c++/hierarchical_8hpp_source.html    |  268 +-
 content/sitemap.xml                             | 8894 +++++++++---------
 2 files changed, 4584 insertions(+), 4578 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/cf2cf683/content/api/latest/c++/hierarchical_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/hierarchical_8hpp_source.html b/content/api/latest/c++/hierarchical_8hpp_source.html
index 85fd7bd..2e454d0 100644
--- a/content/api/latest/c++/hierarchical_8hpp_source.html
+++ b/content/api/latest/c++/hierarchical_8hpp_source.html
@@ -520,138 +520,144 @@
 <div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a64b69bd952f0b6768c115cfbc36a8b87">  466</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;DomainInfo&gt;</a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a64b69bd952f0b6768c115cfbc36a8b87">domain</a>;</div>
 <div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;</div>
 <div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;  <span class="comment">// There are two stages of allocation. During the first stage resources</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;  <span class="comment">// are allocated only to frameworks in roles with quota set. During the</span></div>
-<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;  <span class="comment">// second stage remaining resources that would not be required to satisfy</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;  <span class="comment">// un-allocated quota are then allocated to all frameworks.</span></div>
-<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;  <span class="comment">// Each stage comprises two levels of sorting, hence &quot;hierarchical&quot;.</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  <span class="comment">// Level 1 sorts across roles:</span></div>
-<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  <span class="comment">//   Currently, only the allocated portion of the reserved resources are</span></div>
-<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;  <span class="comment">//   accounted for fairness calculation.</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  <span class="comment">// TODO(mpark): Reserved resources should be accounted for fairness</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <span class="comment">// calculation whether they are allocated or not, since they model a long or</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  <span class="comment">// forever running task. That is, the effect of reserving resources is</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="comment">// equivalent to launching a task in that the resources that make up the</span></div>
-<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;  <span class="comment">// reservation are not available to other roles as non-revocable.</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;  <span class="comment">// Level 2 sorts across frameworks within a particular role:</span></div>
-<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  <span class="comment">//   Reserved resources at this level are, and should be accounted for</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;  <span class="comment">//   fairness calculation only if they are allocated. This is because</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;  <span class="comment">//   reserved resources are fairly shared across the frameworks in the role.</span></div>
-<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="comment">// The allocator relies on `Sorter`s to employ a particular sorting</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;  <span class="comment">// algorithm. Each level has its own sorter and hence may have different</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  <span class="comment">// fairness calculations.</span></div>
-<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  <span class="comment">// NOTE: The hierarchical allocator considers revocable resources as</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;  <span class="comment">// regular resources when doing fairness calculations.</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  <span class="comment">// TODO(vinod): Consider using a different fairness algorithm for</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  <span class="comment">// revocable resources.</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;</div>
-<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;  <span class="comment">// A sorter for active roles. This sorter determines the order in which</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  <span class="comment">// roles are allocated resources during Level 1 of the second stage.</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca">  501</a></span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;Sorter&gt;</a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca">roleSorter</a>;</div>
-<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div>
-<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;  <span class="comment">// A dedicated sorter for roles for which quota is set. This sorter</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;  <span class="comment">// determines the order in which quota&#39;ed roles are allocated resources</span></div>
-<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;  <span class="comment">// during Level 1 of the first stage. Quota&#39;ed roles have resources</span></div>
-<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  <span class="comment">// allocated up to their alloted quota (the first stage) prior to</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;  <span class="comment">// non-quota&#39;ed roles (the second stage).</span></div>
-<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  <span class="comment">// NOTE: A role appears in `quotaRoleSorter` if it has a quota (even if</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;  <span class="comment">// no frameworks are currently registered in that role). In contrast,</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;  <span class="comment">// `roleSorter` only contains entries for roles with one or more</span></div>
-<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;  <span class="comment">// registered frameworks.</span></div>
-<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  <span class="comment">// NOTE: We do not include revocable resources in the quota role sorter,</span></div>
-<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;  <span class="comment">// because the quota role sorter&#39;s job is to perform fair sharing between</span></div>
-<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;  <span class="comment">// the quota roles as it pertains to their level of quota satisfaction.</span></div>
-<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;  <span class="comment">// Since revocable resources do not increase a role&#39;s level of satisfaction</span></div>
-<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;  <span class="comment">// toward its quota, we choose to exclude them from the quota role sorter.</span></div>
-<div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#adc8f37c1d8b0394cc23178491d44c2e2">  519</a></span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;Sorter&gt;</a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#adc8f37c1d8b0394cc23178491d44c2e2">quotaRoleSorter</a>;</div>
-<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;</div>
-<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;  <span class="comment">// A collection of sorters, one per active role. Each sorter determines</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;  <span class="comment">// the order in which frameworks that belong to the same role are allocated</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;  <span class="comment">// resources inside the role&#39;s share. These sorters are used during Level 2</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;  <span class="comment">// for both the first and the second stages.</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a286878cde1e175a044fb6bb934a9b941">  525</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, process::Owned&lt;Sorter&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a286878cde1e175a044fb6bb934a9b941">frameworkSorters</a>;</div>
-<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;</div>
-<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;  <span class="comment">// Factory function for framework sorters.</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a4612ef1ebd4f96f80e35a216a79e6a8d">  528</a></span>&#160;  <span class="keyword">const</span> std::function&lt;Sorter*()&gt; <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a4612ef1ebd4f96f80e35a216a79e6a8d">frameworkSorterFactory</a>;</div>
-<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;</div>
-<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;  <span class="keywordtype">bool</span> isFrameworkTrackedUnderRole(</div>
-<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
-<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;      <span class="keyword">const</span> std::string&amp; role) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;</div>
-<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;  <span class="keywordtype">void</span> trackFrameworkUnderRole(</div>
-<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
-<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;      <span class="keyword">const</span> std::string&amp; role);</div>
-<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;</div>
-<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;  <span class="keywordtype">void</span> untrackFrameworkUnderRole(</div>
-<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
-<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;      <span class="keyword">const</span> std::string&amp; role);</div>
-<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;</div>
-<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;  <span class="comment">// Helper to update the agent&#39;s total resources maintained in the allocator</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;  <span class="comment">// and the role and quota sorters (whose total resources match the agent&#39;s</span></div>
-<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;  <span class="comment">// total resources). Returns true iff the stored agent total was changed.</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;  <span class="keywordtype">bool</span> updateSlaveTotal(<span class="keyword">const</span> SlaveID&amp; slaveId, <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; total);</div>
-<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;</div>
-<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;  <span class="comment">// Helper that returns true if the given agent is located in a</span></div>
-<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;  <span class="comment">// different region than the master. This can only be the case if</span></div>
-<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;  <span class="comment">// the agent and the master are both configured with a fault domain.</span></div>
-<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;  <span class="keywordtype">bool</span> isRemoteSlave(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave.html">Slave</a>&amp; slave) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;</div>
-<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;  <span class="comment">// Helper to track allocated resources on an agent.</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;  <span class="keywordtype">void</span> trackAllocatedResources(</div>
-<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;      <span class="keyword">const</span> SlaveID&amp; slaveId,</div>
-<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
-<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; allocated);</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;  <span class="comment">// are allocated only to frameworks under roles with quota set. During</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;  <span class="comment">// the second stage remaining resources that would not be required to</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;  <span class="comment">// satisfy un-allocated quota are then allocated to frameworks under</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;  <span class="comment">// roles with no quota set.</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  <span class="comment">// Each stage comprises two levels of sorting, hence &quot;hierarchical&quot;.</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;  <span class="comment">// Level 1 sorts across roles:</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;  <span class="comment">//   Currently, only the allocated portion of the reserved resources are</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;  <span class="comment">//   accounted for fairness calculation.</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <span class="comment">// TODO(mpark): Reserved resources should be accounted for fairness</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  <span class="comment">// calculation whether they are allocated or not, since they model a long or</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="comment">// forever running task. That is, the effect of reserving resources is</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;  <span class="comment">// equivalent to launching a task in that the resources that make up the</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;  <span class="comment">// reservation are not available to other roles as non-revocable.</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;  <span class="comment">// Level 2 sorts across frameworks within a particular role:</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;  <span class="comment">//   Reserved resources at this level are, and should be accounted for</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;  <span class="comment">//   fairness calculation only if they are allocated. This is because</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;  <span class="comment">//   reserved resources are fairly shared across the frameworks in the role.</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;  <span class="comment">// The allocator relies on `Sorter`s to employ a particular sorting</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  <span class="comment">// algorithm. Each level has its own sorter and hence may have different</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;  <span class="comment">// fairness calculations.</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;  <span class="comment">// NOTE: The hierarchical allocator considers revocable resources as</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;  <span class="comment">// regular resources when doing fairness calculations.</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;  <span class="comment">// TODO(vinod): Consider using a different fairness algorithm for</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  <span class="comment">// revocable resources.</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;  <span class="comment">// A sorter for active roles. This sorter determines the order in which</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;  <span class="comment">// roles are allocated resources during Level 1 of the second stage.</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;  <span class="comment">// The total cluster resources are used as the resource pool.</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca">  503</a></span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;Sorter&gt;</a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca">roleSorter</a>;</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;  <span class="comment">// A dedicated sorter for roles for which quota is set. This sorter</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  <span class="comment">// determines the order in which quota&#39;ed roles are allocated resources</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;  <span class="comment">// during Level 1 of the first stage. Quota&#39;ed roles have resources</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  <span class="comment">// allocated up to their allocated quota (the first stage) prior to</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  <span class="comment">// non-quota&#39;ed roles (the second stage). Since only non-revocable</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;  <span class="comment">// resources are available for quota, the total cluster non-revocable</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;  <span class="comment">// resoures are used as the resource pool.</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;  <span class="comment">// NOTE: A role appears in `quotaRoleSorter` if it has a quota (even if</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  <span class="comment">// no frameworks are currently registered in that role). In contrast,</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;  <span class="comment">// `roleSorter` only contains entries for roles with one or more</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;  <span class="comment">// registered frameworks.</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;  <span class="comment">// NOTE: We do not include revocable resources in the quota role sorter,</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;  <span class="comment">// because the quota role sorter&#39;s job is to perform fair sharing between</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;  <span class="comment">// the quota roles as it pertains to their level of quota satisfaction.</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;  <span class="comment">// Since revocable resources do not increase a role&#39;s level of satisfaction</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;  <span class="comment">// toward its quota, we choose to exclude them from the quota role sorter.</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#adc8f37c1d8b0394cc23178491d44c2e2">  523</a></span>&#160;  <a class="code" href="classprocess_1_1Owned.html">process::Owned&lt;Sorter&gt;</a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#adc8f37c1d8b0394cc23178491d44c2e2">quotaRoleSorter</a>;</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;  <span class="comment">// A collection of sorters, one per active role. Each sorter determines</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;  <span class="comment">// the order in which frameworks that belong to the same role are allocated</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;  <span class="comment">// resources inside the role&#39;s share. These sorters are used during Level 2</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;  <span class="comment">// for both the first and the second stages. Since frameworks are sharing</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;  <span class="comment">// the resources allocated to a role, the role&#39;s allocation is used as</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;  <span class="comment">// the resource pool for each role specific framework sorter.</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a286878cde1e175a044fb6bb934a9b941">  531</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;std::string, process::Owned&lt;Sorter&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a286878cde1e175a044fb6bb934a9b941">frameworkSorters</a>;</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;  <span class="comment">// Factory function for framework sorters.</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a4612ef1ebd4f96f80e35a216a79e6a8d">  534</a></span>&#160;  <span class="keyword">const</span> std::function&lt;Sorter*()&gt; <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a4612ef1ebd4f96f80e35a216a79e6a8d">frameworkSorterFactory</a>;</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;  <span class="keywordtype">bool</span> isFrameworkTrackedUnderRole(</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;      <span class="keyword">const</span> std::string&amp; role) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;  <span class="keywordtype">void</span> trackFrameworkUnderRole(</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;      <span class="keyword">const</span> std::string&amp; role);</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;  <span class="keywordtype">void</span> untrackFrameworkUnderRole(</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;      <span class="keyword">const</span> std::string&amp; role);</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;  <span class="comment">// Helper to update the agent&#39;s total resources maintained in the allocator</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;  <span class="comment">// and the role and quota sorters (whose total resources match the agent&#39;s</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;  <span class="comment">// total resources). Returns true iff the stored agent total was changed.</span></div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;  <span class="keywordtype">bool</span> updateSlaveTotal(<span class="keyword">const</span> SlaveID&amp; slaveId, <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; total);</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;  <span class="comment">// Helper that returns true if the given agent is located in a</span></div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;  <span class="comment">// different region than the master. This can only be the case if</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;  <span class="comment">// the agent and the master are both configured with a fault domain.</span></div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;  <span class="keywordtype">bool</span> isRemoteSlave(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave.html">Slave</a>&amp; slave) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;</div>
-<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;  <span class="comment">// Helper to untrack resources that are no longer allocated on an agent.</span></div>
-<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;  <span class="keywordtype">void</span> untrackAllocatedResources(</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;  <span class="comment">// Helper to track allocated resources on an agent.</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;  <span class="keywordtype">void</span> trackAllocatedResources(</div>
 <div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;      <span class="keyword">const</span> SlaveID&amp; slaveId,</div>
 <div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
 <div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; allocated);</div>
 <div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;</div>
-<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;  <span class="comment">// Helper that removes all existing offer filters for the given slave</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;  <span class="comment">// id.</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;  <span class="keywordtype">void</span> removeFilters(<span class="keyword">const</span> SlaveID&amp; slaveId);</div>
-<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;};</div>
-<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;  <span class="comment">// Helper to untrack resources that are no longer allocated on an agent.</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;  <span class="keywordtype">void</span> untrackAllocatedResources(</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;      <span class="keyword">const</span> SlaveID&amp; slaveId,</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;      <span class="keyword">const</span> FrameworkID&amp; frameworkId,</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>&amp; allocated);</div>
 <div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;</div>
-<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;} <span class="comment">// namespace internal {</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;</div>
-<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;</div>
-<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;<span class="comment">// We map the templatized version of the `HierarchicalAllocatorProcess` to one</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;<span class="comment">// that relies on sorter factories in the internal namespace. This allows us</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;<span class="comment">// to keep the implementation of the allocator in the implementation file.</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;<span class="keyword">template</span> &lt;</div>
-<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;    <span class="keyword">typename</span> RoleSorter,</div>
-<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;    <span class="keyword">typename</span> FrameworkSorter,</div>
-<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;    <span class="keyword">typename</span> QuotaRoleSorter&gt;</div>
-<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html">HierarchicalAllocatorProcess</a></div>
-<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;  : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html">internal::HierarchicalAllocatorProcess</a></div>
-<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;{</div>
-<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f">  585</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f">HierarchicalAllocatorProcess</a>()</div>
-<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    : <a class="code" href="classprocess_1_1ProcessBase.html#a318038bacd95e4260864533f7cfe12fd">ProcessBase</a>(<a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>::ID::<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">generate</a>(<span class="stringliteral">&quot;hierarchical-allocator&quot;</span>)),</div>
-<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;      internal::<a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html">HierarchicalAllocatorProcess</a>(</div>
-<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;          [this]() -&gt; <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1Sorter.html">Sorter</a>* {</div>
-<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">new</span> RoleSorter(this-&gt;<span class="keyword">self</span>(), <span class="stringliteral">&quot;allocator/mesos/roles/&quot;</span>);</div>
-<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;          },</div>
-<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;          []() -&gt; <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1Sorter.html">Sorter</a>* { <span class="keywordflow">return</span> <span class="keyword">new</span> FrameworkSorter(); },</div>
-<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;          []() -&gt; Sorter* { <span class="keywordflow">return</span> <span class="keyword">new</span> QuotaRoleSorter(); }) {}</div>
-<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;};</div>
-<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;</div>
-<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;} <span class="comment">// namespace allocator {</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;} <span class="comment">// namespace master {</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;} <span class="comment">// namespace internal {</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;} <span class="comment">// namespace mesos {</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;</div>
-<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;<span class="preprocessor">#endif // __MASTER_ALLOCATOR_MESOS_HIERARCHICAL_HPP__</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;  <span class="comment">// Helper that removes all existing offer filters for the given slave</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;  <span class="comment">// id.</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;  <span class="keywordtype">void</span> removeFilters(<span class="keyword">const</span> SlaveID&amp; slaveId);</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;};</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;} <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;<span class="comment">// We map the templatized version of the `HierarchicalAllocatorProcess` to one</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;<span class="comment">// that relies on sorter factories in the internal namespace. This allows us</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;<span class="comment">// to keep the implementation of the allocator in the implementation file.</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;<span class="keyword">template</span> &lt;</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;    <span class="keyword">typename</span> RoleSorter,</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;    <span class="keyword">typename</span> FrameworkSorter,</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    <span class="keyword">typename</span> QuotaRoleSorter&gt;</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html">HierarchicalAllocatorProcess</a></div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;  : <span class="keyword">public</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html">internal::HierarchicalAllocatorProcess</a></div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;{</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f">  591</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f">HierarchicalAllocatorProcess</a>()</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;    : <a class="code" href="classprocess_1_1ProcessBase.html#a318038bacd95e4260864533f7cfe12fd">ProcessBase</a>(<a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>::ID::<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">generate</a>(<span class="stringliteral">&quot;hierarchical-allocator&quot;</span>)),</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;      internal::<a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html">HierarchicalAllocatorProcess</a>(</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;          [this]() -&gt; <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1Sorter.html">Sorter</a>* {</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">new</span> RoleSorter(this-&gt;<span class="keyword">self</span>(), <span class="stringliteral">&quot;allocator/mesos/roles/&quot;</span>);</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;          },</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;          []() -&gt; <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1Sorter.html">Sorter</a>* { <span class="keywordflow">return</span> <span class="keyword">new</span> FrameworkSorter(); },</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;          []() -&gt; Sorter* { <span class="keywordflow">return</span> <span class="keyword">new</span> QuotaRoleSorter(); }) {}</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;};</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;} <span class="comment">// namespace allocator {</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;} <span class="comment">// namespace master {</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;} <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;} <span class="comment">// namespace mesos {</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;<span class="preprocessor">#endif // __MASTER_ALLOCATOR_MESOS_HIERARCHICAL_HPP__</span></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a2b43be40bc7ad484b83b055d13cf65b4"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a2b43be40bc7ad484b83b055d13cf65b4">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::allocation</a></div><div class="ttdeci">Option&lt; process::Future&lt; Nothing &gt; &gt; allocation</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:439</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_ab4dcf0920448f674bd9c71d4eb40dd6b"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ab4dcf0920448f674bd9c71d4eb40dd6b">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::recoverResources</a></div><div class="ttdeci">void recoverResources(const FrameworkID &amp;frameworkId, const SlaveID &amp;slaveId, const Resources &amp;resources, const Option&lt; Filters &gt; &amp;filters)</div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1master_1_1allocator_html_afd3f57eb292f0dcfaf611c06f874ec7f"><div class="ttname"><a href="namespacemesos_1_1internal_1_1master_1_1allocator.html#afd3f57eb292f0dcfaf611c06f874ec7f">mesos::internal::master::allocator::HierarchicalDRFAllocatorProcess</a></div><div class="ttdeci">HierarchicalAllocatorProcess&lt; DRFSorter, DRFSorter, DRFSorter &gt; HierarchicalDRFAllocatorProcess</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:55</div></div>
@@ -671,7 +677,7 @@
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_ac6adbe7f44a82c49396888a88b8073d4"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ac6adbe7f44a82c49396888a88b8073d4">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::suppressOffers</a></div><div class="ttdeci">void suppressOffers(const FrameworkID &amp;frameworkId, const std::set&lt; std::string &gt; &amp;roles)</div></div>
 <div class="ttc" id="classhashset_html"><div class="ttname"><a href="classhashset.html">hashset&lt; std::string &gt;</a></div></div>
 <div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_html_a48c1b27dd3c249141df18a3bd346a36d"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave.html#a48c1b27dd3c249141df18a3bd346a36d">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave::info</a></div><div class="ttdeci">SlaveInfo info</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:389</div></div>
-<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a286878cde1e175a044fb6bb934a9b941"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a286878cde1e175a044fb6bb934a9b941">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::frameworkSorters</a></div><div class="ttdeci">hashmap&lt; std::string, process::Owned&lt; Sorter &gt; &gt; frameworkSorters</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:525</div></div>
+<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a286878cde1e175a044fb6bb934a9b941"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a286878cde1e175a044fb6bb934a9b941">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::frameworkSorters</a></div><div class="ttdeci">hashmap&lt; std::string, process::Owned&lt; Sorter &gt; &gt; frameworkSorters</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:531</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_aaa1ce6cba8a90007ee2c9d2f87dae895"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#aaa1ce6cba8a90007ee2c9d2f87dae895">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::updateAllocation</a></div><div class="ttdeci">void updateAllocation(const FrameworkID &amp;frameworkId, const SlaveID &amp;slaveId, const Resources &amp;offeredResources, const std::vector&lt; ResourceConversion &gt; &amp;conversions)</div></div>
 <div class="ttc" id="structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities_html"><div class="ttname"><a href="structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities.html">mesos::internal::protobuf::slave::Capabilities</a></div><div class="ttdef"><b>Definition:</b> protobuf_utils.hpp:246</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a3ad2f1c1ed3395ca6e5d4668f7d65b16"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a3ad2f1c1ed3395ca6e5d4668f7d65b16">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::activateFramework</a></div><div class="ttdeci">void activateFramework(const FrameworkID &amp;frameworkId)</div></div>
@@ -681,7 +687,7 @@
 <div class="ttc" id="namespaceproc_html_a34396c6140a28f583dc13fee3c3c35d4"><div class="ttname"><a href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc::status</a></div><div class="ttdeci">Result&lt; ProcessStatus &gt; status(pid_t pid)</div><div class="ttdef"><b>Definition:</b> proc.hpp:166</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a9487bd3b10f4c8c3837551c961497bf6"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a9487bd3b10f4c8c3837551c961497bf6">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::expectedAgentCount</a></div><div class="ttdeci">Option&lt; int &gt; expectedAgentCount</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:289</div></div>
 <div class="ttc" id="classmesos_1_1Resources_html"><div class="ttname"><a href="classmesos_1_1Resources.html">mesos::Resources</a></div><div class="ttdef"><b>Definition:</b> resources.hpp:79</div></div>
-<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess_html_af1ad7f99497807e029ac8d2654abaa4f"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f">mesos::internal::master::allocator::HierarchicalAllocatorProcess::HierarchicalAllocatorProcess</a></div><div class="ttdeci">HierarchicalAllocatorProcess()</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:585</div></div>
+<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess_html_af1ad7f99497807e029ac8d2654abaa4f"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f">mesos::internal::master::allocator::HierarchicalAllocatorProcess::HierarchicalAllocatorProcess</a></div><div class="ttdeci">HierarchicalAllocatorProcess()</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:591</div></div>
 <div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_html_a8ba5026ba665b3c0f8c52ea3f101c24d"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave.html#a8ba5026ba665b3c0f8c52ea3f101c24d">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave::activated</a></div><div class="ttdeci">bool activated</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:383</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a9e122112ca8eca4b89e0597ebafb6056"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a9e122112ca8eca4b89e0597ebafb6056">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::resume</a></div><div class="ttdeci">void resume()</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_abf75366546bda737ba22d994b6a7fb20"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#abf75366546bda737ba22d994b6a7fb20">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::slaves</a></div><div class="ttdeci">hashmap&lt; SlaveID, Slave &gt; slaves</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:430</div></div>
@@ -691,12 +697,12 @@
 <div class="ttc" id="classDuration_html"><div class="ttname"><a href="classDuration.html">Duration</a></div><div class="ttdef"><b>Definition:</b> duration.hpp:32</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a71547c982e85db6b83e562732107f578"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a71547c982e85db6b83e562732107f578">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::isFiltered</a></div><div class="ttdeci">bool isFiltered(const FrameworkID &amp;frameworkId, const std::string &amp;role, const SlaveID &amp;slaveId, const Resources &amp;resources) const </div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1MesosAllocator_html"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1MesosAllocator.html">mesos::internal::master::allocator::MesosAllocator</a></div><div class="ttdef"><b>Definition:</b> allocator.hpp:41</div></div>
-<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_adc8f37c1d8b0394cc23178491d44c2e2"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#adc8f37c1d8b0394cc23178491d44c2e2">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::quotaRoleSorter</a></div><div class="ttdeci">process::Owned&lt; Sorter &gt; quotaRoleSorter</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:519</div></div>
+<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_adc8f37c1d8b0394cc23178491d44c2e2"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#adc8f37c1d8b0394cc23178491d44c2e2">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::quotaRoleSorter</a></div><div class="ttdeci">process::Owned&lt; Sorter &gt; quotaRoleSorter</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:523</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a0e5859a3d12ed5e1ef6bf5ae1efe7525"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a0e5859a3d12ed5e1ef6bf5ae1efe7525">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::pause</a></div><div class="ttdeci">void pause()</div></div>
 <div class="ttc" id="lambda_8hpp_html"><div class="ttname"><a href="lambda_8hpp.html">lambda.hpp</a></div></div>
 <div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_html_aa1d48cbee5fd1c7d1764b8e37fe4d4e9"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave.html#aa1d48cbee5fd1c7d1764b8e37fe4d4e9">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave::total</a></div><div class="ttdeci">Resources total</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:351</div></div>
 <div class="ttc" id="namespacemesos_1_1internal_1_1master_1_1allocator_html_a2697b55e9bb55b527e433d5e378ea4ba"><div class="ttname"><a href="namespacemesos_1_1internal_1_1master_1_1allocator.html#a2697b55e9bb55b527e433d5e378ea4ba">mesos::internal::master::allocator::HierarchicalDRFAllocator</a></div><div class="ttdeci">MesosAllocator&lt; HierarchicalDRFAllocatorProcess &gt; HierarchicalDRFAllocator</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:61</div></div>
-<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a4612ef1ebd4f96f80e35a216a79e6a8d"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a4612ef1ebd4f96f80e35a216a79e6a8d">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::frameworkSorterFactory</a></div><div class="ttdeci">const std::function&lt; Sorter *()&gt; frameworkSorterFactory</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:528</div></div>
+<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a4612ef1ebd4f96f80e35a216a79e6a8d"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a4612ef1ebd4f96f80e35a216a79e6a8d">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::frameworkSorterFactory</a></div><div class="ttdeci">const std::function&lt; Sorter *()&gt; frameworkSorterFactory</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:534</div></div>
 <div class="ttc" id="classhashmap_html"><div class="ttname"><a href="classhashmap.html">hashmap</a></div><div class="ttdef"><b>Definition:</b> hashmap.hpp:38</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a967e320b1d5dd56a1dec05dc3aaa58a2"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a967e320b1d5dd56a1dec05dc3aaa58a2">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::_offer_filters_active</a></div><div class="ttdeci">double _offer_filters_active(const std::string &amp;role)</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a95e4fd793218cdaa228b89c10bef2343"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a95e4fd793218cdaa228b89c10bef2343">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::requestResources</a></div><div class="ttdeci">void requestResources(const FrameworkID &amp;frameworkId, const std::vector&lt; Request &gt; &amp;requests)</div></div>
@@ -707,7 +713,7 @@
 <div class="ttc" id="namespacemesos_1_1internal_1_1master_1_1maintenance_1_1validation_html_a766d3749f894fce457b084746f0ba868"><div class="ttname"><a href="namespacemesos_1_1internal_1_1master_1_1maintenance_1_1validation.html#a766d3749f894fce457b084746f0ba868">mesos::internal::master::maintenance::validation::unavailability</a></div><div class="ttdeci">Try&lt; Nothing &gt; unavailability(const Unavailability &amp;unavailability)</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_abe0733932a78d03ec3c94ae0d71605ba"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#abe0733932a78d03ec3c94ae0d71605ba">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::updateUnavailability</a></div><div class="ttdeci">void updateUnavailability(const SlaveID &amp;slaveId, const Option&lt; Unavailability &gt; &amp;unavailability)</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess</a></div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:73</div></div>
-<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a890bb44d4f46f708e8df0514036d44ca"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::roleSorter</a></div><div class="ttdeci">process::Owned&lt; Sorter &gt; roleSorter</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:501</div></div>
+<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a890bb44d4f46f708e8df0514036d44ca"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::roleSorter</a></div><div class="ttdeci">process::Owned&lt; Sorter &gt; roleSorter</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:503</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a2928f839fd010669924789c6cccd0829"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a2928f839fd010669924789c6cccd0829">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::expire</a></div><div class="ttdeci">void expire(const FrameworkID &amp;frameworkId, const std::string &amp;role, const SlaveID &amp;slaveId, OfferFilter *offerFilter)</div></div>
 <div class="ttc" id="namespacerouting_1_1filter_1_1internal_html_a646d4e3238d83329525957b5a5586be2"><div class="ttname"><a href="namespacerouting_1_1filter_1_1internal.html#a646d4e3238d83329525957b5a5586be2">routing::filter::internal::filters</a></div><div class="ttdeci">Result&lt; std::vector&lt; Filter&lt; Classifier &gt; &gt; &gt; filters(const std::string &amp;_link, const Handle &amp;parent)</div><div class="ttdef"><b>Definition:</b> internal.hpp:776</div></div>
 <div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_ad50746d75024b2b7dbf7ebfca00655e8"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#ad50746d75024b2b7dbf7ebfca00655e8">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::allocate</a></div><div class="ttdeci">process::Future&lt; Nothing &gt; allocate()</div></div>