http://git-wip-us.apache.org/repos/asf/mesos-site/blob/aac7827c/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 7b9c4d7..b46526e 100644 --- a/content/api/latest/c++/src_2master_2master_8hpp_source.html +++ b/content/api/latest/c++/src_2master_2master_8hpp_source.html @@ -170,15 +170,15 @@ <div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div> <div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html"> 117</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a></div> <div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div> -<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ad9989edad235edf8dfcb40cb68966469">Slave</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> _master,</div> -<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  SlaveInfo _info,</div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a299d31059b1a422f179f12e2b81c8463">Slave</a>(<a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> _master,</div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  SlaveInfo _info,</div> <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">const</span> <a class="code" href="structprocess_1_1UPID.html">process::UPID</a>& _pid,</div> <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">const</span> MachineID& _machineId,</div> <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">const</span> std::string& _version,</div> <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  std::vector<SlaveInfo::Capability> _capabilites,</div> <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Time.html">process::Time</a>& _registeredTime,</div> <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  std::vector<Resource> _checkpointedResources,</div> -<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<UUID></a>& resourceVersion,</div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<id::UUID></a>& resourceVersion,</div> <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  std::vector<ExecutorInfo> executorInfos = std::vector<ExecutorInfo>(),</div> <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  std::vector<Task> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#af31bd54cf2fd44fd1d95d1c898d6d2c8">tasks</a> = std::vector<Task>());</div> <div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div> @@ -206,7 +206,7 @@ <div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div> <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ae183d2acd05788b34438f10bf77969fb">removeOfferOperation</a>(OfferOperation* operation);</div> <div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div> -<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  OfferOperation* <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a366e3da718b4a2a2470df0cd0ace60cc">getOfferOperation</a>(<span class="keyword">const</span> <a class="code" href="structid_1_1UUID.html">UUID</a>& uuid) <span class="keyword">const</span>;</div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  OfferOperation* <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#abb0cd45a0c2ac01d3956dfab22087572">getOfferOperation</a>(<span class="keyword">const</span> <a class="code" href="structid_1_1UUID.html">id::UUID</a>& uuid) <span class="keyword">const</span>;</div> <div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div> <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ac0e0040b54f748b44f56dbaa71e13f06">addOffer</a>(Offer* offer);</div> <div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div> @@ -230,11 +230,11 @@ <div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div> <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ad599a4c248734bd05b36dd994599ab73">apply</a>(<span class="keyword">const</span> std::vector<ResourceConversion>& conversions);</div> <div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div> -<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a38e7f72f0a622954c3cef7bed8944864">update</a>(</div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a3669c768d98d6de91f82e56e561429f8">update</a>(</div> <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">const</span> SlaveInfo& <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#af4ee8827d405d9dcb03107dd04fa22ca">info</a>,</div> <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keyword">const</span> std::string& _version,</div> <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keyword">const</span> std::vector<SlaveInfo::Capability>& _capabilites,</div> -<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<UUID></a>& resourceVersion);</div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<id::UUID></a>& resourceVersion);</div> <div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div> <div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a59f6d83e771ca1dc9bf7f3db88d9339d"> 185</a></span>  <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html">Master</a>* <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a59f6d83e771ca1dc9bf7f3db88d9339d">master</a>;</div> <div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a977de92e6e1fb9fa145aec95806be71f"> 186</a></span>  <span class="keyword">const</span> SlaveID <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a977de92e6e1fb9fa145aec95806be71f">id</a>;</div> @@ -298,7 +298,7 @@ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div> <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// Pending operations or terminal operations that have</span></div> <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// unacknowledged status updates on this agent.</span></div> -<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a66dd540486cede5f4bf75e7f495362a6"> 247</a></span>  <a class="code" href="classhashmap.html">hashmap<UUID, OfferOperation*></a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a66dd540486cede5f4bf75e7f495362a6">offerOperations</a>;</div> +<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a3dc816db2a6b59169412f097ba69239c"> 247</a></span>  <a class="code" href="classhashmap.html">hashmap<id::UUID, OfferOperation*></a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a3dc816db2a6b59169412f097ba69239c">offerOperations</a>;</div> <div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div> <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// Active offers on this slave.</span></div> <div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a9dbf820e6c564c4333f97eaff7136cb1"> 250</a></span>  <a class="code" href="classhashset.html">hashset<Offer*></a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a9dbf820e6c564c4333f97eaff7136cb1">offers</a>;</div> @@ -331,11 +331,11 @@ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div> <div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#ace1f060347d268874173bac4c6e0a035"> 278</a></span>  SlaveObserver* <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ace1f060347d268874173bac4c6e0a035">observer</a>;</div> <div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div> -<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#ad763dcc32cd2add5e670ae65c921b622"> 280</a></span>  <a class="code" href="classhashmap.html">hashmap<Option<ResourceProviderID></a>, <a class="code" href="structid_1_1UUID.html">UUID</a>> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ad763dcc32cd2add5e670ae65c921b622">resourceVersions</a>;</div> +<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a6a709976e522d37096cf8c48d2e3fd72"> 280</a></span>  <a class="code" href="classhashmap.html">hashmap<Option<ResourceProviderID></a>, <a class="code" href="structid_1_1UUID.html">id::UUID</a>> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a6a709976e522d37096cf8c48d2e3fd72">resourceVersions</a>;</div> <div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Slave.html#a389358887487cad44e4f4a98ad12b1e9"> 281</a></span>  <a class="code" href="classhashmap.html">hashmap<ResourceProviderID, ResourceProviderInfo></a> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a389358887487cad44e4f4a98ad12b1e9">resourceProviders</a>;</div> <div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div> <div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">private</span>:</div> -<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#ad9989edad235edf8dfcb40cb68966469">Slave</a>(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>&); <span class="comment">// No copying.</span></div> +<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html#a299d31059b1a422f179f12e2b81c8463">Slave</a>(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>&); <span class="comment">// No copying.</span></div> <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>& operator=(<span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Slave.html">Slave</a>&); <span class="comment">// No assigning.</span></div> <div class="line"><a name="l00286"></a><span class="lineno"> 286</span> };</div> <div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div> @@ -351,12 +351,12 @@ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="comment">// subscribed to the '/api/vX' endpoint.</span></div> <div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html"> 298</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html">HttpConnection</a></div> <div class="line"><a name="l00299"></a><span class="lineno"> 299</span> {</div> -<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aa1292eab78d27edb6c8aa6c5a941f01b"> 300</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aa1292eab78d27edb6c8aa6c5a941f01b">HttpConnection</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">process::http::Pipe::Writer</a>& _writer,</div> +<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a4c4c7be068622f9d8c557a58eb065cc6"> 300</a></span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a4c4c7be068622f9d8c557a58eb065cc6">HttpConnection</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">process::http::Pipe::Writer</a>& _writer,</div> <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> _contentType,</div> -<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="structid_1_1UUID.html">UUID</a> _streamId)</div> +<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="structid_1_1UUID.html">id::UUID</a> _streamId)</div> <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  : <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aeb26fc327b1d73f95d9d874eb4226d5c">writer</a>(_writer),</div> <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a96b11a33b4022d7a60fa6d672de552ea">contentType</a>(_contentType),</div> -<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a0e3ce7d9ab8ec12bca5be75bc77e5a62">streamId</a>(_streamId) {}</div> +<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#ad6de2b778601691522fab0b3eed260e7">streamId</a>(_streamId) {}</div> <div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div> <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// We need to evolve the internal old style message/unversioned event into a</span></div> <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// versioned event e.g., `v1::scheduler::Event` or `v1::master::Event`.</span></div> @@ -381,7 +381,7 @@ <div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div> <div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aeb26fc327b1d73f95d9d874eb4226d5c"> 328</a></span>  <a class="code" href="classprocess_1_1http_1_1Pipe_1_1Writer.html">process::http::Pipe::Writer</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#aeb26fc327b1d73f95d9d874eb4226d5c">writer</a>;</div> <div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a96b11a33b4022d7a60fa6d672de552ea"> 329</a></span>  <a class="code" href="namespacemesos.html#a13035ce0cc66cca4a467787b4716039e">ContentType</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a96b11a33b4022d7a60fa6d672de552ea">contentType</a>;</div> -<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a0e3ce7d9ab8ec12bca5be75bc77e5a62"> 330</a></span>  <a class="code" href="structid_1_1UUID.html">UUID</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a0e3ce7d9ab8ec12bca5be75bc77e5a62">streamId</a>;</div> +<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#ad6de2b778601691522fab0b3eed260e7"> 330</a></span>  <a class="code" href="structid_1_1UUID.html">id::UUID</a> <a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#ad6de2b778601691522fab0b3eed260e7">streamId</a>;</div> <div class="line"><a name="l00331"></a><span class="lineno"> 331</span> };</div> <div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div> <div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div> @@ -613,7 +613,7 @@ <div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html#a4ffd3bd4715e4e12035c89ac47c2cd99">_exited</a>(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html">Framework</a>* framework);</div> <div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div> <div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="comment">// Invoked upon noticing a subscriber disconnection.</span></div> -<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html#ac285ccb7495989feff13451400127c7f">exited</a>(<span class="keyword">const</span> <a class="code" href="structid_1_1UUID.html">UUID</a>& <span class="keywordtype">id</span>);</div> +<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html#ac285ccb7495989feff13451400127c7f">exited</a>(<span class="keyword">const</span> <a class="code" href="structid_1_1UUID.html">id::UUID</a>& <span class="keywordtype">id</span>);</div> <div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div> <div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html#aa3a158b31fdb0b16a5290a9eb5da0a1b">agentReregisterTimeout</a>(<span class="keyword">const</span> SlaveID& slaveId);</div> <div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <a class="code" href="structNothing.html">Nothing</a> <a class="code" href="classmesos_1_1internal_1_1master_1_1Master.html#ada6e99db89ac87b9a716562c2b0bcc7b">_agentReregisterTimeout</a>(<span class="keyword">const</span> SlaveID& slaveId);</div> @@ -1911,7 +1911,7 @@ <div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#aeae44540ead81669d5381fc80f472780">heartbeater</a> =</div> <div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  <a class="code" href="classprocess_1_1Owned.html">process::Owned<Heartbeater<mesos::master::Event, v1::master::Event></a>>(</div> <div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  <span class="keyword">new</span> <a class="code" href="classmesos_1_1internal_1_1master_1_1Heartbeater.html">Heartbeater<mesos::master::Event, v1::master::Event></a>(</div> -<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  <span class="stringliteral">"subscriber "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a0bb1901deff186f05669c0a47b5dbc95">http</a>.<a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#a0e3ce7d9ab8ec12bca5be75bc77e5a62">streamId</a>),</div> +<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  <span class="stringliteral">"subscriber "</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(<a class="code" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a0bb1901deff186f05669c0a47b5dbc95">http</a>.<a class="code" href="structmesos_1_1internal_1_1master_1_1HttpConnection.html#ad6de2b778601691522fab0b3eed260e7">streamId</a>),</div> <div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>  event,</div> <div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Master_1_1Subscribers_1_1Subscriber.html#a0bb1901deff186f05669c0a47b5dbc95">http</a>,</div> <div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>  <a class="code" href="namespacemesos_1_1internal_1_1master.html#a241384d7256ec21bea9b9e9cba24f766">DEFAULT_HEARTBEAT_INTERVAL</a>,</div> @@ -1954,7 +1954,7 @@ <div class="line"><a name="l02015"></a><span class="lineno"> 2015</span> </div> <div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>  <span class="comment">// Active subscribers to the 'api/vX' endpoint keyed by the stream</span></div> <div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>  <span class="comment">// identifier.</span></div> -<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>  <a class="code" href="classhashmap.html">hashmap<UUID, process::Owned<Subscriber></a>> subscribed;</div> +<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>  <a class="code" href="classhashmap.html">hashmap<id::UUID, process::Owned<Subscriber></a>> subscribed;</div> <div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>  } subscribers;</div> <div class="line"><a name="l02020"></a><span class="lineno"> 2020</span> </div> <div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>  <a class="code" href="classhashmap.html">hashmap<OfferID, Offer*></a> offers;</div> @@ -2401,506 +2401,508 @@ <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="keyword">const</span> FrameworkID& frameworkId = operation->framework_id();</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>  <a class="code" href="classTry.html">Try<UUID></a> uuid = UUID::fromBytes(operation->operation_uuid());</div> -<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(uuid);</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>  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="l02469"></a><span class="lineno"> 2469</span>  << <span class="stringliteral">"Duplicate offer operation '"</span> << operation->info().id()</div> -<div class="line"><a name="l02470"></a><span class="lineno"> 2470</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="l02471"></a><span class="lineno"> 2471</span>  << <span class="stringliteral">"of framework "</span> << frameworkId;</div> -<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span> </div> -<div class="line"><a name="l02473"></a><span class="lineno"> 2473</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="l02474"></a><span class="lineno"> 2474</span> </div> -<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  <span class="keywordflow">if</span> (operation->info().has_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#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="l02477"></a><span class="lineno"> 2477</span>  }</div> -<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span> </div> -<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#a19a8e8be02b815dab4cecd8382e3dd26">protobuf::isSpeculativeOperation</a>(operation->info()) &&</div> -<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  !<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">protobuf::isTerminalState</a>(operation->latest_status().state())) {</div> -<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  <a class="code" href="classTry.html">Try<Resources></a> consumed =</div> -<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  <a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aaad34fc9798891303cecdba77c1e473c">protobuf::getConsumedResources</a>(operation->info());</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>(consumed);</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(operation->has_slave_id())</div> -<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  << <span class="stringliteral">"External resource provider is not supported yet"</span>;</div> -<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span> </div> -<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  <span class="keyword">const</span> SlaveID& slaveId = operation->slave_id();</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#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> += consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div> -<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId] += consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div> -<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span> </div> -<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  <span class="comment">// It's possible that we're not tracking the role from the</span></div> -<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  <span class="comment">// resources in the offer operation for this framework if the</span></div> -<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  <span class="comment">// role is absent from the framework's set of roles. In this</span></div> -<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  <span class="comment">// case, we track the role's allocation for this framework.</span></div> -<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  <a class="code" href="foreach_8hpp.html#acac417231a256d7c6164a86db970da86">foreachkey</a> (<span class="keyword">const</span> std::string& role, consumed->allocations()) {</div> -<div class="line"><a name="l02498"></a><span class="lineno"> 2498</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="l02499"></a><span class="lineno"> 2499</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afa185682905163563412aa1915e612c8">trackUnderRole</a>(role);</div> -<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  }</div> -<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  }</div> -<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  }</div> -<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  }</div> -<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span> </div> -<div class="line"><a name="l02505"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2cbf9814d6392f471a6970ed488be080"> 2505</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2cbf9814d6392f471a6970ed488be080">recoverResources</a>(OfferOperation* operation)</div> -<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  {</div> -<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>  CHECK(operation->has_slave_id())</div> -<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  << <span class="stringliteral">"External resource provider is not supported yet"</span>;</div> -<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span> </div> -<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>  <span class="keyword">const</span> SlaveID& slaveId = operation->slave_id();</div> -<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span> </div> -<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#a19a8e8be02b815dab4cecd8382e3dd26">protobuf::isSpeculativeOperation</a>(operation->info())) {</div> -<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  <span class="keywordflow">return</span>;</div> -<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  }</div> -<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span> </div> -<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  <a class="code" href="classTry.html">Try<Resources></a> consumed = <a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aaad34fc9798891303cecdba77c1e473c">protobuf::getConsumedResources</a>(operation->info());</div> -<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(consumed);</div> -<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span> </div> -<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a30fc4fe000da99818bfcee5bb780e5d4">contains</a>(consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()))</div> -<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  << <span class="stringliteral">"Tried to recover resources "</span> << consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()</div> -<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  << <span class="stringliteral">" which do not seem used"</span>;</div> -<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span> </div> -<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId].<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">contains</a>(consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()))</div> -<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  << <span class="stringliteral">"Tried to recover resources "</span> << consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>() << <span class="stringliteral">" of agent "</span></div> -<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  << slaveId << <span class="stringliteral">" which do not seem used"</span>;</div> -<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span> </div> -<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> -= consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div> -<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId] -= consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div> -<div class="line"><a name="l02529"></a><span class="lineno"> 2529</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="l02530"></a><span class="lineno"> 2530</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>.erase(slaveId);</div> -<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>  }</div> -<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span> </div> -<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>  <span class="comment">// If we are no longer subscribed to the role to which these</span></div> -<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>  <span class="comment">// resources are being returned to, and we have no more resources</span></div> -<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>  <span class="comment">// allocated to us for that role, stop tracking the framework</span></div> -<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>  <span class="comment">// under the role.</span></div> -<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>  <a class="code" href="foreach_8hpp.html#acac417231a256d7c6164a86db970da86">foreachkey</a> (<span class="keyword">const</span> std::string& role, consumed->allocations()) {</div> -<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>  <span class="keyword">auto</span> allocatedToRole = [&role](<span class="keyword">const</span> Resource& resource) {</div> -<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>  <span class="keywordflow">return</span> resource.allocation_info().role() == role;</div> -<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  };</div> -<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span> </div> -<div class="line"><a name="l02542"></a><span class="lineno"> 2542</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="l02543"></a><span class="lineno"> 2543</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="l02544"></a><span class="lineno"> 2544</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="l02545"></a><span class="lineno"> 2545</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3edaf411ec6e409a3f8b2a77988ef65a">untrackUnderRole</a>(role);</div> -<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  }</div> -<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  }</div> -<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  }</div> -<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span> </div> -<div class="line"><a name="l02550"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#ad28965b324be81c14e5d41524e917beb"> 2550</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ad28965b324be81c14e5d41524e917beb">removeOfferOperation</a>(OfferOperation* operation)</div> -<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  {</div> -<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>  <a class="code" href="classTry.html">Try<UUID></a> uuid = UUID::fromBytes(operation->operation_uuid());</div> -<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(uuid);</div> -<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span> </div> -<div class="line"><a name="l02555"></a><span class="lineno"> 2555</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="l02556"></a><span class="lineno"> 2556</span>  << <span class="stringliteral">"Unknown offer operation '"</span> << operation->info().id()</div> -<div class="line"><a name="l02557"></a><span class="lineno"> 2557</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="l02558"></a><span class="lineno"> 2558</span>  << <span class="stringliteral">"of framework "</span> << operation->framework_id();</div> -<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span> </div> -<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#a19a8e8be02b815dab4cecd8382e3dd26">protobuf::isSpeculativeOperation</a>(operation->info()) &&</div> -<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  !<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">protobuf::isTerminalState</a>(operation->latest_status().state())) {</div> -<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a">recoverResources</a>(operation);</div> -<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  }</div> -<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span> </div> -<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a650e493bb396d724446d9571e5842901">offerOperations</a>.erase(uuid.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div> -<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  }</div> -<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span> </div> -<div class="line"><a name="l02568"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417"> 2568</a></span>  <span class="keyword">const</span> FrameworkID <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> info.id(); }</div> +<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  <a class="code" href="classTry.html">Try<id::UUID></a> uuid =</div> +<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  <a class="code" href="structid_1_1UUID.html#afd66db1d29a4ee4be9c82581437dda74">id::UUID::fromBytes</a>(operation->operation_uuid().value());</div> +<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(uuid);</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>  CHECK(!<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a5cf8553c8fab2fc2032c0c7515c3e334">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="l02470"></a><span class="lineno"> 2470</span>  << <span class="stringliteral">"Duplicate offer operation '"</span> << operation->info().id()</div> +<div class="line"><a name="l02471"></a><span class="lineno"> 2471</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="l02472"></a><span class="lineno"> 2472</span>  << <span class="stringliteral">"of framework "</span> << frameworkId;</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>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a5cf8553c8fab2fc2032c0c7515c3e334">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="l02475"></a><span class="lineno"> 2475</span> </div> +<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  <span class="keywordflow">if</span> (operation->info().has_id()) {</div> +<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a32e8568f413563a00aaa7c965c82918f">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="l02478"></a><span class="lineno"> 2478</span>  }</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="keywordflow">if</span> (!<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#a19a8e8be02b815dab4cecd8382e3dd26">protobuf::isSpeculativeOperation</a>(operation->info()) &&</div> +<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  !<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">protobuf::isTerminalState</a>(operation->latest_status().state())) {</div> +<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  <a class="code" href="classTry.html">Try<Resources></a> consumed =</div> +<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  <a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aaad34fc9798891303cecdba77c1e473c">protobuf::getConsumedResources</a>(operation->info());</div> +<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(consumed);</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>  CHECK(operation->has_slave_id())</div> +<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  << <span class="stringliteral">"External resource provider is not supported yet"</span>;</div> +<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span> </div> +<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  <span class="keyword">const</span> SlaveID& slaveId = operation->slave_id();</div> +<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span> </div> +<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> += consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div> +<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId] += consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div> +<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span> </div> +<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  <span class="comment">// It's possible that we're not tracking the role from the</span></div> +<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  <span class="comment">// resources in the offer operation for this framework if the</span></div> +<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  <span class="comment">// role is absent from the framework's set of roles. In this</span></div> +<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  <span class="comment">// case, we track the role's allocation for this framework.</span></div> +<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>  <a class="code" href="foreach_8hpp.html#acac417231a256d7c6164a86db970da86">foreachkey</a> (<span class="keyword">const</span> std::string& role, consumed->allocations()) {</div> +<div class="line"><a name="l02499"></a><span class="lineno"> 2499</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="l02500"></a><span class="lineno"> 2500</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#afa185682905163563412aa1915e612c8">trackUnderRole</a>(role);</div> +<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  }</div> +<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  }</div> +<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  }</div> +<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  }</div> +<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span> </div> +<div class="line"><a name="l02506"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2cbf9814d6392f471a6970ed488be080"> 2506</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2cbf9814d6392f471a6970ed488be080">recoverResources</a>(OfferOperation* operation)</div> +<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>  {</div> +<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  CHECK(operation->has_slave_id())</div> +<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>  << <span class="stringliteral">"External resource provider is not supported yet"</span>;</div> +<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span> </div> +<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  <span class="keyword">const</span> SlaveID& slaveId = operation->slave_id();</div> +<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span> </div> +<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#a19a8e8be02b815dab4cecd8382e3dd26">protobuf::isSpeculativeOperation</a>(operation->info())) {</div> +<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  <span class="keywordflow">return</span>;</div> +<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  }</div> +<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span> </div> +<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  <a class="code" href="classTry.html">Try<Resources></a> consumed = <a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aaad34fc9798891303cecdba77c1e473c">protobuf::getConsumedResources</a>(operation->info());</div> +<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(consumed);</div> +<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span> </div> +<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a>.<a class="code" href="classmesos_1_1Resources.html#a30fc4fe000da99818bfcee5bb780e5d4">contains</a>(consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()))</div> +<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  << <span class="stringliteral">"Tried to recover resources "</span> << consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()</div> +<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  << <span class="stringliteral">" which do not seem used"</span>;</div> +<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span> </div> +<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId].<a class="code" href="namespacestrings.html#a269921757daf11096d3f5e02686f8444">contains</a>(consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()))</div> +<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  << <span class="stringliteral">"Tried to recover resources "</span> << consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>() << <span class="stringliteral">" of agent "</span></div> +<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  << slaveId << <span class="stringliteral">" which do not seem used"</span>;</div> +<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span> </div> +<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a35847f2388d25e0cb9b3a9d0a722fbdd">totalUsedResources</a> -= consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div> +<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>[slaveId] -= consumed.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>();</div> +<div class="line"><a name="l02530"></a><span class="lineno"> 2530</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="l02531"></a><span class="lineno"> 2531</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a9085d3f2c156a7772cbd243776a62491">usedResources</a>.erase(slaveId);</div> +<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  }</div> +<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span> </div> +<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>  <span class="comment">// If we are no longer subscribed to the role to which these</span></div> +<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>  <span class="comment">// resources are being returned to, and we have no more resources</span></div> +<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>  <span class="comment">// allocated to us for that role, stop tracking the framework</span></div> +<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>  <span class="comment">// under the role.</span></div> +<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>  <a class="code" href="foreach_8hpp.html#acac417231a256d7c6164a86db970da86">foreachkey</a> (<span class="keyword">const</span> std::string& role, consumed->allocations()) {</div> +<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>  <span class="keyword">auto</span> allocatedToRole = [&role](<span class="keyword">const</span> Resource& resource) {</div> +<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  <span class="keywordflow">return</span> resource.allocation_info().role() == role;</div> +<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  };</div> +<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span> </div> +<div class="line"><a name="l02543"></a><span class="lineno"> 2543</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="l02544"></a><span class="lineno"> 2544</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="l02545"></a><span class="lineno"> 2545</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="l02546"></a><span class="lineno"> 2546</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a3edaf411ec6e409a3f8b2a77988ef65a">untrackUnderRole</a>(role);</div> +<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  }</div> +<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  }</div> +<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  }</div> +<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span> </div> +<div class="line"><a name="l02551"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#ad28965b324be81c14e5d41524e917beb"> 2551</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ad28965b324be81c14e5d41524e917beb">removeOfferOperation</a>(OfferOperation* operation)</div> +<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>  {</div> +<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  <a class="code" href="classTry.html">Try<id::UUID></a> uuid =</div> +<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  <a class="code" href="structid_1_1UUID.html#afd66db1d29a4ee4be9c82581437dda74">id::UUID::fromBytes</a>(operation->operation_uuid().value());</div> +<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(uuid);</div> +<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span> </div> +<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  CHECK(<a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a5cf8553c8fab2fc2032c0c7515c3e334">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="l02558"></a><span class="lineno"> 2558</span>  << <span class="stringliteral">"Unknown offer operation '"</span> << operation->info().id()</div> +<div class="line"><a name="l02559"></a><span class="lineno"> 2559</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="l02560"></a><span class="lineno"> 2560</span>  << <span class="stringliteral">"of framework "</span> << operation->framework_id();</div> +<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span> </div> +<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  <span class="keywordflow">if</span> (!<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#a19a8e8be02b815dab4cecd8382e3dd26">protobuf::isSpeculativeOperation</a>(operation->info()) &&</div> +<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  !<a class="code" href="namespacemesos_1_1internal_1_1protobuf.html#aa31907fb62769822a77c06ffbf10451f">protobuf::isTerminalState</a>(operation->latest_status().state())) {</div> +<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#af14287bdb6466ca003b6e5e6a37ae02a">recoverResources</a>(operation);</div> +<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  }</div> +<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span> </div> +<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a5cf8553c8fab2fc2032c0c7515c3e334">offerOperations</a>.erase(uuid.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div> +<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  }</div> <div class="line"><a name="l02569"></a><span class="lineno"> 2569</span> </div> -<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  <span class="comment">// Update fields in 'info' using those in 'newInfo'. Currently this</span></div> -<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>  <span class="comment">// only updates `role`/`roles`, 'name', 'failover_timeout', 'hostname',</span></div> -<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  <span class="comment">// 'webui_url', 'capabilities', and 'labels'.</span></div> -<div class="line"><a name="l02573"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a8f5f1a0e7c16c0e7750373c1146dc3a1"> 2573</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a8f5f1a0e7c16c0e7750373c1146dc3a1">update</a>(<span class="keyword">const</span> FrameworkInfo& newInfo)</div> -<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  {</div> -<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>  <span class="comment">// We only merge 'info' from the same framework 'id'.</span></div> -<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  CHECK_EQ(info.id(), newInfo.id());</div> -<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span> </div> -<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  <span class="comment">// Save the old list of roles for later.</span></div> -<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  std::set<std::string> oldRoles = <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a>;</div> -<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span> </div> -<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  <span class="comment">// TODO(jmlvanre): Merge other fields as per design doc in</span></div> -<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  <span class="comment">// MESOS-703.</span></div> -<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span> </div> -<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  info.clear_role();</div> -<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  info.clear_roles();</div> -<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span> </div> -<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  <span class="keywordflow">if</span> (newInfo.has_role()) {</div> -<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  info.set_role(newInfo.role());</div> -<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  }</div> -<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span> </div> -<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  <span class="keywordflow">if</span> (newInfo.roles_size() > 0) {</div> -<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>  info.mutable_roles()->CopyFrom(newInfo.roles());</div> -<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  }</div> -<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span> </div> -<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a> = <a class="code" href="namespacemesos_1_1internal_1_1protobuf_1_1framework.html#a34d007aecebcd1c9dbd3ee0ad1d39155">protobuf::framework::getRoles</a>(newInfo);</div> +<div class="line"><a name="l02570"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417"> 2570</a></span>  <span class="keyword">const</span> FrameworkID <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> info.id(); }</div> +<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span> </div> +<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  <span class="comment">// Update fields in 'info' using those in 'newInfo'. Currently this</span></div> +<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  <span class="comment">// only updates `role`/`roles`, 'name', 'failover_timeout', 'hostname',</span></div> +<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="comment">// 'webui_url', 'capabilities', and 'labels'.</span></div> +<div class="line"><a name="l02575"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1master_1_1Framework.html#a8f5f1a0e7c16c0e7750373c1146dc3a1"> 2575</a></span>  <span class="keywordtype">void</span> <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a8f5f1a0e7c16c0e7750373c1146dc3a1">update</a>(<span class="keyword">const</span> FrameworkInfo& newInfo)</div> +<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  {</div> +<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  <span class="comment">// We only merge 'info' from the same framework 'id'.</span></div> +<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  CHECK_EQ(info.id(), newInfo.id());</div> +<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span> </div> +<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  <span class="comment">// Save the old list of roles for later.</span></div> +<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  std::set<std::string> oldRoles = <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a>;</div> +<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span> </div> +<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>  <span class="comment">// TODO(jmlvanre): Merge other fields as per design doc in</span></div> +<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  <span class="comment">// MESOS-703.</span></div> +<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span> </div> +<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  info.clear_role();</div> +<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  info.clear_roles();</div> +<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span> </div> +<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  <span class="keywordflow">if</span> (newInfo.has_role()) {</div> +<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  info.set_role(newInfo.role());</div> +<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  }</div> +<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span> </div> +<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  <span class="keywordflow">if</span> (newInfo.roles_size() > 0) {</div> +<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  info.mutable_roles()->CopyFrom(newInfo.roles());</div> +<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  }</div> <div class="line"><a name="l02596"></a><span class="lineno"> 2596</span> </div> -<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>  <span class="keywordflow">if</span> (newInfo.user() != info.user()) {</div> -<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  LOG(WARNING) << <span class="stringliteral">"Cannot update FrameworkInfo.user to '"</span> << newInfo.user()</div> -<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>  << <span class="stringliteral">"' for framework "</span> << <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>() << <span class="stringliteral">". Check MESOS-703"</span>;</div> -<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>  }</div> -<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span> </div> -<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  info.set_name(newInfo.name());</div> +<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a> = <a class="code" href="namespacemesos_1_1internal_1_1protobuf_1_1framework.html#a34d007aecebcd1c9dbd3ee0ad1d39155">protobuf::framework::getRoles</a>(newInfo);</div> +<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span> </div> +<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>  <span class="keywordflow">if</span> (newInfo.user() != info.user()) {</div> +<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>  LOG(WARNING) << <span class="stringliteral">"Cannot update FrameworkInfo.user to '"</span> << newInfo.user()</div> +<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  << <span class="stringliteral">"' for framework "</span> << <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>() << <span class="stringliteral">". Check MESOS-703"</span>;</div> +<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  }</div> <div class="line"><a name="l02603"></a><span class="lineno"> 2603</span> </div> -<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  <span class="keywordflow">if</span> (newInfo.has_failover_timeout()) {</div> -<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>  info.set_failover_timeout(newInfo.failover_timeout());</div> -<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  } <span class="keywordflow">else</span> {</div> -<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  info.clear_failover_timeout();</div> -<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  }</div> -<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span> </div> -<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  <span class="keywordflow">if</span> (newInfo.checkpoint() != info.checkpoint()) {</div> -<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  LOG(WARNING) << <span class="stringliteral">"Cannot update FrameworkInfo.checkpoint to '"</span></div> -<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  << <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(newInfo.checkpoint()) << <span class="stringliteral">"' for framework "</span></div> -<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  << <span class="keywordtype">id</span>() << <span class="stringliteral">". Check MESOS-703"</span>;</div> -<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  }</div> -<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span> </div> -<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  <span class="keywordflow">if</span> (newInfo.has_hostname()) {</div> -<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>  info.set_hostname(newInfo.hostname());</div> -<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  } <span class="keywordflow">else</span> {</div> -<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>  info.clear_hostname();</div> -<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  }</div> -<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span> </div> -<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  <span class="keywordflow">if</span> (newInfo.principal() != info.principal()) {</div> -<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  LOG(WARNING) << <span class="stringliteral">"Cannot update FrameworkInfo.principal to '"</span></div> -<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  << newInfo.principal() << <span class="stringliteral">"' for framework "</span> << <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>()</div> -<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  << <span class="stringliteral">". Check MESOS-703"</span>;</div> -<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  }</div> -<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span> </div> -<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  <span class="keywordflow">if</span> (newInfo.has_webui_url()) {</div> -<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  info.set_webui_url(newInfo.webui_url());</div> -<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  } <span class="keywordflow">else</span> {</div> -<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  info.clear_webui_url();</div> -<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  }</div> -<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span> </div> -<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  <span class="keywordflow">if</span> (newInfo.capabilities_size() > 0) {</div> -<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  info.mutable_capabilities()->CopyFrom(newInfo.capabilities());</div> -<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  } <span class="keywordflow">else</span> {</div> -<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  info.clear_capabilities();</div> -<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  }</div> -<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4bd6909f50c4594e8db3f4f791814dc7">capabilities</a> = <a class="code" href="structmesos_1_1internal_1_1protobuf_1_1framework_1_1Capabilities.html">protobuf::framework::Capabilities</a>(info.capabilities());</div> -<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span> </div> -<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  <span class="keywordflow">if</span> (newInfo.has_labels()) {</div> -<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  info.mutable_labels()->CopyFrom(newInfo.labels());</div> -<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  } <span class="keywordflow">else</span> {</div> -<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  info.clear_labels();</div> -<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  }</div> -<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span> </div> -<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  <span class="keyword">const</span> std::set<std::string>& newRoles = <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a2d8cbc0dbd23317d8194398a3810a5b5">roles</a>;</div> +<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  info.set_name(newInfo.name());</div> +<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span> </div> +<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  <span class="keywordflow">if</span> (newInfo.has_failover_timeout()) {</div> +<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  info.set_failover_timeout(newInfo.failover_timeout());</div> +<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  info.clear_failover_timeout();</div> +<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  }</div> +<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span> </div> +<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  <span class="keywordflow">if</span> (newInfo.checkpoint() != info.checkpoint()) {</div> +<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  LOG(WARNING) << <span class="stringliteral">"Cannot update FrameworkInfo.checkpoint to '"</span></div> +<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  << <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(newInfo.checkpoint()) << <span class="stringliteral">"' for framework "</span></div> +<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  << <span class="keywordtype">id</span>() << <span class="stringliteral">". Check MESOS-703"</span>;</div> +<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  }</div> +<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span> </div> +<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  <span class="keywordflow">if</span> (newInfo.has_hostname()) {</div> +<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>  info.set_hostname(newInfo.hostname());</div> +<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  info.clear_hostname();</div> +<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  }</div> +<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span> </div> +<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  <span class="keywordflow">if</span> (newInfo.principal() != info.principal()) {</div> +<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  LOG(WARNING) << <span class="stringliteral">"Cannot update FrameworkInfo.principal to '"</span></div> +<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  << newInfo.principal() << <span class="stringliteral">"' for framework "</span> << <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#ac971d54c3567de6411c6aa7e998c5417">id</a>()</div> +<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  << <span class="stringliteral">". Check MESOS-703"</span>;</div> +<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  }</div> +<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span> </div> +<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  <span class="keywordflow">if</span> (newInfo.has_webui_url()) {</div> +<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  info.set_webui_url(newInfo.webui_url());</div> +<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  info.clear_webui_url();</div> +<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  }</div> +<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span> </div> +<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  <span class="keywordflow">if</span> (newInfo.capabilities_size() > 0) {</div> +<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  info.mutable_capabilities()->CopyFrom(newInfo.capabilities());</div> +<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  info.clear_capabilities();</div> +<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  }</div> +<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  <a class="code" href="structmesos_1_1internal_1_1master_1_1Framework.html#a4bd6909f50c4594e8db3f4f791814dc7">capabilities</a> = <a class="code" href="structmesos_1_1internal_1_1protobuf_1_1framework_1_1Capabilities.html">protobuf::framework::Capabilities</a>(info.capabilities());</div> +<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span> </div> +<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  <span class="keywordflow">if</span> (newInfo.has_labels()) {</div> +<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  info.mutable_labels()->CopyFrom(newInfo.labels());</div> +<div class="line"><a name="l02
<TRUNCATED>
