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 2018/03/05 23:19:01 UTC
[2/3] mesos-site git commit: Updated the website built from mesos
SHA: 8f4552e.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/c6a7f738/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 5e6e008..c67b385 100644
--- a/content/api/latest/c++/hierarchical_8hpp_source.html
+++ b/content/api/latest/c++/hierarchical_8hpp_source.html
@@ -498,194 +498,190 @@
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="comment">// (e.g. some tasks and/or executors are consuming resources under the role).</span></div>
<div class="line"><a name="l00445"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a16c7474e21fd5aa3d219a0e46341038d"> 445</a></span>  <a class="code" href="classhashmap.html">hashmap<std::string, hashset<FrameworkID></a>> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a16c7474e21fd5aa3d219a0e46341038d">roles</a>;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// Configured quota for each role, if any. Setting quota for a role</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// changes the order that the role's frameworks are offered</span></div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// resources. Quota comes before fair share, hence setting quota moves</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// the role's frameworks towards the front of the allocation queue.</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// NOTE: We currently associate quota with roles, but this may</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// change in the future.</span></div>
-<div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a367074e000559d67efe3a377657d3a9f"> 454</a></span>  <a class="code" href="classhashmap.html">hashmap<std::string, Quota></a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a367074e000559d67efe3a377657d3a9f">quotas</a>;</div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// Aggregated resource reservations on all agents tied to a</span></div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="comment">// particular role, if any. These are stripped scalar quantities</span></div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// that contain no meta-data. Used for accounting resource</span></div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="comment">// reservations for quota limit.</span></div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">// Only roles with non-empty reservations will be stored in the map.</span></div>
-<div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a9ee5817f34f7a0506b67c26a87cd5748"> 462</a></span>  <a class="code" href="classhashmap.html">hashmap<std::string, Resources></a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a9ee5817f34f7a0506b67c26a87cd5748">reservationScalarQuantities</a>;</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// Configured quota for each role, if any. If a role does not have</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// an entry here it has the default quota of (no guarantee, no limit).</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a367074e000559d67efe3a377657d3a9f"> 449</a></span>  <a class="code" href="classhashmap.html">hashmap<std::string, Quota></a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a367074e000559d67efe3a377657d3a9f">quotas</a>;</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// Aggregated resource reservations on all agents tied to a</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// particular role, if any. These are stripped scalar quantities</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// that contain no meta-data.</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">// Only roles with non-empty reservations will be stored in the map.</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a9ee5817f34f7a0506b67c26a87cd5748"> 456</a></span>  <a class="code" href="classhashmap.html">hashmap<std::string, Resources></a> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a9ee5817f34f7a0506b67c26a87cd5748">reservationScalarQuantities</a>;</div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// Slaves to send offers for.</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a65468666990c8079dc0f3e716abb82b8"> 459</a></span>  <a class="code" href="classOption.html">Option<hashset<std::string></a>> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a65468666990c8079dc0f3e716abb82b8">whitelist</a>;</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">// Resources (by name) that will be excluded from a role's fair share.</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a650088517da5692657a58ab961376d77"> 462</a></span>  <a class="code" href="classOption.html">Option<std::set<std::string></a>> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a650088517da5692657a58ab961376d77">fairnessExcludeResourceNames</a>;</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="comment">// Slaves to send offers for.</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a65468666990c8079dc0f3e716abb82b8"> 465</a></span>  <a class="code" href="classOption.html">Option<hashset<std::string></a>> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a65468666990c8079dc0f3e716abb82b8">whitelist</a>;</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="comment">// Filter GPU resources based on the `GPU_RESOURCES` framework capability.</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a5b569bbf8a0b8a07d3219ae7718828ca"> 465</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a5b569bbf8a0b8a07d3219ae7718828ca">filterGpuResources</a>;</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// Resources (by name) that will be excluded from a role's fair share.</span></div>
-<div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a650088517da5692657a58ab961376d77"> 468</a></span>  <a class="code" href="classOption.html">Option<std::set<std::string></a>> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a650088517da5692657a58ab961376d77">fairnessExcludeResourceNames</a>;</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// The master's domain, if any.</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a64b69bd952f0b6768c115cfbc36a8b87"> 468</a></span>  <a class="code" href="classOption.html">Option<DomainInfo></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="l00469"></a><span class="lineno"> 469</span> </div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="comment">// Filter GPU resources based on the `GPU_RESOURCES` framework capability.</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a5b569bbf8a0b8a07d3219ae7718828ca"> 471</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a5b569bbf8a0b8a07d3219ae7718828ca">filterGpuResources</a>;</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">// The master's domain, if any.</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a64b69bd952f0b6768c115cfbc36a8b87"> 474</a></span>  <a class="code" href="classOption.html">Option<DomainInfo></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="l00475"></a><span class="lineno"> 475</span> </div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">// There are two stages of allocation. During the first stage resources</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">// are allocated only to frameworks under roles with quota set. During</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// the second stage remaining resources that would not be required to</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">// satisfy un-allocated quota are then allocated to frameworks under</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">// roles with no quota set.</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// Each stage comprises two levels of sorting, hence "hierarchical".</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">// Level 1 sorts across roles:</span></div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="comment">// Currently, only the allocated portion of the reserved resources are</span></div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">// accounted for fairness calculation.</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="comment">// TODO(mpark): Reserved resources should be accounted for fairness</span></div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="comment">// calculation whether they are allocated or not, since they model a long or</span></div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">// forever running task. That is, the effect of reserving resources is</span></div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">// equivalent to launching a task in that the resources that make up the</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// reservation are not available to other roles as non-revocable.</span></div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// Level 2 sorts across frameworks within a particular role:</span></div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">// Reserved resources at this level are, and should be accounted for</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="comment">// fairness calculation only if they are allocated. This is because</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// reserved resources are fairly shared across the frameworks in the role.</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// The allocator relies on `Sorter`s to employ a particular sorting</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">// algorithm. Each level has its own sorter and hence may have different</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="comment">// fairness calculations.</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="comment">// There are two stages of allocation:</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="comment">// Stage 1: Allocate to satisfy quota guarantees.</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// Stage 2: Allocate above quota guarantees up to quota limits.</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// Note that we need to hold back enough "headroom"</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">// to ensure that any unsatisfied quota can be</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">// satisfied later.</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="comment">// Each stage comprises two levels of sorting, hence "hierarchical".</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">// Level 1 sorts across roles:</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="comment">// Currently, only the allocated portion of the reserved resources are</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// accounted for fairness calculation.</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="comment">// TODO(mpark): Reserved resources should be accounted for fairness</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">// calculation whether they are allocated or not, since they model a long or</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">// forever running task. That is, the effect of reserving resources is</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="comment">// equivalent to launching a task in that the resources that make up the</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="comment">// reservation are not available to other roles as non-revocable.</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">// Level 2 sorts across frameworks within a particular role:</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// Reserved resources at this level are, and should be accounted for</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="comment">// fairness calculation only if they are allocated. This is because</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// reserved resources are fairly shared across the frameworks in the role.</span></div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="comment">// The allocator relies on `Sorter`s to employ a particular sorting</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// algorithm. Each level has its own sorter and hence may have different</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="comment">// fairness calculations.</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">// NOTE: The hierarchical allocator considers revocable resources as</span></div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="comment">// regular resources when doing fairness calculations.</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// NOTE: The hierarchical allocator considers revocable resources as</span></div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">// regular resources when doing fairness calculations.</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="comment">// TODO(vinod): Consider using a different fairness algorithm for</span></div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">// revocable resources.</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="comment">// A sorter for active roles. This sorter determines the order in which</span></div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="comment">// roles are allocated resources during Level 1 of the second stage.</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// The total cluster resources are used as the resource pool.</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca"> 511</a></span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned<Sorter></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="l00512"></a><span class="lineno"> 512</span> </div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// A dedicated sorter for roles for which quota is set. This sorter</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// determines the order in which quota'ed roles are allocated resources</span></div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="comment">// during Level 1 of the first stage. Quota'ed roles have resources</span></div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// allocated up to their allocated quota (the first stage) prior to</span></div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="comment">// non-quota'ed roles (the second stage). Since only non-revocable</span></div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// resources are available for quota, the total cluster non-revocable</span></div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">// resoures are used as the resource pool.</span></div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// NOTE: A role appears in `quotaRoleSorter` if it has a quota (even if</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="comment">// no frameworks are currently registered in that role). In contrast,</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="comment">// `roleSorter` only contains entries for roles with one or more</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">// registered frameworks.</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="comment">// NOTE: We do not include revocable resources in the quota role sorter,</span></div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// because the quota role sorter's job is to perform fair sharing between</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">// the quota roles as it pertains to their level of quota satisfaction.</span></div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="comment">// Since revocable resources do not increase a role's level of satisfaction</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">// toward its quota, we choose to exclude them from the quota role 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#adc8f37c1d8b0394cc23178491d44c2e2"> 531</a></span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned<Sorter></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="l00532"></a><span class="lineno"> 532</span> </div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="comment">// A collection of sorters, one per active role. Each sorter determines</span></div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="comment">// the order in which frameworks that belong to the same role are allocated</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="comment">// resources inside the role's share. These sorters are used during Level 2</span></div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="comment">// for both the first and the second stages. Since frameworks are sharing</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// the resources allocated to a role, the role's allocation is used as</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">// the resource pool for each role specific framework sorter.</span></div>
-<div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a286878cde1e175a044fb6bb934a9b941"> 539</a></span>  <a class="code" href="classhashmap.html">hashmap<std::string, process::Owned<Sorter></a>> <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="l00540"></a><span class="lineno"> 540</span> </div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="comment">// Factory function for framework sorters.</span></div>
-<div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a4612ef1ebd4f96f80e35a216a79e6a8d"> 542</a></span>  <span class="keyword">const</span> std::function<Sorter*()> <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="l00543"></a><span class="lineno"> 543</span> </div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordtype">bool</span> isFrameworkTrackedUnderRole(</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// TODO(vinod): Consider using a different fairness algorithm for</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">// revocable resources.</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="comment">// A sorter for active roles. This sorter determines the order in which</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">// roles are allocated resources during Level 1 of the second stage.</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="comment">// The total cluster resources are used as the resource pool.</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a890bb44d4f46f708e8df0514036d44ca"> 508</a></span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned<Sorter></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="l00509"></a><span class="lineno"> 509</span> </div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// TODO(bmahler): Remove this in favor of either using the same sorting</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="comment">// between satisfying guarantees and bursting above guarantees up to</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="comment">// limits, or have a different sorting technique specifically for</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// satisfying guarantees (e.g. MESOS-8026). This is tech debt from</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// when a "quota role" was considered different from a "non-quota"</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="comment">// role. However, they are the same, one just has a default quota.</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="comment">// A dedicated sorter for roles that have a non-default quota.</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// This sorter determines the order in which guarantees are allocated</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">// during Level 1 of the first stage. Since only non-revocable</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="comment">// resources are available for quota, the total cluster non-revocable</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// resources are used as the resource pool.</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="comment">// NOTE: A role appears in `quotaRoleSorter` if it has a non-default</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">// quota (even if no frameworks are currently registered in that role).</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// In contrast, `roleSorter` only contains entries for roles with one</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="comment">// or more registered frameworks.</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#adc8f37c1d8b0394cc23178491d44c2e2"> 527</a></span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned<Sorter></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="l00528"></a><span class="lineno"> 528</span> </div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="comment">// A collection of sorters, one per active role. Each sorter determines</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">// the order in which frameworks that belong to the same role are allocated</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment">// resources inside the role's share. These sorters are used during Level 2</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="comment">// for both the first and the second stages. Since frameworks are sharing</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="comment">// the resources allocated to a role, the role's allocation is used as</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="comment">// the resource pool for each role specific framework sorter.</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a286878cde1e175a044fb6bb934a9b941"> 535</a></span>  <a class="code" href="classhashmap.html">hashmap<std::string, process::Owned<Sorter></a>> <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="l00536"></a><span class="lineno"> 536</span> </div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// Factory function for framework sorters.</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a4612ef1ebd4f96f80e35a216a79e6a8d"> 538</a></span>  <span class="keyword">const</span> std::function<Sorter*()> <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="l00539"></a><span class="lineno"> 539</span> </div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordtype">bool</span> isFrameworkTrackedUnderRole(</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">const</span> std::string& role) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordtype">void</span> trackFrameworkUnderRole(</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keyword">const</span> std::string& role) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keyword">const</span> std::string& role);</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordtype">void</span> trackFrameworkUnderRole(</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordtype">void</span> untrackFrameworkUnderRole(</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keyword">const</span> std::string& role);</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordtype">void</span> untrackFrameworkUnderRole(</div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keyword">const</span> std::string& role);</div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">// `trackReservations` and `untrackReservations` are helpers</span></div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// to track role resource reservations. We need to keep</span></div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// track of reservations to enforce role quota limit</span></div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="comment">// in the presence of unallocated reservations. See MESOS-4527.</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// `trackReservations` and `untrackReservations` are helpers</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="comment">// to track role resource reservations. We need to keep</span></div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="comment">// track of reservations to enforce role quota limit</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="comment">// in the presence of unallocated reservations. See MESOS-4527.</span></div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// TODO(mzhu): Ideally, we want these helpers to instead track the</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// reservations as *allocated* in the sorters even when the</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="comment">// reservations have not been allocated yet. This will help to:</span></div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="comment">// TODO(mzhu): Ideally, we want these helpers to instead track the</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="comment">// reservations as *allocated* in the sorters even when the</span></div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="comment">// reservations have not been allocated yet. This will help to:</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// (1) Solve the fairness issue when roles with unallocated</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="comment">// reservations may game the allocator (See MESOS-8299).</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">// (2) Simplify the quota enforcement logic -- the allocator</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="comment">// would no longer need to track reservations separately.</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordtype">void</span> trackReservations(</div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap<std::string, Resources></a>& reservations);</div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordtype">void</span> untrackReservations(</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap<std::string, Resources></a>& reservations);</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="comment">// Helper to update the agent's total resources maintained in the allocator</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// and the role and quota sorters (whose total resources match the agent's</span></div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">// total resources). Returns true iff the stored agent total was changed.</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordtype">bool</span> updateSlaveTotal(<span class="keyword">const</span> SlaveID& slaveId, <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& total);</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> </div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="comment">// Helper that returns true if the given agent is located in a</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="comment">// different region than the master. This can only be the case if</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="comment">// the agent and the master are both configured with a fault domain.</span></div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <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>& slave) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> </div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="comment">// Helper to track allocated resources on an agent.</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordtype">void</span> trackAllocatedResources(</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& allocated);</div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="comment">// Helper to untrack resources that are no longer allocated on an agent.</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordtype">void</span> untrackAllocatedResources(</div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& allocated);</div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="comment">// Helper that removes all existing offer filters for the given slave</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="comment">// id.</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordtype">void</span> removeFilters(<span class="keyword">const</span> SlaveID& slaveId);</div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> };</div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="comment">// (1) Solve the fairness issue when roles with unallocated</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="comment">// reservations may game the allocator (See MESOS-8299).</span></div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">// (2) Simplify the quota enforcement logic -- the allocator</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// would no longer need to track reservations separately.</span></div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordtype">void</span> trackReservations(</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap<std::string, Resources></a>& reservations);</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordtype">void</span> untrackReservations(</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap<std::string, Resources></a>& reservations);</div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">// Helper to update the agent's total resources maintained in the allocator</span></div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">// and the role and quota sorters (whose total resources match the agent's</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="comment">// total resources). Returns true iff the stored agent total was changed.</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordtype">bool</span> updateSlaveTotal(<span class="keyword">const</span> SlaveID& slaveId, <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& total);</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// Helper that returns true if the given agent is located in a</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">// different region than the master. This can only be the case if</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">// the agent and the master are both configured with a fault domain.</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <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>& slave) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> </div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="comment">// Helper to track allocated resources on an agent.</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordtype">void</span> trackAllocatedResources(</div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& allocated);</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="comment">// Helper to untrack resources that are no longer allocated on an agent.</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordtype">void</span> untrackAllocatedResources(</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& allocated);</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="comment">// Helper that removes all existing offer filters for the given slave</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="comment">// id.</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordtype">void</span> removeFilters(<span class="keyword">const</span> SlaveID& slaveId);</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> };</div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> </div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> } <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> </div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> </div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> } <span class="comment">// namespace internal {</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> </div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="comment">// We map the templatized version of the `HierarchicalAllocatorProcess` to one</span></div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="comment">// that relies on sorter factories in the internal namespace. This allows us</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="comment">// to keep the implementation of the allocator in the implementation file.</span></div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="keyword">template</span> <</div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keyword">typename</span> RoleSorter,</div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keyword">typename</span> FrameworkSorter,</div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keyword">typename</span> QuotaRoleSorter></div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <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="l00616"></a><span class="lineno"> 616</span>  : <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="l00617"></a><span class="lineno"> 617</span> {</div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00619"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f"> 619</a></span>  <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f">HierarchicalAllocatorProcess</a>()</div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  : <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">"hierarchical-allocator"</span>)),</div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  internal::<a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html">HierarchicalAllocatorProcess</a>(</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  [this]() -> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1Sorter.html">Sorter</a>* {</div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">return</span> <span class="keyword">new</span> RoleSorter(this-><span class="keyword">self</span>(), <span class="stringliteral">"allocator/mesos/roles/"</span>);</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  },</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  []() -> <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="l00626"></a><span class="lineno"> 626</span>  []() -> Sorter* { <span class="keywordflow">return</span> <span class="keyword">new</span> QuotaRoleSorter(); }) {}</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> };</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> </div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> } <span class="comment">// namespace allocator {</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> } <span class="comment">// namespace master {</span></div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> } <span class="comment">// namespace internal {</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> } <span class="comment">// namespace mesos {</span></div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="preprocessor">#endif // __MASTER_ALLOCATOR_MESOS_HIERARCHICAL_HPP__</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="comment">// We map the templatized version of the `HierarchicalAllocatorProcess` to one</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="comment">// that relies on sorter factories in the internal namespace. This allows us</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="comment">// to keep the implementation of the allocator in the implementation file.</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="keyword">template</span> <</div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keyword">typename</span> RoleSorter,</div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keyword">typename</span> FrameworkSorter,</div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keyword">typename</span> QuotaRoleSorter></div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <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="l00612"></a><span class="lineno"> 612</span>  : <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="l00613"></a><span class="lineno"> 613</span> {</div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f"> 615</a></span>  <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html#af1ad7f99497807e029ac8d2654abaa4f">HierarchicalAllocatorProcess</a>()</div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  : <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">"hierarchical-allocator"</span>)),</div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  internal::<a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1HierarchicalAllocatorProcess.html">HierarchicalAllocatorProcess</a>(</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  [this]() -> <a class="code" href="classmesos_1_1internal_1_1master_1_1allocator_1_1Sorter.html">Sorter</a>* {</div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordflow">return</span> <span class="keyword">new</span> RoleSorter(this-><span class="keyword">self</span>(), <span class="stringliteral">"allocator/mesos/roles/"</span>);</div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  },</div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  []() -> <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="l00622"></a><span class="lineno"> 622</span>  []() -> Sorter* { <span class="keywordflow">return</span> <span class="keyword">new</span> QuotaRoleSorter(); }) {}</div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> };</div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span> </div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</span> } <span class="comment">// namespace allocator {</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> } <span class="comment">// namespace master {</span></div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> } <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> } <span class="comment">// namespace mesos {</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <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< process::Future< Nothing > > 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 &frameworkId, const SlaveID &slaveId, const Resources &resources, const Option< Filters > &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< DRFSorter, DRFSorter, DRFSorter > HierarchicalDRFAllocatorProcess</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:55</div></div>
@@ -695,7 +691,7 @@
<div class="ttc" id="structNothing_html"><div class="ttname"><a href="structNothing.html">Nothing</a></div><div class="ttdef"><b>Definition:</b> nothing.hpp:16</div></div>
<div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_1_1Maintenance_html"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_1_1Maintenance.html">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave::Maintenance</a></div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:399</div></div>
<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a7f494dfbf653c87d3c88089841404762"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a7f494dfbf653c87d3c88089841404762">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::removeFramework</a></div><div class="ttdeci">void removeFramework(const FrameworkID &frameworkId)</div></div>
-<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a5b569bbf8a0b8a07d3219ae7718828ca"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a5b569bbf8a0b8a07d3219ae7718828ca">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::filterGpuResources</a></div><div class="ttdeci">bool filterGpuResources</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:471</div></div>
+<div class="ttc" id="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_html_a5b569bbf8a0b8a07d3219ae7718828ca"><div class="ttname"><a href="classmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess.html#a5b569bbf8a0b8a07d3219ae7718828ca">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::filterGpuResources</a></div><div class="ttdeci">bool filterGpuResources</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:465</div></div>
<div class="ttc" id="classOption_html"><div class="ttname"><a href="classOption.html">Option</a></div><div class="ttdef"><b>Definition:</b> option.hpp:28</div></div>
<div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Framework_html_a56b6fba37d8c466ad48c0e50ab1ce92d"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Framework.html#a56b6fba37d8c466ad48c0e50ab1ce92d">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Framework::offerFilters</a></div><div class="ttdeci">hashmap< std::string, hashmap< SlaveID, hashset< OfferFilter * > > > offerFilters</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:322</div></div>
<div class="ttc" id="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_1_1Maintenance_html_a0b9b6570de9c59236995ff57e3f5b75a"><div class="ttname"><a href="structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1HierarchicalAllocatorProcess_1_1Slave_1_1Maintenance.html#a0b9b6570de9c59236995ff57e3f5b75a">mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave::Maintenance::offersOutstanding</a></div><div class="ttdeci">hashset< FrameworkID > offersOutstanding</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:421</div></div>
@@ -705,7 +701,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 &frameworkId, const std::set< std::string > &roles)</div></div>
<div class="ttc" id="classhashset_html"><div class="ttname"><a href="classhashset.html">hashset< std::string ></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< std::string, process::Owned< Sorter > > frameworkSorters</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:539</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< std::string, process::Owned< Sorter > > frameworkSorters</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:535</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 &frameworkId, const SlaveID &slaveId, const Resources &offeredResources, const std::vector< ResourceConversion > &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:253</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 &frameworkId)</div></div>
@@ -715,7 +711,7 @@
<div class="ttc" id="namespaceproc_html_a34396c6140a28f583dc13fee3c3c35d4"><div class="ttname"><a href="namespaceproc.html#a34396c6140a28f583dc13fee3c3c35d4">proc::status</a></div><div class="ttdeci">Result< ProcessStatus > 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< int > 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:619</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:615</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< SlaveID, Slave > slaves</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:430</div></div>
@@ -725,12 +721,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 &frameworkId, const std::string &role, const SlaveID &slaveId, const Resources &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< Sorter > quotaRoleSorter</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_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< Sorter > quotaRoleSorter</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:527</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< HierarchicalDRFAllocatorProcess > 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< Sorter *()> frameworkSorterFactory</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:542</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< Sorter *()> frameworkSorterFactory</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:538</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 &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 &frameworkId, const std::vector< Request > &requests)</div></div>
@@ -741,7 +737,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< Nothing > unavailability(const Unavailability &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 &slaveId, const Option< Unavailability > &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< Sorter > roleSorter</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:511</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< Sorter > roleSorter</div><div class="ttdef"><b>Definition:</b> hierarchical.hpp:508</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 &frameworkId, const std::string &role, const SlaveID &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"
<TRUNCATED>