You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/01/17 03:21:46 UTC

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

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/94774512/content/api/latest/c++/slave_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/slave_8hpp_source.html b/content/api/latest/c++/slave_8hpp_source.html
index 4264fae..d2ee9ca 100644
--- a/content/api/latest/c++/slave_8hpp_source.html
+++ b/content/api/latest/c++/slave_8hpp_source.html
@@ -887,286 +887,309 @@
 <div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;  <span class="comment">// Returns true if there are any queued/launched/terminated tasks.</span></div>
 <div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a79093461e7bc35f4b4b9c7a796b88e2e">incompleteTasks</a>();</div>
 <div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;</div>
-<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;  <span class="comment">// Sends a message to the connected executor.</span></div>
-<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Message&gt;</div>
-<div class="line"><a name="l00838"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a6088e2d4d0160d0cdaf8674c46d91c43">  838</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a6088e2d4d0160d0cdaf8674c46d91c43">send</a>(<span class="keyword">const</span> Message&amp; message)</div>
-<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;  {</div>
-<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;    <span class="keywordflow">if</span> (state == <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a47f27688eed5f4b7b8fae1fe60e35d0d">REGISTERING</a> || state == <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ada3a926bc25ef3c7e060789f52aacd75">TERMINATED</a>) {</div>
-<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Attempting to send message to disconnected&quot;</span></div>
-<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; executor &quot;</span> &lt;&lt; *<span class="keyword">this</span> &lt;&lt; <span class="stringliteral">&quot; in state &quot;</span> &lt;&lt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a27e0e6e088c0fd88a0c7f679c964c409">state</a>;</div>
-<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;    }</div>
-<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;</div>
-<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;    <span class="keywordflow">if</span> (http.isSome()) {</div>
-<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;      <span class="keywordflow">if</span> (!http-&gt;<a class="code" href="structmesos_1_1internal_1_1slave_1_1HttpConnection.html#ad0773acb50a9d74589dc050ee9bc3f9b">send</a>(message)) {</div>
-<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;        LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Unable to send event to executor &quot;</span> &lt;&lt; *<span class="keyword">this</span></div>
-<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;                     &lt;&lt; <span class="stringliteral">&quot;: connection closed&quot;</span>;</div>
-<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;      }</div>
-<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div>
-<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;      slave-&gt;<a class="code" href="classProtobufProcess.html#a6c404fdc490a7199a0d2ad881d588e5c">send</a>(pid.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>(), message);</div>
-<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;    } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Unable to send event to executor &quot;</span> &lt;&lt; *<span class="keyword">this</span></div>
-<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot;: unknown connection type&quot;</span>;</div>
-<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;    }</div>
-<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;  }</div>
-<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;</div>
-<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;  <span class="comment">// Returns true if this executor is generated by Mesos for a command</span></div>
-<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;  <span class="comment">// task (either command executor for MesosContainerizer or docker</span></div>
-<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;  <span class="comment">// executor for DockerContainerizer).</span></div>
-<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aa015f42f8b5fe1a51616a87def9924ab">isGeneratedForCommandTask</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;</div>
-<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;  <span class="comment">// Closes the HTTP connection.</span></div>
-<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a546589bcf81d103b1e50be965494d430">closeHttpConnection</a>();</div>
-<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;</div>
-<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;  <span class="comment">// Returns the task group associated with the task.</span></div>
-<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;  <a class="code" href="classOption.html">Option&lt;TaskGroupInfo&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad6bd3d3bec32d1d06d96f90d1325bf8d">getQueuedTaskGroup</a>(<span class="keyword">const</span> TaskID&amp; taskId);</div>
-<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;</div>
-<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aab395584ca0bd5c7867e093597e6ab09">allocatedResources</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;</div>
-<div class="line"><a name="l00871"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0">  871</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0">State</a></div>
-<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;  {</div>
-<div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a47f27688eed5f4b7b8fae1fe60e35d0d">  873</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a47f27688eed5f4b7b8fae1fe60e35d0d">REGISTERING</a>,  <span class="comment">// Executor is launched but not (re-)registered yet.</span></div>
-<div class="line"><a name="l00874"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a1485da27f38622c47c16abf8c1491683">  874</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a1485da27f38622c47c16abf8c1491683">RUNNING</a>,      <span class="comment">// Executor has (re-)registered.</span></div>
-<div class="line"><a name="l00875"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ab536b2fae4842fc2c6e24905f142c920">  875</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ab536b2fae4842fc2c6e24905f142c920">TERMINATING</a>,  <span class="comment">// Executor is being shutdown/killed.</span></div>
-<div class="line"><a name="l00876"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ada3a926bc25ef3c7e060789f52aacd75">  876</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ada3a926bc25ef3c7e060789f52aacd75">TERMINATED</a>,   <span class="comment">// Executor has terminated but there might be pending updates.</span></div>
-<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;  } <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a27e0e6e088c0fd88a0c7f679c964c409">state</a>;</div>
-<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;</div>
-<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;  <span class="comment">// We store the pointer to &#39;Slave&#39; to get access to its methods</span></div>
-<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;  <span class="comment">// variables. One could imagine &#39;Executor&#39; as being an inner class</span></div>
-<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;  <span class="comment">// of the &#39;Slave&#39; class.</span></div>
-<div class="line"><a name="l00882"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#addd8f0d655f9d03ad6bc594c4d476818">  882</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#addd8f0d655f9d03ad6bc594c4d476818">slave</a>;</div>
-<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;</div>
-<div class="line"><a name="l00884"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a9037a16ee390fa0893f1229aca4e33ea">  884</a></span>&#160;  <span class="keyword">const</span> ExecutorID <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a9037a16ee390fa0893f1229aca4e33ea">id</a>;</div>
-<div class="line"><a name="l00885"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a6d93343a7cac0e8f5398e4d55a19c856">  885</a></span>&#160;  <span class="keyword">const</span> ExecutorInfo <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a6d93343a7cac0e8f5398e4d55a19c856">info</a>;</div>
-<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;</div>
-<div class="line"><a name="l00887"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a34bfb0214dd593dcbf1ad4fa398a417c">  887</a></span>&#160;  <span class="keyword">const</span> FrameworkID <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a34bfb0214dd593dcbf1ad4fa398a417c">frameworkId</a>;</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;  <span class="comment">// TODO(qianzhang): This is a workaround to make the default executor</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;  <span class="comment">// task&#39;s volume directory visible in MESOS UI. In MESOS-7225, we made</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;  <span class="comment">// sure a task can access any volumes specified in its disk resources</span></div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;  <span class="comment">// from its sandbox by introducing a workaround to the default executor,</span></div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;  <span class="comment">// i.e., adding a `SANDBOX_PATH` volume with type `PARENT` to the</span></div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;  <span class="comment">// corresponding nested container. This volume gets translated into a</span></div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;  <span class="comment">// bind mount in the nested container&#39;s mount namespace, which is is not</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;  <span class="comment">// visible in Mesos UI because it operates in the host namespace. See</span></div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;  <span class="comment">// Mesos-8279 for details.</span></div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;  <span class="comment">// To make the task&#39;s volume directory visible in Mesos UI, here we</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;  <span class="comment">// attach the executor&#39;s volume directory to it, so when users browse</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;  <span class="comment">// task&#39;s volume directory in Mesos UI, what they actually browse is the</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;  <span class="comment">// executor&#39;s volume directory. Note when calling `Files::attach()`, the</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;  <span class="comment">// third argument `authorized` is not specified because it is already</span></div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;  <span class="comment">// specified when we do the attach for the executor&#39;s sandbox and it also</span></div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;  <span class="comment">// applies to the executor&#39;s tasks.</span></div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a34c9f925687f2fc9da51133d82008f6f">attachTaskVolumeDirectory</a>(<span class="keyword">const</span> Task&amp; task);</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;  <span class="comment">// TODO(qianzhang): Remove the task&#39;s volume directory from the /files</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;  <span class="comment">// endpoint. This is a workaround for MESOS-8279.</span></div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ab10fc02ca52ae27003fc90a88add19a0">detachTaskVolumeDirectory</a>(<span class="keyword">const</span> Task&amp; task);</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;  <span class="comment">// Sends a message to the connected executor.</span></div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Message&gt;</div>
+<div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a6088e2d4d0160d0cdaf8674c46d91c43">  861</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a6088e2d4d0160d0cdaf8674c46d91c43">send</a>(<span class="keyword">const</span> Message&amp; message)</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;  {</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;    <span class="keywordflow">if</span> (state == <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a47f27688eed5f4b7b8fae1fe60e35d0d">REGISTERING</a> || state == <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ada3a926bc25ef3c7e060789f52aacd75">TERMINATED</a>) {</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Attempting to send message to disconnected&quot;</span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot; executor &quot;</span> &lt;&lt; *<span class="keyword">this</span> &lt;&lt; <span class="stringliteral">&quot; in state &quot;</span> &lt;&lt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a27e0e6e088c0fd88a0c7f679c964c409">state</a>;</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;    }</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;    <span class="keywordflow">if</span> (http.isSome()) {</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;      <span class="keywordflow">if</span> (!http-&gt;<a class="code" href="structmesos_1_1internal_1_1slave_1_1HttpConnection.html#ad0773acb50a9d74589dc050ee9bc3f9b">send</a>(message)) {</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;        LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Unable to send event to executor &quot;</span> &lt;&lt; *<span class="keyword">this</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;                     &lt;&lt; <span class="stringliteral">&quot;: connection closed&quot;</span>;</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;      }</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pid.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>()) {</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;      slave-&gt;<a class="code" href="classProtobufProcess.html#a6c404fdc490a7199a0d2ad881d588e5c">send</a>(pid.<a class="code" href="classOption.html#a21358442c0fac1cc978a67a9a9089a79">get</a>(), message);</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;    } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;      LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Unable to send event to executor &quot;</span> &lt;&lt; *<span class="keyword">this</span></div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;                   &lt;&lt; <span class="stringliteral">&quot;: unknown connection type&quot;</span>;</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;    }</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;  }</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;  <span class="comment">// Returns true if this executor is generated by Mesos for a command</span></div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;  <span class="comment">// task (either command executor for MesosContainerizer or docker</span></div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;  <span class="comment">// executor for DockerContainerizer).</span></div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aa015f42f8b5fe1a51616a87def9924ab">isGeneratedForCommandTask</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;  <span class="comment">// Closes the HTTP connection.</span></div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a546589bcf81d103b1e50be965494d430">closeHttpConnection</a>();</div>
 <div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;</div>
-<div class="line"><a name="l00889"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aaad02226a9d30491088dd9ef315effbc">  889</a></span>&#160;  <span class="keyword">const</span> ContainerID <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aaad02226a9d30491088dd9ef315effbc">containerId</a>;</div>
-<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;</div>
-<div class="line"><a name="l00891"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aabe86347ab1d23297172813dc5d1c8f5">  891</a></span>&#160;  <span class="keyword">const</span> std::string <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aabe86347ab1d23297172813dc5d1c8f5">directory</a>;</div>
-<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;</div>
-<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;  <span class="comment">// The sandbox will be owned by this user and the executor will</span></div>
-<div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;  <span class="comment">// run as this user. This can be set to None when --switch_user</span></div>
-<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;  <span class="comment">// is false or when compiled for Windows.</span></div>
-<div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aed6f0c1093840e82b6e920164be9df74">  896</a></span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aed6f0c1093840e82b6e920164be9df74">user</a>;</div>
-<div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;</div>
-<div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ab05d451e6d84e8da41ac5b156cb7a79f">  898</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ab05d451e6d84e8da41ac5b156cb7a79f">checkpoint</a>;</div>
-<div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;</div>
-<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;  <span class="comment">// An Executor can either be connected via HTTP or by libprocess</span></div>
-<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;  <span class="comment">// message passing. The following are the possible states:</span></div>
-<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;  <span class="comment">// Agent State    Executor State       http       pid    Executor Type</span></div>
-<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;  <span class="comment">// -----------    --------------       ----      ----    -------------</span></div>
-<div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;  <span class="comment">//  RECOVERING       REGISTERING       None     UPID()         Unknown</span></div>
-<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;  <span class="comment">//                   REGISTERING       None       Some      Libprocess</span></div>
-<div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;  <span class="comment">//                   REGISTERING       None       None            HTTP</span></div>
-<div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;  <span class="comment">//           *       REGISTERING       None       None   Not known yet</span></div>
-<div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;  <span class="comment">//           *                 *       None       Some      Libprocess</span></div>
-<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;  <span class="comment">//           *                 *       Some       None            HTTP</span></div>
-<div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad432746af325d55919e69efe7d82fbb9">  912</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;HttpConnection&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad432746af325d55919e69efe7d82fbb9">http</a>;</div>
-<div class="line"><a name="l00913"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a29666bff86d8f043ce5ba4f8a4ccb0b8">  913</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;process::UPID&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a29666bff86d8f043ce5ba4f8a4ccb0b8">pid</a>;</div>
-<div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;</div>
-<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;  <span class="comment">// Tasks can be found in one of the following four data structures:</span></div>
-<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;  <span class="comment">// TODO(bmahler): Make these private to enforce that the task</span></div>
-<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;  <span class="comment">// lifecycle helper functions are not being bypassed, and provide</span></div>
-<div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;  <span class="comment">// public views into them.</span></div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;  <span class="comment">// Returns the task group associated with the task.</span></div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;  <a class="code" href="classOption.html">Option&lt;TaskGroupInfo&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad6bd3d3bec32d1d06d96f90d1325bf8d">getQueuedTaskGroup</a>(<span class="keyword">const</span> TaskID&amp; taskId);</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aab395584ca0bd5c7867e093597e6ab09">allocatedResources</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;</div>
+<div class="line"><a name="l00894"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0">  894</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0">State</a></div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>&#160;  {</div>
+<div class="line"><a name="l00896"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a47f27688eed5f4b7b8fae1fe60e35d0d">  896</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a47f27688eed5f4b7b8fae1fe60e35d0d">REGISTERING</a>,  <span class="comment">// Executor is launched but not (re-)registered yet.</span></div>
+<div class="line"><a name="l00897"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a1485da27f38622c47c16abf8c1491683">  897</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0a1485da27f38622c47c16abf8c1491683">RUNNING</a>,      <span class="comment">// Executor has (re-)registered.</span></div>
+<div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ab536b2fae4842fc2c6e24905f142c920">  898</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ab536b2fae4842fc2c6e24905f142c920">TERMINATING</a>,  <span class="comment">// Executor is being shutdown/killed.</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ada3a926bc25ef3c7e060789f52aacd75">  899</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a3b2abbbd9f9e9ca5c08b75329ac426c0ada3a926bc25ef3c7e060789f52aacd75">TERMINATED</a>,   <span class="comment">// Executor has terminated but there might be pending updates.</span></div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;  } <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a27e0e6e088c0fd88a0c7f679c964c409">state</a>;</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;  <span class="comment">// We store the pointer to &#39;Slave&#39; to get access to its methods</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;  <span class="comment">// variables. One could imagine &#39;Executor&#39; as being an inner class</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;  <span class="comment">// of the &#39;Slave&#39; class.</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#addd8f0d655f9d03ad6bc594c4d476818">  905</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#addd8f0d655f9d03ad6bc594c4d476818">slave</a>;</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;</div>
+<div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a9037a16ee390fa0893f1229aca4e33ea">  907</a></span>&#160;  <span class="keyword">const</span> ExecutorID <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a9037a16ee390fa0893f1229aca4e33ea">id</a>;</div>
+<div class="line"><a name="l00908"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a6d93343a7cac0e8f5398e4d55a19c856">  908</a></span>&#160;  <span class="keyword">const</span> ExecutorInfo <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a6d93343a7cac0e8f5398e4d55a19c856">info</a>;</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;</div>
+<div class="line"><a name="l00910"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a34bfb0214dd593dcbf1ad4fa398a417c">  910</a></span>&#160;  <span class="keyword">const</span> FrameworkID <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a34bfb0214dd593dcbf1ad4fa398a417c">frameworkId</a>;</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;</div>
+<div class="line"><a name="l00912"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aaad02226a9d30491088dd9ef315effbc">  912</a></span>&#160;  <span class="keyword">const</span> ContainerID <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aaad02226a9d30491088dd9ef315effbc">containerId</a>;</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;</div>
+<div class="line"><a name="l00914"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aabe86347ab1d23297172813dc5d1c8f5">  914</a></span>&#160;  <span class="keyword">const</span> std::string <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aabe86347ab1d23297172813dc5d1c8f5">directory</a>;</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;  <span class="comment">// The sandbox will be owned by this user and the executor will</span></div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;  <span class="comment">// run as this user. This can be set to None when --switch_user</span></div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;  <span class="comment">// is false or when compiled for Windows.</span></div>
+<div class="line"><a name="l00919"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aed6f0c1093840e82b6e920164be9df74">  919</a></span>&#160;  <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;std::string&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#aed6f0c1093840e82b6e920164be9df74">user</a>;</div>
 <div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;</div>
-<div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;  <span class="comment">// Not yet launched tasks. This also includes tasks from `queuedTaskGroups`.</span></div>
-<div class="line"><a name="l00922"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a806e8af598eb003694dbaeacdda2c66b">  922</a></span>&#160;  <a class="code" href="classLinkedHashMap.html">LinkedHashMap&lt;TaskID, TaskInfo&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a806e8af598eb003694dbaeacdda2c66b">queuedTasks</a>;</div>
-<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;</div>
-<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;  <span class="comment">// Not yet launched task groups. This is needed for correctly sending</span></div>
-<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;  <span class="comment">// TASK_KILLED status updates for all tasks in the group if any of the</span></div>
-<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;  <span class="comment">// tasks were killed before the executor could register with the agent.</span></div>
-<div class="line"><a name="l00927"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a2fc2e9b051c144f259f003b79a3d5ec3">  927</a></span>&#160;  std::list&lt;TaskGroupInfo&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a2fc2e9b051c144f259f003b79a3d5ec3">queuedTaskGroups</a>;</div>
-<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;</div>
-<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;  <span class="comment">// Running.</span></div>
-<div class="line"><a name="l00930"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a8c9a1989d4b769bbccd7ce7385fd054d">  930</a></span>&#160;  <a class="code" href="classLinkedHashMap.html">LinkedHashMap&lt;TaskID, Task*&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a8c9a1989d4b769bbccd7ce7385fd054d">launchedTasks</a>;</div>
-<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;</div>
-<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;  <span class="comment">// Terminated but pending updates.</span></div>
-<div class="line"><a name="l00933"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#abd7e32a67b2bf5409c1ab855f3220625">  933</a></span>&#160;  <a class="code" href="classLinkedHashMap.html">LinkedHashMap&lt;TaskID, Task*&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#abd7e32a67b2bf5409c1ab855f3220625">terminatedTasks</a>;</div>
-<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;</div>
-<div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;  <span class="comment">// Terminated and updates acked.</span></div>
-<div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;  <span class="comment">// NOTE: We use a shared pointer for Task because clang doesn&#39;t like</span></div>
-<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;  <span class="comment">// Boost&#39;s implementation of circular_buffer with Task (Boost</span></div>
-<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;  <span class="comment">// attempts to do some memset&#39;s which are unsafe).</span></div>
-<div class="line"><a name="l00939"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad326f6f8e9c161095f6a7e033da58550">  939</a></span>&#160;  boost::circular_buffer&lt;std::shared_ptr&lt;Task&gt;&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad326f6f8e9c161095f6a7e033da58550">completedTasks</a>;</div>
-<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;</div>
-<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;  <span class="comment">// When the slave initiates a destroy of the container, we expect a</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;  <span class="comment">// termination to occur. The &#39;pendingTermation&#39; indicates why the</span></div>
-<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;  <span class="comment">// slave initiated the destruction and will influence the</span></div>
-<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;  <span class="comment">// information sent in the status updates for any remaining</span></div>
-<div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;  <span class="comment">// non-terminal tasks.</span></div>
-<div class="line"><a name="l00946"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#addae2cfbd131b946f10a7986aafac151">  946</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;mesos::slave::ContainerTermination&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#addae2cfbd131b946f10a7986aafac151">pendingTermination</a>;</div>
-<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;</div>
-<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a2743c0fdfd1c12f467e85e628a779114">Executor</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00921"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ab05d451e6d84e8da41ac5b156cb7a79f">  921</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ab05d451e6d84e8da41ac5b156cb7a79f">checkpoint</a>;</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;  <span class="comment">// An Executor can either be connected via HTTP or by libprocess</span></div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;  <span class="comment">// message passing. The following are the possible states:</span></div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;  <span class="comment">// Agent State    Executor State       http       pid    Executor Type</span></div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;  <span class="comment">// -----------    --------------       ----      ----    -------------</span></div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;  <span class="comment">//  RECOVERING       REGISTERING       None     UPID()         Unknown</span></div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;  <span class="comment">//                   REGISTERING       None       Some      Libprocess</span></div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;  <span class="comment">//                   REGISTERING       None       None            HTTP</span></div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;  <span class="comment">//           *       REGISTERING       None       None   Not known yet</span></div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;  <span class="comment">//           *                 *       None       Some      Libprocess</span></div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;  <span class="comment">//           *                 *       Some       None            HTTP</span></div>
+<div class="line"><a name="l00935"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad432746af325d55919e69efe7d82fbb9">  935</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;HttpConnection&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad432746af325d55919e69efe7d82fbb9">http</a>;</div>
+<div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a29666bff86d8f043ce5ba4f8a4ccb0b8">  936</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;process::UPID&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a29666bff86d8f043ce5ba4f8a4ccb0b8">pid</a>;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;  <span class="comment">// Tasks can be found in one of the following four data structures:</span></div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;  <span class="comment">// TODO(bmahler): Make these private to enforce that the task</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;  <span class="comment">// lifecycle helper functions are not being bypassed, and provide</span></div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;  <span class="comment">// public views into them.</span></div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;  <span class="comment">// Not yet launched tasks. This also includes tasks from `queuedTaskGroups`.</span></div>
+<div class="line"><a name="l00945"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a806e8af598eb003694dbaeacdda2c66b">  945</a></span>&#160;  <a class="code" href="classLinkedHashMap.html">LinkedHashMap&lt;TaskID, TaskInfo&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a806e8af598eb003694dbaeacdda2c66b">queuedTasks</a>;</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;  <span class="comment">// Not yet launched task groups. This is needed for correctly sending</span></div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;  <span class="comment">// TASK_KILLED status updates for all tasks in the group if any of the</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;  <span class="comment">// tasks were killed before the executor could register with the agent.</span></div>
+<div class="line"><a name="l00950"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a2fc2e9b051c144f259f003b79a3d5ec3">  950</a></span>&#160;  std::list&lt;TaskGroupInfo&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a2fc2e9b051c144f259f003b79a3d5ec3">queuedTaskGroups</a>;</div>
 <div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;</div>
-<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;  <span class="keywordtype">bool</span> isGeneratedForCommandTask_;</div>
-<div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;};</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;  <span class="comment">// Running.</span></div>
+<div class="line"><a name="l00953"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a8c9a1989d4b769bbccd7ce7385fd054d">  953</a></span>&#160;  <a class="code" href="classLinkedHashMap.html">LinkedHashMap&lt;TaskID, Task*&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a8c9a1989d4b769bbccd7ce7385fd054d">launchedTasks</a>;</div>
 <div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;</div>
-<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;</div>
-<div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;<span class="comment">// Information about a framework.</span></div>
-<div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html">  957</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a></div>
-<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;{</div>
-<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a98caed7c7f98f89fa2cb716cbfe38217">Framework</a>(</div>
-<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a28542cb83d680c4bd37f31ae58382866">slave</a>,</div>
-<div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; slaveFlags,</div>
-<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;      <span class="keyword">const</span> FrameworkInfo&amp; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ab024621d83bc1381fd176d0fc8cdeac2">info</a>,</div>
-<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;process::UPID&gt;</a>&amp; pid);</div>
-<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;</div>
-<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a6803557157471add8d9cccc7272beb14">~Framework</a>();</div>
-<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;</div>
-<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;  <span class="comment">// Returns whether the framework is idle, where idle is</span></div>
-<div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;  <span class="comment">// defined as having no activity:</span></div>
-<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;  <span class="comment">//   (1) The framework has no non-terminal tasks and executors.</span></div>
-<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;  <span class="comment">//   (2) All status updates have been acknowledged.</span></div>
-<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;  <span class="comment">// TODO(bmahler): The framework should also not be considered</span></div>
-<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;  <span class="comment">// idle if there are unacknowledged updates for &quot;pending&quot; tasks.</span></div>
-<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ac08555852cd25a946886181831cb423e">idle</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;</div>
-<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ae1271f8b0a5113b0413c4c5ca3035ae5">checkpointFramework</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;  <span class="comment">// Terminated but pending updates.</span></div>
+<div class="line"><a name="l00956"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#abd7e32a67b2bf5409c1ab855f3220625">  956</a></span>&#160;  <a class="code" href="classLinkedHashMap.html">LinkedHashMap&lt;TaskID, Task*&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#abd7e32a67b2bf5409c1ab855f3220625">terminatedTasks</a>;</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;  <span class="comment">// Terminated and updates acked.</span></div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;  <span class="comment">// NOTE: We use a shared pointer for Task because clang doesn&#39;t like</span></div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;  <span class="comment">// Boost&#39;s implementation of circular_buffer with Task (Boost</span></div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;  <span class="comment">// attempts to do some memset&#39;s which are unsafe).</span></div>
+<div class="line"><a name="l00962"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad326f6f8e9c161095f6a7e033da58550">  962</a></span>&#160;  boost::circular_buffer&lt;std::shared_ptr&lt;Task&gt;&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#ad326f6f8e9c161095f6a7e033da58550">completedTasks</a>;</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;  <span class="comment">// When the slave initiates a destroy of the container, we expect a</span></div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;  <span class="comment">// termination to occur. The &#39;pendingTermation&#39; indicates why the</span></div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;  <span class="comment">// slave initiated the destruction and will influence the</span></div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;  <span class="comment">// information sent in the status updates for any remaining</span></div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;  <span class="comment">// non-terminal tasks.</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Executor.html#addae2cfbd131b946f10a7986aafac151">  969</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;mesos::slave::ContainerTermination&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#addae2cfbd131b946f10a7986aafac151">pendingTermination</a>;</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;<span class="keyword">private</span>:</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html#a2743c0fdfd1c12f467e85e628a779114">Executor</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>&amp;) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;  <span class="keywordtype">bool</span> isGeneratedForCommandTask_;</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;};</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;</div>
 <div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;</div>
-<div class="line"><a name="l00979"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a65933e3034706258069b54549081fdbf">  979</a></span>&#160;  <span class="keyword">const</span> FrameworkID <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a65933e3034706258069b54549081fdbf">id</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> info.id(); }</div>
-<div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;</div>
-<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a4cbc84739c113be2cb1e6b4c88c46983">addExecutor</a>(<span class="keyword">const</span> ExecutorInfo&amp; executorInfo);</div>
-<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aaa044d0c042d68e59815f1244440560e">getExecutor</a>(<span class="keyword">const</span> ExecutorID&amp; executorId) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aaa044d0c042d68e59815f1244440560e">getExecutor</a>(<span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;</div>
-<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a8a39feb604858a43d0f7f747961d4592">destroyExecutor</a>(<span class="keyword">const</span> ExecutorID&amp; executorId);</div>
-<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;</div>
-<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a440112e6053e7d36a46c18580a1b5133">recoverExecutor</a>(</div>
-<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;      <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html">state::ExecutorState</a>&amp; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#adbfec960b7cb705602bdac9853fb0c12">state</a>,</div>
-<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;      <span class="keywordtype">bool</span> recheckpointExecutor,</div>
-<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset&lt;TaskID&gt;</a>&amp; tasksToRecheckpoint);</div>
-<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;</div>
-<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aeb25f4fcc70053454fa9b96fdc723472">addPendingTask</a>(</div>
-<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;      <span class="keyword">const</span> ExecutorID&amp; executorId,</div>
-<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;      <span class="keyword">const</span> TaskInfo&amp; task);</div>
-<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;</div>
-<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;  <span class="comment">// Note that these tasks will also be tracked within `pendingTasks`.</span></div>
-<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#af3e51bb9c1d72d282695d8a4a9b2e072">addPendingTaskGroup</a>(</div>
-<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;      <span class="keyword">const</span> ExecutorID&amp; executorId,</div>
-<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;      <span class="keyword">const</span> TaskGroupInfo&amp; taskGroup);</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aa4d1693c6eaeccb8df16ae925c3979e0">hasTask</a>(<span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ab67788cb552b7320783b7ecd7b80f82a">isPending</a>(<span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;<span class="comment">// Information about a framework.</span></div>
+<div class="line"><a name="l00980"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html">  980</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a></div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;{</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a98caed7c7f98f89fa2cb716cbfe38217">Framework</a>(</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;      <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a28542cb83d680c4bd37f31ae58382866">slave</a>,</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Flags.html">Flags</a>&amp; slaveFlags,</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;      <span class="keyword">const</span> FrameworkInfo&amp; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ab024621d83bc1381fd176d0fc8cdeac2">info</a>,</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;      <span class="keyword">const</span> <a class="code" href="classOption.html">Option&lt;process::UPID&gt;</a>&amp; pid);</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a6803557157471add8d9cccc7272beb14">~Framework</a>();</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;  <span class="comment">// Returns whether the framework is idle, where idle is</span></div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;  <span class="comment">// defined as having no activity:</span></div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;  <span class="comment">//   (1) The framework has no non-terminal tasks and executors.</span></div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;  <span class="comment">//   (2) All status updates have been acknowledged.</span></div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;  <span class="comment">// TODO(bmahler): The framework should also not be considered</span></div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;  <span class="comment">// idle if there are unacknowledged updates for &quot;pending&quot; tasks.</span></div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ac08555852cd25a946886181831cb423e">idle</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ae1271f8b0a5113b0413c4c5ca3035ae5">checkpointFramework</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div>
+<div class="line"><a name="l01002"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a65933e3034706258069b54549081fdbf"> 1002</a></span>&#160;  <span class="keyword">const</span> FrameworkID <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a65933e3034706258069b54549081fdbf">id</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> info.id(); }</div>
 <div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;  <span class="comment">// Returns the task group associated with a pending task.</span></div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;  <a class="code" href="classOption.html">Option&lt;TaskGroupInfo&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a1c287e7b3a052ddbddc88f26a33784d4">getTaskGroupForPendingTask</a>(<span class="keyword">const</span> TaskID&amp; taskId);</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;  <span class="comment">// Returns whether the pending task was removed.</span></div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aabbcae80a9967d73db3218e33505921c">removePendingTask</a>(<span class="keyword">const</span> TaskID&amp; taskId);</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a4cbc84739c113be2cb1e6b4c88c46983">addExecutor</a>(<span class="keyword">const</span> ExecutorInfo&amp; executorInfo);</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aaa044d0c042d68e59815f1244440560e">getExecutor</a>(<span class="keyword">const</span> ExecutorID&amp; executorId) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aaa044d0c042d68e59815f1244440560e">getExecutor</a>(<span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a8a39feb604858a43d0f7f747961d4592">destroyExecutor</a>(<span class="keyword">const</span> ExecutorID&amp; executorId);</div>
 <div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;  <a class="code" href="classOption.html">Option&lt;ExecutorID&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a2fff4fc7fabe8cd06c9fca35f187b82b">getExecutorIdForPendingTask</a>(<span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a004ea3cee927e6983397de310e42a0d1">allocatedResources</a>() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;</div>
-<div class="line"><a name="l01014"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8add"> 1014</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8add">State</a></div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;  {</div>
-<div class="line"><a name="l01016"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8addaee1aee9245f83af93404e62fe978dcc0"> 1016</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8addaee1aee9245f83af93404e62fe978dcc0">RUNNING</a>,      <span class="comment">// First state of a newly created framework.</span></div>
-<div class="line"><a name="l01017"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8adda577bc0be9a10978a6926259b04ac779e"> 1017</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8adda577bc0be9a10978a6926259b04ac779e">TERMINATING</a>,  <span class="comment">// Framework is shutting down in the cluster.</span></div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;  } <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#adbfec960b7cb705602bdac9853fb0c12">state</a>;</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;  <span class="comment">// We store the pointer to &#39;Slave&#39; to get access to its methods and</span></div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;  <span class="comment">// variables. One could imagine &#39;Framework&#39; being an inner class of</span></div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;  <span class="comment">// the &#39;Slave&#39; class.</span></div>
-<div class="line"><a name="l01023"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a28542cb83d680c4bd37f31ae58382866"> 1023</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a28542cb83d680c4bd37f31ae58382866">slave</a>;</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div>
-<div class="line"><a name="l01025"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ab024621d83bc1381fd176d0fc8cdeac2"> 1025</a></span>&#160;  FrameworkInfo <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ab024621d83bc1381fd176d0fc8cdeac2">info</a>;</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a440112e6053e7d36a46c18580a1b5133">recoverExecutor</a>(</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;      <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html">state::ExecutorState</a>&amp; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#adbfec960b7cb705602bdac9853fb0c12">state</a>,</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;      <span class="keywordtype">bool</span> recheckpointExecutor,</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;      <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset&lt;TaskID&gt;</a>&amp; tasksToRecheckpoint);</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aeb25f4fcc70053454fa9b96fdc723472">addPendingTask</a>(</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;      <span class="keyword">const</span> ExecutorID&amp; executorId,</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;      <span class="keyword">const</span> TaskInfo&amp; task);</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;  <span class="comment">// Note that these tasks will also be tracked within `pendingTasks`.</span></div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#af3e51bb9c1d72d282695d8a4a9b2e072">addPendingTaskGroup</a>(</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;      <span class="keyword">const</span> ExecutorID&amp; executorId,</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;      <span class="keyword">const</span> TaskGroupInfo&amp; taskGroup);</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aa4d1693c6eaeccb8df16ae925c3979e0">hasTask</a>(<span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ab67788cb552b7320783b7ecd7b80f82a">isPending</a>(<span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div>
 <div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;</div>
-<div class="line"><a name="l01027"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#af7ac61858b800f9b2adf0778d442f3ab"> 1027</a></span>&#160;  <a class="code" href="structmesos_1_1internal_1_1protobuf_1_1framework_1_1Capabilities.html">protobuf::framework::Capabilities</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#af7ac61858b800f9b2adf0778d442f3ab">capabilities</a>;</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;  <span class="comment">// Frameworks using the scheduler driver will have a &#39;pid&#39;,</span></div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;  <span class="comment">// which allows us to send executor messages directly to the</span></div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;  <span class="comment">// driver. Frameworks using the HTTP API (in 0.24.0) will</span></div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;  <span class="comment">// not have a &#39;pid&#39;, in which case executor messages are</span></div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;  <span class="comment">// sent through the master.</span></div>
-<div class="line"><a name="l01034"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ad7dbb2013ee11ad0a55f177bfd7a0461"> 1034</a></span>&#160;  <a class="code" href="classOption.html">Option&lt;process::UPID&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#ad7dbb2013ee11ad0a55f177bfd7a0461">pid</a>;</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;  <span class="comment">// Executors can be found in one of the following</span></div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;  <span class="comment">// data structures:</span></div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;  <span class="comment">// TODO(bmahler): Make these private to enforce that</span></div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;  <span class="comment">// the executors lifecycle helper functions are not</span></div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;  <span class="comment">// being bypassed, and provide public views into them.</span></div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;  <span class="comment">// Returns the task group associated with a pending task.</span></div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;  <a class="code" href="classOption.html">Option&lt;TaskGroupInfo&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a1c287e7b3a052ddbddc88f26a33784d4">getTaskGroupForPendingTask</a>(<span class="keyword">const</span> TaskID&amp; taskId);</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;  <span class="comment">// Returns whether the pending task was removed.</span></div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;  <span class="keywordtype">bool</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aabbcae80a9967d73db3218e33505921c">removePendingTask</a>(<span class="keyword">const</span> TaskID&amp; taskId);</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;  <a class="code" href="classOption.html">Option&lt;ExecutorID&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a2fff4fc7fabe8cd06c9fca35f187b82b">getExecutorIdForPendingTask</a>(<span class="keyword">const</span> TaskID&amp; taskId) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;  <a class="code" href="classmesos_1_1Resources.html">Resources</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a004ea3cee927e6983397de310e42a0d1">allocatedResources</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;</div>
+<div class="line"><a name="l01037"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8add"> 1037</a></span>&#160;  <span class="keyword">enum</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8add">State</a></div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;  {</div>
+<div class="line"><a name="l01039"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8addaee1aee9245f83af93404e62fe978dcc0"> 1039</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8addaee1aee9245f83af93404e62fe978dcc0">RUNNING</a>,      <span class="comment">// First state of a newly created framework.</span></div>
+<div class="line"><a name="l01040"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8adda577bc0be9a10978a6926259b04ac779e"> 1040</a></span>&#160;    <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#accb4e9c8d32936b20f3d0ddc71fe8adda577bc0be9a10978a6926259b04ac779e">TERMINATING</a>,  <span class="comment">// Framework is shutting down in the cluster.</span></div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;  } <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#adbfec960b7cb705602bdac9853fb0c12">state</a>;</div>
 <div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;  <span class="comment">// Executors with pending tasks.</span></div>
-<div class="line"><a name="l01044"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a895612a28929288abe2071620d7958da"> 1044</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;ExecutorID, hashmap&lt;TaskID, TaskInfo&gt;</a>&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a895612a28929288abe2071620d7958da">pendingTasks</a>;</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;  <span class="comment">// Pending task groups. This is needed for correctly sending</span></div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;  <span class="comment">// TASK_KILLED status updates for all tasks in the group if</span></div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;  <span class="comment">// any of the tasks are killed while pending.</span></div>
-<div class="line"><a name="l01049"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aa52d24c559cecfc18ba6167dd72c1988"> 1049</a></span>&#160;  std::list&lt;TaskGroupInfo&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#aa52d24c559cecfc18ba6167dd72c1988">pendingTaskGroups</a>;</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;  <span class="comment">// Current running executors.</span></div>
-<div class="line"><a name="l01052"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a67ace79356a9523a2486d8ffd235847f"> 1052</a></span>&#160;  <a class="code" href="classhashmap.html">hashmap&lt;ExecutorID, Executor*&gt;</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a67ace79356a9523a2486d8ffd235847f">executors</a>;</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;</div>
-<div class="line"><a name="l01054"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a64da4492057ddd2ed2019e737819d79b"> 1054</a></span>&#160;  boost::circular_buffer&lt;process::Owned&lt;Executor&gt;&gt; <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a64da4492057ddd2ed2019e737819d79b">completedExecutors</a>;</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html#a98caed7c7f98f89fa2cb716cbfe38217">Framework</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>&amp;) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;};</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;</div>
-<div class="line"><a name="l01062"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html"> 1062</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html">ResourceProvider</a></div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;{</div>
-<div class="line"><a name="l01064"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html#afe22db29500a5157a6fb0c5da3fb9d2f"> 1064</a></span>&#160;  <a class="code" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html#afe22db29500a5157a6fb0c5da3fb9d2f">ResourceProvider</a>(</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;      <span class="keyword">const</span> Res

<TRUNCATED>