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/11/30 03:13:58 UTC
[1/2] mesos-site git commit: Updated the website built from mesos
SHA: 24550e7.
Repository: mesos-site
Updated Branches:
refs/heads/asf-site 0a57abbfc -> 932b282ae
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/932b282a/content/api/latest/c++/src_2master_2master_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2master_2master_8hpp_source.html b/content/api/latest/c++/src_2master_2master_8hpp_source.html
index 2460d16..90067ac 100644
--- a/content/api/latest/c++/src_2master_2master_8hpp_source.html
+++ b/content/api/latest/c++/src_2master_2master_8hpp_source.html
@@ -2183,783 +2183,789 @@
<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  tasks[task->task_id()] = task;</div>
<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> </div>
<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>  <span class="keywordflow">if</span> (!Master::isRemovable(task->state())) {</div>
-<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> += task->resources();</div>
-<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()] += task->resources();</div>
-<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> </div>
-<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>  <span class="comment">// It's possible that we're not tracking the task's role for</span></div>
-<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>  <span class="comment">// this framework if the role is absent from the framework's</span></div>
-<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>  <span class="comment">// set of roles. In this case, we track the role's allocation</span></div>
-<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  <span class="comment">// for this framework.</span></div>
-<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>  CHECK(!task->resources().empty());</div>
-<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  <span class="keyword">const</span> std::string& role =</div>
-<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>  task->resources().begin()->allocation_info().role();</div>
-<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span> </div>
-<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a614fb3ba127133b939e2a733c6ecbf2a">isTrackedUnderRole</a>(role)) {</div>
-<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afa185682905163563412aa1915e612c8">trackUnderRole</a>(role);</div>
-<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  }</div>
-<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>  }</div>
-<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>  }</div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>  <span class="comment">// Note that we explicitly convert from protobuf to `Resources` once</span></div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  <span class="comment">// and then use the result for calculations to avoid performance penalty</span></div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  <span class="comment">// for multiple conversions and validations implied by `+=` with protobuf</span></div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>  <span class="comment">// agrument.</span></div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>  <span class="comment">// Conversion is safe, as resources have already passed validation.</span></div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a> resources = task->resources();</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> += resources;</div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()] += resources;</div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span> </div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>  <span class="comment">// It's possible that we're not tracking the task's role for</span></div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>  <span class="comment">// this framework if the role is absent from the framework's</span></div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  <span class="comment">// set of roles. In this case, we track the role's allocation</span></div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>  <span class="comment">// for this framework.</span></div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  CHECK(!task->resources().empty());</div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>  <span class="keyword">const</span> std::string& role =</div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>  task->resources().begin()->allocation_info().role();</div>
<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span> </div>
-<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>  <span class="comment">// Update framework to recover the resources that were previously</span></div>
-<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  <span class="comment">// being used by `task`.</span></div>
-<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>  <span class="comment">// TODO(bmahler): This is a hack for performance. We need to</span></div>
-<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>  <span class="comment">// maintain resource counters because computing task resources</span></div>
-<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>  <span class="comment">// functionally for all tasks is expensive, for now.</span></div>
-<div class="line"><a name="l02270"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a"> 2270</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a">recoverResources</a>(Task* task)</div>
-<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  {</div>
-<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>  CHECK(tasks.contains(task->task_id()))</div>
-<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>  << <span class="stringliteral">"Unknown task "</span> << task->task_id()</div>
-<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>  << <span class="stringliteral">" of framework "</span> << task->framework_id();</div>
-<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span> </div>
-<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> -= task->resources();</div>
-<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()] -= task->resources();</div>
-<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()].empty()) {</div>
-<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>.erase(task->slave_id());</div>
-<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  }</div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a614fb3ba127133b939e2a733c6ecbf2a">isTrackedUnderRole</a>(role)) {</div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afa185682905163563412aa1915e612c8">trackUnderRole</a>(role);</div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>  }</div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>  }</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>  }</div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span> </div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  <span class="comment">// Update framework to recover the resources that were previously</span></div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  <span class="comment">// being used by `task`.</span></div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>  <span class="comment">// TODO(bmahler): This is a hack for performance. We need to</span></div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>  <span class="comment">// maintain resource counters because computing task resources</span></div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  <span class="comment">// functionally for all tasks is expensive, for now.</span></div>
+<div class="line"><a name="l02276"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a"> 2276</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a">recoverResources</a>(Task* task)</div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>  {</div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  CHECK(tasks.contains(task->task_id()))</div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  << <span class="stringliteral">"Unknown task "</span> << task->task_id()</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  << <span class="stringliteral">" of framework "</span> << task->framework_id();</div>
<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span> </div>
-<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>  <span class="comment">// If we are no longer subscribed to the role to which these resources are</span></div>
-<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>  <span class="comment">// being returned to, and we have no more resources allocated to us for that</span></div>
-<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  <span class="comment">// role, stop tracking the framework under the role.</span></div>
-<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>  CHECK(!task->resources().empty());</div>
-<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  <span class="keyword">const</span> std::string& role =</div>
-<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>  task->resources().begin()->allocation_info().role();</div>
-<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span> </div>
-<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>  <span class="keyword">auto</span> allocatedToRole = [&role](<span class="keyword">const</span> Resource& resource) {</div>
-<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>  <span class="keywordflow">return</span> resource.allocation_info().role() == role;</div>
-<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>  };</div>
-<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> </div>
-<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a>.count(role) == 0 &&</div>
-<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>()) {</div>
-<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>());</div>
-<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3edaf411ec6e409a3f8b2a77988ef65a">untrackUnderRole</a>(role);</div>
-<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>  }</div>
-<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>  }</div>
-<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span> </div>
-<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  <span class="comment">// Sends a message to the connected framework.</span></div>
-<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> Message></div>
-<div class="line"><a name="l02302"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71665f49a1e06ef4606f7eaae4c43669"> 2302</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71665f49a1e06ef4606f7eaae4c43669">send</a>(<span class="keyword">const</span> Message& message)</div>
-<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  {</div>
-<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ab741aebff99e28269136e04ab76800fa">connected</a>()) {</div>
-<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>  LOG(WARNING) << <span class="stringliteral">"Master attempted to send message to disconnected"</span></div>
-<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  << <span class="stringliteral">" framework "</span> << *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  }</div>
-<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span> </div>
-<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a574beb521d564fcbbbce942e694d106c">http</a>.isSome()) {</div>
-<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a574beb521d564fcbbbce942e694d106c">http</a>.get().send(message)) {</div>
-<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>  LOG(WARNING) << <span class="stringliteral">"Unable to send event to framework "</span> << *<span class="keyword">this</span> << <span class="stringliteral">":"</span></div>
-<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  << <span class="stringliteral">" connection closed"</span>;</div>
-<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  }</div>
-<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>  } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(pid);</div>
-<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  master-><a class="code" href="classProtobufProcess.html#a6c404fdc490a7199a0d2ad881d588e5c">send</a>(pid.get(), message);</div>
-<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>  }</div>
-<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  }</div>
-<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span> </div>
-<div class="line"><a name="l02320"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#afe96191551ae12c5793954ca9279df8a"> 2320</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afe96191551ae12c5793954ca9279df8a">addCompletedTask</a>(<span class="keyword">const</span> Task& task)</div>
-<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  {</div>
-<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  <span class="comment">// TODO(neilc): We currently allow frameworks to reuse the task</span></div>
-<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  <span class="comment">// IDs of completed tasks (although this is discouraged). This</span></div>
-<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>  <span class="comment">// means that there might be multiple completed tasks with the</span></div>
-<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>  <span class="comment">// same task ID. We should consider rejecting attempts to reuse</span></div>
-<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>  <span class="comment">// task IDs (MESOS-6779).</span></div>
-<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a24bbb82d27e409d2f48ed01fbf2619f1">completedTasks</a>.push_back(<a class="code" href="classprocess_1_1Owned.html">process::Owned<Task></a>(<span class="keyword">new</span> Task(task)));</div>
-<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  }</div>
-<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> </div>
-<div class="line"><a name="l02330"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#aeb6de80698ecb96df9976f260eebe324"> 2330</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#aeb6de80698ecb96df9976f260eebe324">addUnreachableTask</a>(<span class="keyword">const</span> Task& task)</div>
-<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>  {</div>
-<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>  <span class="comment">// TODO(adam-mesos): Check if unreachable task already exists.</span></div>
-<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9db50e71935c3f9ac83ba47e18c700f8">unreachableTasks</a>.<a class="code" href="classBoundedHashMap.html#a54e903e8c96c78d913e74609d836ae67">set</a>(task.task_id(), <a class="code" href="classprocess_1_1Owned.html">process::Owned<Task></a>(<span class="keyword">new</span> Task(task)));</div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> -= task->resources();</div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()] -= task->resources();</div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[task->slave_id()].empty()) {</div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>.erase(task->slave_id());</div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  }</div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span> </div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>  <span class="comment">// If we are no longer subscribed to the role to which these resources are</span></div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>  <span class="comment">// being returned to, and we have no more resources allocated to us for that</span></div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>  <span class="comment">// role, stop tracking the framework under the role.</span></div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>  CHECK(!task->resources().empty());</div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>  <span class="keyword">const</span> std::string& role =</div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  task->resources().begin()->allocation_info().role();</div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> </div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>  <span class="keyword">auto</span> allocatedToRole = [&role](<span class="keyword">const</span> Resource& resource) {</div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>  <span class="keywordflow">return</span> resource.allocation_info().role() == role;</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>  };</div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span> </div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a>.count(role) == 0 &&</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>()) {</div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>());</div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3edaf411ec6e409a3f8b2a77988ef65a">untrackUnderRole</a>(role);</div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  }</div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>  }</div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span> </div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  <span class="comment">// Sends a message to the connected framework.</span></div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> Message></div>
+<div class="line"><a name="l02308"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71665f49a1e06ef4606f7eaae4c43669"> 2308</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a71665f49a1e06ef4606f7eaae4c43669">send</a>(<span class="keyword">const</span> Message& message)</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  {</div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ab741aebff99e28269136e04ab76800fa">connected</a>()) {</div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>  LOG(WARNING) << <span class="stringliteral">"Master attempted to send message to disconnected"</span></div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  << <span class="stringliteral">" framework "</span> << *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  }</div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span> </div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a574beb521d564fcbbbce942e694d106c">http</a>.isSome()) {</div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a574beb521d564fcbbbce942e694d106c">http</a>.get().send(message)) {</div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>  LOG(WARNING) << <span class="stringliteral">"Unable to send event to framework "</span> << *<span class="keyword">this</span> << <span class="stringliteral">":"</span></div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  << <span class="stringliteral">" connection closed"</span>;</div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>  }</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(pid);</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  master-><a class="code" href="classProtobufProcess.html#a6c404fdc490a7199a0d2ad881d588e5c">send</a>(pid.get(), message);</div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  }</div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>  }</div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span> </div>
+<div class="line"><a name="l02326"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#afe96191551ae12c5793954ca9279df8a"> 2326</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afe96191551ae12c5793954ca9279df8a">addCompletedTask</a>(<span class="keyword">const</span> Task& task)</div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>  {</div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  <span class="comment">// TODO(neilc): We currently allow frameworks to reuse the task</span></div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>  <span class="comment">// IDs of completed tasks (although this is discouraged). This</span></div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>  <span class="comment">// means that there might be multiple completed tasks with the</span></div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>  <span class="comment">// same task ID. We should consider rejecting attempts to reuse</span></div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>  <span class="comment">// task IDs (MESOS-6779).</span></div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a24bbb82d27e409d2f48ed01fbf2619f1">completedTasks</a>.push_back(<a class="code" href="classprocess_1_1Owned.html">process::Owned<Task></a>(<span class="keyword">new</span> Task(task)));</div>
<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>  }</div>
<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span> </div>
-<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>  <span class="comment">// Removes the task. `unreachable` indicates whether the task is removed due</span></div>
-<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>  <span class="comment">// to being unreachable. Note that we cannot rely on the task state because</span></div>
-<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>  <span class="comment">// it may not reflect unreachability due to being set to TASK_LOST for</span></div>
-<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>  <span class="comment">// backwards compatibility.</span></div>
-<div class="line"><a name="l02340"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4c5af232847a0b87898f9d2cbec32120"> 2340</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4c5af232847a0b87898f9d2cbec32120">removeTask</a>(Task* task, <span class="keywordtype">bool</span> unreachable)</div>
-<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>  {</div>
-<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>  CHECK(tasks.contains(task->task_id()))</div>
-<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  << <span class="stringliteral">"Unknown task "</span> << task->task_id()</div>
-<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>  << <span class="stringliteral">" of framework "</span> << task->framework_id();</div>
-<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span> </div>
-<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>  <span class="keywordflow">if</span> (!Master::isRemovable(task->state())) {</div>
-<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a">recoverResources</a>(task);</div>
-<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>  }</div>
-<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span> </div>
-<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  <span class="keywordflow">if</span> (unreachable) {</div>
-<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>  CHECK(task->state() == TASK_UNREACHABLE || task->state() == TASK_LOST)</div>
-<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>  << task->state();</div>
-<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#aeb6de80698ecb96df9976f260eebe324">addUnreachableTask</a>(*task);</div>
-<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afe96191551ae12c5793954ca9279df8a">addCompletedTask</a>(*task);</div>
-<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>  }</div>
-<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span> </div>
-<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>  tasks.erase(task->task_id());</div>
-<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>  }</div>
-<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span> </div>
-<div class="line"><a name="l02361"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a501020e1788fff91b58b13359e0476ae"> 2361</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a501020e1788fff91b58b13359e0476ae">addOffer</a>(Offer* offer)</div>
-<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  {</div>
-<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>  CHECK(!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.<a class="code" href="classhashset.html#a009647cc01c0fc3f1bb58395a89c2e48">contains</a>(offer)) << <span class="stringliteral">"Duplicate offer "</span> << offer->id();</div>
-<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.insert(offer);</div>
-<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a> += offer->resources();</div>
-<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac11f863cb7ccbc451d099fe77989cfce">offeredResources</a>[offer->slave_id()] += offer->resources();</div>
-<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>  }</div>
-<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> </div>
-<div class="line"><a name="l02369"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a7fadf70339d91d6a2dda333b62f31646"> 2369</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a7fadf70339d91d6a2dda333b62f31646">removeOffer</a>(Offer* offer)</div>
-<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>  {</div>
-<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.find(offer) != <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.end())</div>
-<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  << <span class="stringliteral">"Unknown offer "</span> << offer->id();</div>
-<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span> </div>
-<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a> -= offer->resources();</div>
-<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac11f863cb7ccbc451d099fe77989cfce">offeredResources</a>[offer->slave_id()] -= offer->resources();</div>
-<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac11f863cb7ccbc451d099fe77989cfce">offeredResources</a>[offer->slave_id()].empty()) {</div>
-<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac11f863cb7ccbc451d099fe77989cfce">offeredResources</a>.erase(offer->slave_id());</div>
-<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>  }</div>
+<div class="line"><a name="l02336"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#aeb6de80698ecb96df9976f260eebe324"> 2336</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#aeb6de80698ecb96df9976f260eebe324">addUnreachableTask</a>(<span class="keyword">const</span> Task& task)</div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>  {</div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>  <span class="comment">// TODO(adam-mesos): Check if unreachable task already exists.</span></div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9db50e71935c3f9ac83ba47e18c700f8">unreachableTasks</a>.<a class="code" href="classBoundedHashMap.html#a54e903e8c96c78d913e74609d836ae67">set</a>(task.task_id(), <a class="code" href="classprocess_1_1Owned.html">process::Owned<Task></a>(<span class="keyword">new</span> Task(task)));</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>  }</div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span> </div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>  <span class="comment">// Removes the task. `unreachable` indicates whether the task is removed due</span></div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  <span class="comment">// to being unreachable. Note that we cannot rely on the task state because</span></div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>  <span class="comment">// it may not reflect unreachability due to being set to TASK_LOST for</span></div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>  <span class="comment">// backwards compatibility.</span></div>
+<div class="line"><a name="l02346"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4c5af232847a0b87898f9d2cbec32120"> 2346</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4c5af232847a0b87898f9d2cbec32120">removeTask</a>(Task* task, <span class="keywordtype">bool</span> unreachable)</div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  {</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>  CHECK(tasks.contains(task->task_id()))</div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>  << <span class="stringliteral">"Unknown task "</span> << task->task_id()</div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  << <span class="stringliteral">" of framework "</span> << task->framework_id();</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span> </div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>  <span class="keywordflow">if</span> (!Master::isRemovable(task->state())) {</div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a">recoverResources</a>(task);</div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  }</div>
+<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span> </div>
+<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>  <span class="keywordflow">if</span> (unreachable) {</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>  CHECK(task->state() == TASK_UNREACHABLE || task->state() == TASK_LOST)</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>  << task->state();</div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#aeb6de80698ecb96df9976f260eebe324">addUnreachableTask</a>(*task);</div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>  } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afe96191551ae12c5793954ca9279df8a">addCompletedTask</a>(*task);</div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  }</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span> </div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  tasks.erase(task->task_id());</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>  }</div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span> </div>
+<div class="line"><a name="l02367"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a501020e1788fff91b58b13359e0476ae"> 2367</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a501020e1788fff91b58b13359e0476ae">addOffer</a>(Offer* offer)</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>  {</div>
+<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>  CHECK(!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.<a class="code" href="classhashset.html#a009647cc01c0fc3f1bb58395a89c2e48">contains</a>(offer)) << <span class="stringliteral">"Duplicate offer "</span> << offer->id();</div>
+<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.insert(offer);</div>
+<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a> += offer->resources();</div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac11f863cb7ccbc451d099fe77989cfce">offeredResources</a>[offer->slave_id()] += offer->resources();</div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  }</div>
+<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span> </div>
+<div class="line"><a name="l02375"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a7fadf70339d91d6a2dda333b62f31646"> 2375</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a7fadf70339d91d6a2dda333b62f31646">removeOffer</a>(Offer* offer)</div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  {</div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.find(offer) != <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.end())</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>  << <span class="stringliteral">"Unknown offer "</span> << offer->id();</div>
<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span> </div>
-<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.erase(offer);</div>
-<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  }</div>
-<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span> </div>
-<div class="line"><a name="l02383"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4f4199a2f4982a95e85f2a43cddeef54"> 2383</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4f4199a2f4982a95e85f2a43cddeef54">addInverseOffer</a>(InverseOffer* inverseOffer)</div>
-<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>  {</div>
-<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>  CHECK(!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a53c59b3da6fae1d939e4ef662b1db164">inverseOffers</a>.<a class="code" href="classhashset.html#a009647cc01c0fc3f1bb58395a89c2e48">contains</a>(inverseOffer))</div>
-<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>  << <span class="stringliteral">"Duplicate inverse offer "</span> << inverseOffer->id();</div>
-<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a53c59b3da6fae1d939e4ef662b1db164">inverseOffers</a>.insert(inverseOffer);</div>
-<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>  }</div>
-<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span> </div>
-<div class="line"><a name="l02390"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a953bc05fc32558e49a4c76679b0d2a7c"> 2390</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a953bc05fc32558e49a4c76679b0d2a7c">removeInverseOffer</a>(InverseOffer* inverseOffer)</div>
-<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>  {</div>
-<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a53c59b3da6fae1d939e4ef662b1db164">inverseOffers</a>.<a class="code" href="classhashset.html#a009647cc01c0fc3f1bb58395a89c2e48">contains</a>(inverseOffer))</div>
-<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>  << <span class="stringliteral">"Unknown inverse offer "</span> << inverseOffer->id();</div>
-<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span> </div>
-<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a53c59b3da6fae1d939e4ef662b1db164">inverseOffers</a>.erase(inverseOffer);</div>
-<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  }</div>
-<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span> </div>
-<div class="line"><a name="l02398"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac02a8f668ccabc7707c6bdc3a304acca"> 2398</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac02a8f668ccabc7707c6bdc3a304acca">hasExecutor</a>(<span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  <span class="keyword">const</span> ExecutorID& executorId)</div>
-<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>  {</div>
-<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  <span class="keywordflow">return</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(slaveId) &&</div>
-<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId].<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(executorId);</div>
-<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>  }</div>
-<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span> </div>
-<div class="line"><a name="l02405"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3a6ff7632d43e249ac5c0d33b69f15fb"> 2405</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3a6ff7632d43e249ac5c0d33b69f15fb">addExecutor</a>(<span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>  <span class="keyword">const</span> ExecutorInfo& executorInfo)</div>
-<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  {</div>
-<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  CHECK(!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac02a8f668ccabc7707c6bdc3a304acca">hasExecutor</a>(slaveId, executorInfo.executor_id()))</div>
-<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>  << <span class="stringliteral">"Duplicate executor '"</span> << executorInfo.executor_id()</div>
-<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  << <span class="stringliteral">"' on agent "</span> << slaveId;</div>
-<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span> </div>
-<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  <span class="comment">// Verify that Resource.AllocationInfo is set,</span></div>
-<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  <span class="comment">// this should be guaranteed by the master.</span></div>
-<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> Resource& resource, executorInfo.resources()) {</div>
-<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>  CHECK(resource.has_allocation_info());</div>
-<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>  }</div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a> -= offer->resources();</div>
+<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac11f863cb7ccbc451d099fe77989cfce">offeredResources</a>[offer->slave_id()] -= offer->resources();</div>
+<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac11f863cb7ccbc451d099fe77989cfce">offeredResources</a>[offer->slave_id()].empty()) {</div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac11f863cb7ccbc451d099fe77989cfce">offeredResources</a>.erase(offer->slave_id());</div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>  }</div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span> </div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a6fe60c0c1a491ac16776bad1598da52e">offers</a>.erase(offer);</div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>  }</div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span> </div>
+<div class="line"><a name="l02389"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4f4199a2f4982a95e85f2a43cddeef54"> 2389</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4f4199a2f4982a95e85f2a43cddeef54">addInverseOffer</a>(InverseOffer* inverseOffer)</div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>  {</div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>  CHECK(!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a53c59b3da6fae1d939e4ef662b1db164">inverseOffers</a>.<a class="code" href="classhashset.html#a009647cc01c0fc3f1bb58395a89c2e48">contains</a>(inverseOffer))</div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>  << <span class="stringliteral">"Duplicate inverse offer "</span> << inverseOffer->id();</div>
+<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a53c59b3da6fae1d939e4ef662b1db164">inverseOffers</a>.insert(inverseOffer);</div>
+<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>  }</div>
+<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span> </div>
+<div class="line"><a name="l02396"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a953bc05fc32558e49a4c76679b0d2a7c"> 2396</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a953bc05fc32558e49a4c76679b0d2a7c">removeInverseOffer</a>(InverseOffer* inverseOffer)</div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  {</div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a53c59b3da6fae1d939e4ef662b1db164">inverseOffers</a>.<a class="code" href="classhashset.html#a009647cc01c0fc3f1bb58395a89c2e48">contains</a>(inverseOffer))</div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  << <span class="stringliteral">"Unknown inverse offer "</span> << inverseOffer->id();</div>
+<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span> </div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a53c59b3da6fae1d939e4ef662b1db164">inverseOffers</a>.erase(inverseOffer);</div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  }</div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> </div>
+<div class="line"><a name="l02404"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac02a8f668ccabc7707c6bdc3a304acca"> 2404</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac02a8f668ccabc7707c6bdc3a304acca">hasExecutor</a>(<span class="keyword">const</span> SlaveID& slaveId,</div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  <span class="keyword">const</span> ExecutorID& executorId)</div>
+<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>  {</div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  <span class="keywordflow">return</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(slaveId) &&</div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId].<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(executorId);</div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>  }</div>
+<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span> </div>
+<div class="line"><a name="l02411"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3a6ff7632d43e249ac5c0d33b69f15fb"> 2411</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3a6ff7632d43e249ac5c0d33b69f15fb">addExecutor</a>(<span class="keyword">const</span> SlaveID& slaveId,</div>
+<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  <span class="keyword">const</span> ExecutorInfo& executorInfo)</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  {</div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  CHECK(!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac02a8f668ccabc7707c6bdc3a304acca">hasExecutor</a>(slaveId, executorInfo.executor_id()))</div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>  << <span class="stringliteral">"Duplicate executor '"</span> << executorInfo.executor_id()</div>
+<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>  << <span class="stringliteral">"' on agent "</span> << slaveId;</div>
<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span> </div>
-<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId][executorInfo.executor_id()] = executorInfo;</div>
-<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> += executorInfo.resources();</div>
-<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId] += executorInfo.resources();</div>
-<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span> </div>
-<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  <span class="comment">// It's possible that we're not tracking the task's role for</span></div>
-<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  <span class="comment">// this framework if the role is absent from the framework's</span></div>
-<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>  <span class="comment">// set of roles. In this case, we track the role's allocation</span></div>
-<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>  <span class="comment">// for this framework.</span></div>
-<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  <span class="keywordflow">if</span> (!executorInfo.resources().empty()) {</div>
-<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>  <span class="keyword">const</span> std::string& role =</div>
-<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  executorInfo.resources().begin()->allocation_info().role();</div>
-<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span> </div>
-<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a614fb3ba127133b939e2a733c6ecbf2a">isTrackedUnderRole</a>(role)) {</div>
-<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afa185682905163563412aa1915e612c8">trackUnderRole</a>(role);</div>
-<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>  }</div>
-<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  }</div>
-<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  }</div>
+<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  <span class="comment">// Verify that Resource.AllocationInfo is set,</span></div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  <span class="comment">// this should be guaranteed by the master.</span></div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  <span class="keywordflow">foreach</span> (<span class="keyword">const</span> Resource& resource, executorInfo.resources()) {</div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>  CHECK(resource.has_allocation_info());</div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  }</div>
+<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span> </div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId][executorInfo.executor_id()] = executorInfo;</div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> += executorInfo.resources();</div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId] += executorInfo.resources();</div>
+<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span> </div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  <span class="comment">// It's possible that we're not tracking the task's role for</span></div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  <span class="comment">// this framework if the role is absent from the framework's</span></div>
+<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  <span class="comment">// set of roles. In this case, we track the role's allocation</span></div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>  <span class="comment">// for this framework.</span></div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>  <span class="keywordflow">if</span> (!executorInfo.resources().empty()) {</div>
+<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>  <span class="keyword">const</span> std::string& role =</div>
+<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  executorInfo.resources().begin()->allocation_info().role();</div>
<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span> </div>
-<div class="line"><a name="l02436"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a0984d983c592e277dbbdbce6b1250da0"> 2436</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a0984d983c592e277dbbdbce6b1250da0">removeExecutor</a>(<span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>  <span class="keyword">const</span> ExecutorID& executorId)</div>
-<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  {</div>
-<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac02a8f668ccabc7707c6bdc3a304acca">hasExecutor</a>(slaveId, executorId))</div>
-<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  << <span class="stringliteral">"Unknown executor '"</span> << executorId</div>
-<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>  << <span class="stringliteral">"' of framework "</span> << <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>()</div>
-<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  << <span class="stringliteral">" of agent "</span> << slaveId;</div>
-<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span> </div>
-<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  <span class="keyword">const</span> ExecutorInfo& executorInfo = <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId][executorId];</div>
-<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span> </div>
-<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> -= executorInfo.resources();</div>
-<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId] -= executorInfo.resources();</div>
-<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId].empty()) {</div>
-<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>.erase(slaveId);</div>
-<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  }</div>
+<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>  <span class="keywordflow">if</span> (!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a614fb3ba127133b939e2a733c6ecbf2a">isTrackedUnderRole</a>(role)) {</div>
+<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afa185682905163563412aa1915e612c8">trackUnderRole</a>(role);</div>
+<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  }</div>
+<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>  }</div>
+<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  }</div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span> </div>
+<div class="line"><a name="l02442"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a0984d983c592e277dbbdbce6b1250da0"> 2442</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a0984d983c592e277dbbdbce6b1250da0">removeExecutor</a>(<span class="keyword">const</span> SlaveID& slaveId,</div>
+<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  <span class="keyword">const</span> ExecutorID& executorId)</div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  {</div>
+<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac02a8f668ccabc7707c6bdc3a304acca">hasExecutor</a>(slaveId, executorId))</div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  << <span class="stringliteral">"Unknown executor '"</span> << executorId</div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>  << <span class="stringliteral">"' of framework "</span> << <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>()</div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  << <span class="stringliteral">" of agent "</span> << slaveId;</div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span> </div>
+<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  <span class="keyword">const</span> ExecutorInfo& executorInfo = <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId][executorId];</div>
<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span> </div>
-<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  <span class="comment">// If we are no longer subscribed to the role to which these resources are</span></div>
-<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  <span class="comment">// being returned to, and we have no more resources allocated to us for that</span></div>
-<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  <span class="comment">// role, stop tracking the framework under the role.</span></div>
-<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  <span class="keywordflow">if</span> (!executorInfo.resources().empty()) {</div>
-<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  <span class="keyword">const</span> std::string& role =</div>
-<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  executorInfo.resources().begin()->allocation_info().role();</div>
-<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span> </div>
-<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>  <span class="keyword">auto</span> allocatedToRole = [&role](<span class="keyword">const</span> Resource& resource) {</div>
-<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  <span class="keywordflow">return</span> resource.allocation_info().role() == role;</div>
-<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  };</div>
-<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span> </div>
-<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a>.count(role) == 0 &&</div>
-<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>()) {</div>
-<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>());</div>
-<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3edaf411ec6e409a3f8b2a77988ef65a">untrackUnderRole</a>(role);</div>
-<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  }</div>
-<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  }</div>
-<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span> </div>
-<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId].erase(executorId);</div>
-<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId].empty()) {</div>
-<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>.erase(slaveId);</div>
-<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  }</div>
-<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  }</div>
+<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> -= executorInfo.resources();</div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId] -= executorInfo.resources();</div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId].empty()) {</div>
+<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>.erase(slaveId);</div>
+<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  }</div>
+<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span> </div>
+<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  <span class="comment">// If we are no longer subscribed to the role to which these resources are</span></div>
+<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>  <span class="comment">// being returned to, and we have no more resources allocated to us for that</span></div>
+<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  <span class="comment">// role, stop tracking the framework under the role.</span></div>
+<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  <span class="keywordflow">if</span> (!executorInfo.resources().empty()) {</div>
+<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  <span class="keyword">const</span> std::string& role =</div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  executorInfo.resources().begin()->allocation_info().role();</div>
+<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span> </div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  <span class="keyword">auto</span> allocatedToRole = [&role](<span class="keyword">const</span> Resource& resource) {</div>
+<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  <span class="keywordflow">return</span> resource.allocation_info().role() == role;</div>
+<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  };</div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span> </div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a>.count(role) == 0 &&</div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>()) {</div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a965f66810b71a0d2bab683fee1b6a9b6">totalOfferedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a62ae547c0d24fdfb139549e9b8126fdf">filter</a>(allocatedToRole).<a class="code" href="classmesos_1_1Resources.html#ab46b900ebe62b19390d9a2a82b46eb15">empty</a>());</div>
+<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3edaf411ec6e409a3f8b2a77988ef65a">untrackUnderRole</a>(role);</div>
+<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  }</div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  }</div>
<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span> </div>
-<div class="line"><a name="l02476"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a18d64436387829ef2a067e299be0bd98"> 2476</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a18d64436387829ef2a067e299be0bd98">addOfferOperation</a>(OfferOperation* operation)</div>
-<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  {</div>
-<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  CHECK(operation->has_framework_id());</div>
-<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span> </div>
-<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  <span class="keyword">const</span> FrameworkID& frameworkId = operation->framework_id();</div>
+<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId].erase(executorId);</div>
+<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  <span class="keywordflow">if</span> (<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>[slaveId].empty()) {</div>
+<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a1e784cda7e5c31ad19ec72b6a7b6fdee">executors</a>.erase(slaveId);</div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  }</div>
+<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  }</div>
<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span> </div>
-<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  <a class="code" href="classTry.html">Try<UUID></a> uuid = UUID::fromBytes(operation->operation_uuid());</div>
-<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(uuid);</div>
-<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span> </div>
-<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  CHECK(!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a650e493bb396d724446d9571e5842901">offerOperations</a>.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(uuid.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()))</div>
-<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  << <span class="stringliteral">"Duplicate offer operation '"</span> << operation->info().id()</div>
-<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  << <span class="stringliteral">"' (uuid: "</span> << uuid-><a class="code" href="structid_1_1UUID.html#af024badbc379374ac635031eed57dc5f">toString</a>() << <span class="stringliteral">") "</span></div>
-<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  << <span class="stringliteral">"of framework "</span> << frameworkId;</div>
-<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span> </div>
-<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a650e493bb396d724446d9571e5842901">offerOperations</a>.<a class="code" href="classhashmap.html#a040f93efd556981326f0809e0f24f9ef">put</a>(uuid.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), operation);</div>
-<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> </div>
-<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  <span class="keywordflow">if</span> (operation->info().has_id()) {</div>
-<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4d211f2b6fca34349126f16bc2cef3e0">offerOperationUUIDs</a>.<a class="code" href="classhashmap.html#a040f93efd556981326f0809e0f24f9ef">put</a>(operation->info().id(), uuid.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  }</div>
+<div class="line"><a name="l02482"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a18d64436387829ef2a067e299be0bd98"> 2482</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a18d64436387829ef2a067e299be0bd98">addOfferOperation</a>(OfferOperation* operation)</div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  {</div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  CHECK(operation->has_framework_id());</div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span> </div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  <span class="keyword">const</span> FrameworkID& frameworkId = operation->framework_id();</div>
+<div class="line"><a name="l02487"></a>
<TRUNCATED>
[2/2] mesos-site git commit: Updated the website built from mesos
SHA: 24550e7.
Posted by gi...@apache.org.
Updated the website built from mesos SHA: 24550e7.
Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/932b282a
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/932b282a
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/932b282a
Branch: refs/heads/asf-site
Commit: 932b282ae446943f5f4b6d2c2bde750d82b63fde
Parents: 0a57abb
Author: jenkins <bu...@apache.org>
Authored: Thu Nov 30 03:13:55 2017 +0000
Committer: jenkins <bu...@apache.org>
Committed: Thu Nov 30 03:13:55 2017 +0000
----------------------------------------------------------------------
.../c++/src_2master_2master_8hpp_source.html | 1582 +++++++++---------
1 file changed, 794 insertions(+), 788 deletions(-)
----------------------------------------------------------------------