http://git-wip-us.apache.org/repos/asf/mesos-site/blob/df0fa690/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 fa39779..98c62e5 100644 --- a/content/api/latest/c++/slave_8hpp_source.html +++ b/content/api/latest/c++/slave_8hpp_source.html @@ -474,756 +474,772 @@ <div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div> <div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="structNothing.html">Nothing</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a281c6252ea2ad026664661aaf22237c3">detachFile</a>(<span class="keyword">const</span> std::string& path);</div> <div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div> -<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="comment">// TODO(qianzhang): This is a workaround to make the default executor</span></div> -<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="comment">// task's volume directory visible in MESOS UI. In MESOS-7225, we made</span></div> -<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// sure a task can access any volumes specified in its disk resources</span></div> -<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">// from its sandbox by introducing a workaround to the default executor,</span></div> -<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="comment">// i.e., adding a `SANDBOX_PATH` volume with type `PARENT` to the</span></div> -<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">// corresponding nested container. This volume gets translated into a</span></div> -<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// bind mount in the nested container's mount namespace, which is is not</span></div> -<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// visible in Mesos UI because it operates in the host namespace. See</span></div> -<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// Mesos-8279 for details.</span></div> -<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">//</span></div> -<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// To make the task's volume directory visible in Mesos UI, here we</span></div> -<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="comment">// attach the executor's volume directory to it, so when users browse</span></div> -<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="comment">// task's volume directory in Mesos UI, what they actually browse is the</span></div> -<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// executor's volume directory. Note when calling `Files::attach()`, the</span></div> -<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// third argument `authorized` is not specified because it is already</span></div> -<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// specified when we do the attach for the executor's sandbox and it also</span></div> -<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// applies to the executor's tasks.</span></div> -<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae960552ceef724d0391a3e35d2d00a71">attachTaskVolumeDirectory</a>(</div> -<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keyword">const</span> ExecutorInfo& executorInfo,</div> -<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">const</span> ContainerID& executorContainerId,</div> -<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">const</span> Task& task);</div> -<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div> -<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// TODO(qianzhang): Remove the task's volume directory from the /files</span></div> -<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="comment">// endpoint. This is a workaround for MESOS-8279.</span></div> -<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a30d96c36cbd0acafd0ccb8df227c382c">detachTaskVolumeDirectories</a>(</div> -<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keyword">const</span> ExecutorInfo& executorInfo,</div> -<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keyword">const</span> ContainerID& executorContainerId,</div> -<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keyword">const</span> std::vector<Task>& tasks);</div> -<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div> -<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// Triggers a re-detection of the master when the slave does</span></div> -<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// not receive a ping.</span></div> -<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aa14da55de5c585de7f443afa61e042d7">pingTimeout</a>(<a class="code" href="classprocess_1_1Future.html">process::Future</a><<a class="code" href="classOption.html">Option<MasterInfo></a>> future);</div> -<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div> -<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a2092a012c0c720534bee028e9b0064ab">authenticate</a>();</div> -<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div> -<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// Helper routines to lookup a framework/executor.</span></div> -<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af47e4a69c5542ae625bdd1a5b7fdb308">getFramework</a>(<span class="keyword">const</span> FrameworkID& frameworkId) <span class="keyword">const</span>;</div> +<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="comment">// TODO(qianzhang): This is a workaround to make the default executor task's</span></div> +<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="comment">// volume directory visible in MESOS UI. It handles two cases:</span></div> +<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// 1. The task has disk resources specified. In this case any disk resources</span></div> +<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">// specified for the task are mounted on the top level container since</span></div> +<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="comment">// currently all resources of nested containers are merged in the top</span></div> +<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="comment">// level executor container. To make sure the task can access any volumes</span></div> +<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// specified in its disk resources from its sandbox, a workaround was</span></div> +<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// introduced to the default executor in MESOS-7225, i.e., adding a</span></div> +<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// `SANDBOX_PATH` volume with type `PARENT` to the corresponding nested</span></div> +<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">// container. This volume gets translated into a bind mount in the nested</span></div> +<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// container's mount namespace, which is not visible in Mesos UI because</span></div> +<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="comment">// it operates in the host namespace. See MESOS-8279 for details.</span></div> +<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="comment">// 2. The executor has disk resources specified and the task's ContainerInfo</span></div> +<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// has a `SANDBOX_PATH` volume with type `PARENT` specified to share the</span></div> +<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// executor's disk volume. Similar to the first case, this `SANDBOX_PATH`</span></div> +<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// volume gets translated into a bind mount which is not visible in Mesos</span></div> +<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// UI. See MESOS-8565 for details.</span></div> +<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="comment">//</span></div> +<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="comment">// To make the task's volume directory visible in Mesos UI, here we attach the</span></div> +<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="comment">// executor's volume directory to it so that it can be accessed via the /files</span></div> +<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="comment">// endpoint. So when users browse task's volume directory in Mesos UI, what</span></div> +<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="comment">// they actually browse is the executor's volume directory. Note when calling</span></div> +<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// `Files::attach()`, the third argument `authorized` is not specified because</span></div> +<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="comment">// it is already specified when we do the attach for the executor's sandbox</span></div> +<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// and it also applies to the executor's tasks. Note that for the second case</span></div> +<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// we can not do the attach when the task's ContainerInfo has a `SANDBOX_PATH`</span></div> +<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// volume with type `PARENT` but the executor has NO disk resources, because</span></div> +<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// in such case the attach will fail due to the executor's volume directory</span></div> +<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="comment">// not existing which will actually be created by the `volume/sandbox_path`</span></div> +<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// isolator when launching the nested container. But if the executor has disk</span></div> +<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// resources, then we will not have this issue since the executor's volume</span></div> +<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="comment">// directory will be created by the `filesystem/linux` isolator when launching</span></div> +<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="comment">// the executor before we do the attach.</span></div> +<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae960552ceef724d0391a3e35d2d00a71">attachTaskVolumeDirectory</a>(</div> +<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keyword">const</span> ExecutorInfo& executorInfo,</div> +<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keyword">const</span> ContainerID& executorContainerId,</div> +<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keyword">const</span> Task& task);</div> <div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div> -<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae5cbf7aef363a45048acfca39fbb4c89">getExecutor</a>(</div> -<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> -<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keyword">const</span> ExecutorID& executorId) <span class="keyword">const</span>;</div> -<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div> -<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae5cbf7aef363a45048acfca39fbb4c89">getExecutor</a>(<span class="keyword">const</span> ContainerID& containerId) <span class="keyword">const</span>;</div> -<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div> -<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// Returns the ExecutorInfo associated with a TaskInfo. If the task has no</span></div> -<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// ExecutorInfo, then we generate an ExecutorInfo corresponding to the</span></div> -<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="comment">// command executor.</span></div> -<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  ExecutorInfo <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a1200b872e31b092349f482e4711d41e4">getExecutorInfo</a>(</div> -<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keyword">const</span> FrameworkInfo& frameworkInfo,</div> -<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keyword">const</span> TaskInfo& task) <span class="keyword">const</span>;</div> +<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="comment">// TODO(qianzhang): Remove the task's volume directory from the /files</span></div> +<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="comment">// endpoint. This is a workaround for MESOS-8279 and MESOS-8565.</span></div> +<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a30d96c36cbd0acafd0ccb8df227c382c">detachTaskVolumeDirectories</a>(</div> +<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keyword">const</span> ExecutorInfo& executorInfo,</div> +<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">const</span> ContainerID& executorContainerId,</div> +<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keyword">const</span> std::vector<Task>& tasks);</div> +<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div> +<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="comment">// Triggers a re-detection of the master when the slave does</span></div> +<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="comment">// not receive a ping.</span></div> +<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aa14da55de5c585de7f443afa61e042d7">pingTimeout</a>(<a class="code" href="classprocess_1_1Future.html">process::Future</a><<a class="code" href="classOption.html">Option<MasterInfo></a>> future);</div> +<div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div> +<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a2092a012c0c720534bee028e9b0064ab">authenticate</a>();</div> <div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div> -<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// Shuts down the executor if it did not register yet.</span></div> -<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aeaef3f8ca707a6ddf0cd9692835b7f50">registerExecutorTimeout</a>(</div> -<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> -<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keyword">const</span> ExecutorID& executorId,</div> -<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keyword">const</span> ContainerID& containerId);</div> -<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div> -<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">// Cleans up all un-reregistered executors during recovery.</span></div> -<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a00d7e0077ecd03e0e0bde0b814d02a68">reregisterExecutorTimeout</a>();</div> +<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// Helper routines to lookup a framework/executor.</span></div> +<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af47e4a69c5542ae625bdd1a5b7fdb308">getFramework</a>(<span class="keyword">const</span> FrameworkID& frameworkId) <span class="keyword">const</span>;</div> +<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div> +<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae5cbf7aef363a45048acfca39fbb4c89">getExecutor</a>(</div> +<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> +<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">const</span> ExecutorID& executorId) <span class="keyword">const</span>;</div> +<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div> +<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ae5cbf7aef363a45048acfca39fbb4c89">getExecutor</a>(<span class="keyword">const</span> ContainerID& containerId) <span class="keyword">const</span>;</div> <div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div> -<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">// This function returns the max age of executor/slave directories allowed,</span></div> -<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="comment">// given a disk usage. This value could be used to tune gc.</span></div> -<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="classDuration.html">Duration</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a355d5c297d06b8e818df3edcfd69648b">age</a>(<span class="keywordtype">double</span> usage);</div> -<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div> -<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="comment">// Checks the current disk usage and schedules for gc as necessary.</span></div> -<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a834f5a3d33854228abfa40e61eb0106e">checkDiskUsage</a>();</div> +<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="comment">// Returns the ExecutorInfo associated with a TaskInfo. If the task has no</span></div> +<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="comment">// ExecutorInfo, then we generate an ExecutorInfo corresponding to the</span></div> +<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">// command executor.</span></div> +<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  ExecutorInfo <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a1200b872e31b092349f482e4711d41e4">getExecutorInfo</a>(</div> +<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keyword">const</span> FrameworkInfo& frameworkInfo,</div> +<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keyword">const</span> TaskInfo& task) <span class="keyword">const</span>;</div> <div class="line"><a name="l00489"></a><span class="lineno"> 489</span> </div> -<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">// Checks the current container image disk usage and trigger image</span></div> -<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// gc if necessary.</span></div> -<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aeb7deb633d907b3f504acd7e021a5774">checkImageDiskUsage</a>();</div> -<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div> -<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">// Recovers the slave, task status update manager and isolator.</span></div> -<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aa66f55ccd42a6aac647a50d78a3fb29c">recover</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try<state::State></a>& <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af79c3eb007e12f37faec4a24d1f95cc4">state</a>);</div> -<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div> -<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="comment">// This is called after 'recover()'. If 'flags.reconnect' is</span></div> -<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// 'reconnect', the slave attempts to reconnect to any old live</span></div> -<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">// executors. Otherwise, the slave attempts to shutdown/kill them.</span></div> -<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ad615bdfc4c89ec56f96c61d493507516">_recover</a>();</div> -<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div> -<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// This is a helper to call recover() on the containerizer at the end of</span></div> -<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">// recover() and before __recover().</span></div> -<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="comment">// TODO(idownes): Remove this when we support defers to objects.</span></div> -<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a05bb2d1fc84402385d05c5341dea5827">_recoverContainerizer</a>(</div> -<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<state::SlaveState></a>& <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af79c3eb007e12f37faec4a24d1f95cc4">state</a>);</div> -<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div> -<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="comment">// This is called when recovery finishes.</span></div> -<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="comment">// Made 'virtual' for Slave mocking.</span></div> -<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#adf6475e9de96ccbbe503980ae80c2978">__recover</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a>& future);</div> -<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> </div> -<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="comment">// Helper to recover a framework from the specified state.</span></div> -<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a687e239fe854b91b0f64e076ab4dbf57">recoverFramework</a>(</div> -<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html">state::FrameworkState</a>& <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af79c3eb007e12f37faec4a24d1f95cc4">state</a>,</div> -<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset<ExecutorID></a>& executorsToRecheckpoint,</div> -<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap</a><ExecutorID, <a class="code" href="classhashset.html">hashset<TaskID></a>>& tasksToRecheckpoint);</div> +<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="comment">// Shuts down the executor if it did not register yet.</span></div> +<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aeaef3f8ca707a6ddf0cd9692835b7f50">registerExecutorTimeout</a>(</div> +<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> +<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keyword">const</span> ExecutorID& executorId,</div> +<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keyword">const</span> ContainerID& containerId);</div> +<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div> +<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// Cleans up all un-reregistered executors during recovery.</span></div> +<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a00d7e0077ecd03e0e0bde0b814d02a68">reregisterExecutorTimeout</a>();</div> +<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> </div> +<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">// This function returns the max age of executor/slave directories allowed,</span></div> +<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="comment">// given a disk usage. This value could be used to tune gc.</span></div> +<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <a class="code" href="classDuration.html">Duration</a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a355d5c297d06b8e818df3edcfd69648b">age</a>(<span class="keywordtype">double</span> usage);</div> +<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div> +<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="comment">// Checks the current disk usage and schedules for gc as necessary.</span></div> +<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a834f5a3d33854228abfa40e61eb0106e">checkDiskUsage</a>();</div> +<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div> +<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">// Checks the current container image disk usage and trigger image</span></div> +<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="comment">// gc if necessary.</span></div> +<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aeb7deb633d907b3f504acd7e021a5774">checkImageDiskUsage</a>();</div> +<div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div> +<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// Recovers the slave, task status update manager and isolator.</span></div> +<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aa66f55ccd42a6aac647a50d78a3fb29c">recover</a>(<span class="keyword">const</span> <a class="code" href="classTry.html">Try<state::State></a>& <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af79c3eb007e12f37faec4a24d1f95cc4">state</a>);</div> +<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div> +<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// This is called after 'recover()'. If 'flags.reconnect' is</span></div> +<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// 'reconnect', the slave attempts to reconnect to any old live</span></div> +<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="comment">// executors. Otherwise, the slave attempts to shutdown/kill them.</span></div> +<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ad615bdfc4c89ec56f96c61d493507516">_recover</a>();</div> <div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div> -<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// Removes and garbage collects the executor.</span></div> -<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aa0a3ade2dde9dd762b30fb376497de35">removeExecutor</a>(<a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>* framework, <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* executor);</div> -<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div> -<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// Removes and garbage collects the framework.</span></div> -<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="comment">// Made 'virtual' for Slave mocking.</span></div> -<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a8c91e52205ed91adf20cee75cfcf43fe">removeFramework</a>(<a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>* framework);</div> -<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div> -<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// Schedules a 'path' for gc based on its modification time.</span></div> -<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a76f40f8c10951d9526cb63bcea66f5e5">garbageCollect</a>(<span class="keyword">const</span> std::string& path);</div> +<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// This is a helper to call recover() on the containerizer at the end of</span></div> +<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="comment">// recover() and before __recover().</span></div> +<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="comment">// TODO(idownes): Remove this when we support defers to objects.</span></div> +<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a05bb2d1fc84402385d05c5341dea5827">_recoverContainerizer</a>(</div> +<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<state::SlaveState></a>& <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af79c3eb007e12f37faec4a24d1f95cc4">state</a>);</div> +<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div> +<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">// This is called when recovery finishes.</span></div> +<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// Made 'virtual' for Slave mocking.</span></div> +<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#adf6475e9de96ccbbe503980ae80c2978">__recover</a>(<span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a>& future);</div> <div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div> -<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">// Called when the slave was signaled from the specified user.</span></div> -<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ac738a6078b63c45cc4c6000f928cabad">signaled</a>(<span class="keywordtype">int</span> signal, <span class="keywordtype">int</span> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>);</div> -<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div> -<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment">// Made 'virtual' for Slave mocking.</span></div> -<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aa0ad621d4e5a289f62e0309e129451d5">qosCorrections</a>();</div> +<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="comment">// Helper to recover a framework from the specified state.</span></div> +<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a687e239fe854b91b0f64e076ab4dbf57">recoverFramework</a>(</div> +<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keyword">const</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html">state::FrameworkState</a>& <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#af79c3eb007e12f37faec4a24d1f95cc4">state</a>,</div> +<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keyword">const</span> <a class="code" href="classhashset.html">hashset<ExecutorID></a>& executorsToRecheckpoint,</div> +<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keyword">const</span> <a class="code" href="classhashmap.html">hashmap</a><ExecutorID, <a class="code" href="classhashset.html">hashset<TaskID></a>>& tasksToRecheckpoint);</div> <div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div> -<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="comment">// Made 'virtual' for Slave mocking.</span></div> -<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a10e4944e4e881bba067c34228679ef12">_qosCorrections</a>(</div> -<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a><<a class="code" href="namespacecgroups_1_1devices.html#a22494291bc2cb89697dcd2b5f288bdd3">std::list</a><</div> -<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  mesos::slave::QoSCorrection>>& correction);</div> -<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> </div> -<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="comment">// Returns the resource usage information for all executors.</span></div> -<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future<ResourceUsage></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a7c5612e80a880f00c74767e13bb068fd">usage</a>();</div> -<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div> -<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="comment">// Handle the second phase of shutting down an executor for those</span></div> -<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="comment">// executors that have not properly shutdown within a timeout.</span></div> -<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ab3245d2b6f67136e7b1f523a09eb7de4">shutdownExecutorTimeout</a>(</div> -<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> -<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keyword">const</span> ExecutorID& executorId,</div> -<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keyword">const</span> ContainerID& containerId);</div> -<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div> -<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="keyword">private</span>:</div> -<div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a763b2f90bc53f92d680a635fe28e858e"> 550</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>;</div> -<div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ad3defef37a1222bb2b2a65577a6c4816"> 551</a></span>  <span class="keyword">friend</span> <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="l00552"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aba95e2a7762bb5df986048b05d03a22e"> 552</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1Http.html">Http</a>;</div> -<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div> -<div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a33768639ed69e6812b805bd70b29bf35"> 554</a></span>  <span class="keyword">friend</span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1Metrics.html">Metrics</a>;</div> -<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div> -<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#adc334f9dc35ff066eee2fe0dfca8b8d7">Slave</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>&) = <span class="keyword">delete</span>;</div> -<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>& operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>&) = <span class="keyword">delete</span>;</div> -<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div> -<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordtype">void</span> _authenticate();</div> -<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordtype">void</span> authenticationTimeout(<a class="code" href="classprocess_1_1Future.html">process::Future<bool></a> future);</div> -<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> </div> -<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="comment">// Process creation of persistent volumes (for CREATE) and/or deletion</span></div> -<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="comment">// of persistent volumes (for DESTROY) as a part of handling</span></div> -<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="comment">// checkpointed resources, and commit the checkpointed resources on</span></div> -<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="comment">// successful completion of all the operations.</span></div> -<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <a class="code" href="classTry.html">Try<Nothing></a> syncCheckpointedResources(</div> -<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& newCheckpointedResources);</div> -<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div> -<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<bool></a> authorizeTask(</div> -<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keyword">const</span> TaskInfo& task,</div> -<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keyword">const</span> FrameworkInfo& frameworkInfo);</div> -<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div> -<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<bool></a> authorizeLogAccess(</div> -<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<process::http::authentication::Principal></a>& principal);</div> -<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div> -<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<bool></a> authorizeSandboxAccess(</div> -<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<process::http::authentication::Principal></a>& principal,</div> -<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> -<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keyword">const</span> ExecutorID& executorId);</div> -<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div> -<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordtype">void</span> sendExecutorTerminatedStatusUpdate(</div> -<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keyword">const</span> TaskID& taskId,</div> -<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a><<a class="code" href="classOption.html">Option</a><</div> -<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  mesos::slave::ContainerTermination>>& termination,</div> -<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> -<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* executor);</div> -<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> </div> -<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="comment">// Forwards the current total of oversubscribed resources.</span></div> -<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordtype">void</span> forwardOversubscribed();</div> -<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordtype">void</span> _forwardOversubscribed(</div> -<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<Resources></a>& oversubscribable);</div> -<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div> -<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="comment">// Helper functions to generate `UpdateSlaveMessage` for either</span></div> -<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="comment">// just updates to resource provider-related information, or both</span></div> -<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="comment">// resource provider-related information and oversubscribed</span></div> -<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="comment">// resources.</span></div> -<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  UpdateSlaveMessage generateResourceProviderUpdate() <span class="keyword">const</span>;</div> -<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  UpdateSlaveMessage generateUpdateSlaveMessage() <span class="keyword">const</span>;</div> -<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div> -<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordtype">void</span> handleResourceProviderMessage(</div> -<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<ResourceProviderMessage></a>& message);</div> -<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> </div> -<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordtype">void</span> addOperation(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div> -<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> </div> -<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// Transitions the operation, and recovers resource if the operation becomes</span></div> -<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="comment">// terminal.</span></div> -<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordtype">void</span> updateOperation(</div> -<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation,</div> -<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keyword">const</span> UpdateOperationStatusMessage& update);</div> -<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div> -<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordtype">void</span> removeOperation(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div> -<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> </div> -<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* getOperation(<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="l00614"></a><span class="lineno"> 614</span> </div> -<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordtype">void</span> addResourceProvider(<a class="code" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html">ResourceProvider</a>* resourceProvider);</div> -<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html">ResourceProvider</a>* getResourceProvider(<span class="keyword">const</span> ResourceProviderID& <span class="keywordtype">id</span>) <span class="keyword">const</span>;</div> -<div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div> -<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordtype">void</span> apply(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div> -<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div> -<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="comment">// Publish all resources that are needed to run the current set of</span></div> -<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="comment">// tasks and executors on the agent.</span></div> -<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">// NOTE: The `additionalResources` parameter is for publishing</span></div> -<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="comment">// additional task resources when launching executors. Consider</span></div> -<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="comment">// removing this parameter once we revisited MESOS-600.</span></div> -<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> publishResources(</div> -<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<Resources></a>& additionalResources = <a class="code" href="structNone.html">None</a>());</div> -<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> </div> -<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="comment">// Gauge methods.</span></div> -<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordtype">double</span> _frameworks_active()</div> -<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  {</div> -<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(frameworks.size());</div> -<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  }</div> +<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="comment">// Removes and garbage collects the executor.</span></div> +<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aa0a3ade2dde9dd762b30fb376497de35">removeExecutor</a>(<a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>* framework, <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* executor);</div> +<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div> +<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// Removes and garbage collects the framework.</span></div> +<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">// Made 'virtual' for Slave mocking.</span></div> +<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a8c91e52205ed91adf20cee75cfcf43fe">removeFramework</a>(<a class="code" href="classmesos_1_1internal_1_1slave_1_1Framework.html">Framework</a>* framework);</div> +<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> </div> +<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="comment">// Schedules a 'path' for gc based on its modification time.</span></div> +<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a76f40f8c10951d9526cb63bcea66f5e5">garbageCollect</a>(<span class="keyword">const</span> std::string& path);</div> +<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div> +<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// Called when the slave was signaled from the specified user.</span></div> +<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ac738a6078b63c45cc4c6000f928cabad">signaled</a>(<span class="keywordtype">int</span> signal, <span class="keywordtype">int</span> <a class="code" href="namespaceos_1_1stat.html#a96066cfc01f1f62fc25b56f6915800eb">uid</a>);</div> +<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div> +<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="comment">// Made 'virtual' for Slave mocking.</span></div> +<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aa0ad621d4e5a289f62e0309e129451d5">qosCorrections</a>();</div> +<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div> +<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="comment">// Made 'virtual' for Slave mocking.</span></div> +<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a10e4944e4e881bba067c34228679ef12">_qosCorrections</a>(</div> +<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a><<a class="code" href="namespacecgroups_1_1devices.html#a22494291bc2cb89697dcd2b5f288bdd3">std::list</a><</div> +<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  mesos::slave::QoSCorrection>>& correction);</div> +<div class="line"><a name="l00554"></a><span class="lineno"> 554</span> </div> +<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="comment">// Returns the resource usage information for all executors.</span></div> +<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keyword">virtual</span> <a class="code" href="classprocess_1_1Future.html">process::Future<ResourceUsage></a> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a7c5612e80a880f00c74767e13bb068fd">usage</a>();</div> +<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div> +<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="comment">// Handle the second phase of shutting down an executor for those</span></div> +<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="comment">// executors that have not properly shutdown within a timeout.</span></div> +<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ab3245d2b6f67136e7b1f523a09eb7de4">shutdownExecutorTimeout</a>(</div> +<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> +<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keyword">const</span> ExecutorID& executorId,</div> +<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keyword">const</span> ContainerID& containerId);</div> +<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div> +<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a763b2f90bc53f92d680a635fe28e858e"> 566</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>;</div> +<div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Slave.html#ad3defef37a1222bb2b2a65577a6c4816"> 567</a></span>  <span class="keyword">friend</span> <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="l00568"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aba95e2a7762bb5df986048b05d03a22e"> 568</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1slave_1_1Http.html">Http</a>;</div> +<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div> +<div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1slave_1_1Slave.html#a33768639ed69e6812b805bd70b29bf35"> 570</a></span>  <span class="keyword">friend</span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1Metrics.html">Metrics</a>;</div> +<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div> +<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#adc334f9dc35ff066eee2fe0dfca8b8d7">Slave</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>&) = <span class="keyword">delete</span>;</div> +<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>& operator=(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html">Slave</a>&) = <span class="keyword">delete</span>;</div> +<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div> +<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordtype">void</span> _authenticate();</div> +<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordtype">void</span> authenticationTimeout(<a class="code" href="classprocess_1_1Future.html">process::Future<bool></a> future);</div> +<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div> +<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="comment">// Process creation of persistent volumes (for CREATE) and/or deletion</span></div> +<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">// of persistent volumes (for DESTROY) as a part of handling</span></div> +<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="comment">// checkpointed resources, and commit the checkpointed resources on</span></div> +<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="comment">// successful completion of all the operations.</span></div> +<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="classTry.html">Try<Nothing></a> syncCheckpointedResources(</div> +<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& newCheckpointedResources);</div> +<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> </div> +<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<bool></a> authorizeTask(</div> +<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keyword">const</span> TaskInfo& task,</div> +<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keyword">const</span> FrameworkInfo& frameworkInfo);</div> +<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div> +<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<bool></a> authorizeLogAccess(</div> +<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<process::http::authentication::Principal></a>& principal);</div> +<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div> +<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<bool></a> authorizeSandboxAccess(</div> +<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<process::http::authentication::Principal></a>& principal,</div> +<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> +<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keyword">const</span> ExecutorID& executorId);</div> +<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div> +<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordtype">void</span> sendExecutorTerminatedStatusUpdate(</div> +<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keyword">const</span> TaskID& taskId,</div> +<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future</a><<a class="code" href="classOption.html">Option</a><</div> +<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  mesos::slave::ContainerTermination>>& termination,</div> +<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div> +<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Executor.html">Executor</a>* executor);</div> +<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> </div> +<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="comment">// Forwards the current total of oversubscribed resources.</span></div> +<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordtype">void</span> forwardOversubscribed();</div> +<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordtype">void</span> _forwardOversubscribed(</div> +<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<Resources></a>& oversubscribable);</div> +<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> </div> +<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="comment">// Helper functions to generate `UpdateSlaveMessage` for either</span></div> +<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="comment">// just updates to resource provider-related information, or both</span></div> +<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="comment">// resource provider-related information and oversubscribed</span></div> +<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="comment">// resources.</span></div> +<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  UpdateSlaveMessage generateResourceProviderUpdate() <span class="keyword">const</span>;</div> +<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  UpdateSlaveMessage generateUpdateSlaveMessage() <span class="keyword">const</span>;</div> +<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> </div> +<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordtype">void</span> handleResourceProviderMessage(</div> +<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keyword">const</span> <a class="code" href="classprocess_1_1Future.html">process::Future<ResourceProviderMessage></a>& message);</div> +<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> </div> +<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="keywordtype">void</span> addOperation(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div> +<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> </div> +<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="comment">// Transitions the operation, and recovers resource if the operation becomes</span></div> +<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">// terminal.</span></div> +<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordtype">void</span> updateOperation(</div> +<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation,</div> +<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keyword">const</span> UpdateOperationStatusMessage& update);</div> +<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> </div> +<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordtype">void</span> removeOperation(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div> +<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> </div> +<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* getOperation(<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="l00630"></a><span class="lineno"> 630</span> </div> +<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordtype">void</span> addResourceProvider(<a class="code" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html">ResourceProvider</a>* resourceProvider);</div> +<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1ResourceProvider.html">ResourceProvider</a>* getResourceProvider(<span class="keyword">const</span> ResourceProviderID& <span class="keywordtype">id</span>) <span class="keyword">const</span>;</div> <div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div> -<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordtype">double</span> _uptime_secs()</div> -<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  {</div> -<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">return</span> (<a class="code" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock::now</a>() - startTime).secs();</div> -<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div> -<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> </div> -<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordtype">double</span> _registered()</div> -<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  {</div> -<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">return</span> master.<a class="code" href="classOption.html#a4e3bf8416d95246f43c91f1b5c309323">isSome</a>() ? 1 : 0;</div> -<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  }</div> +<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordtype">void</span> apply(<a class="code" href="namespacecgroups_1_1blkio.html#a350b1eb57318afaea7700ab7786b55ef">Operation</a>* operation);</div> +<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div> +<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="comment">// Publish all resources that are needed to run the current set of</span></div> +<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="comment">// tasks and executors on the agent.</span></div> +<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="comment">// NOTE: The `additionalResources` parameter is for publishing</span></div> +<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="comment">// additional task resources when launching executors. Consider</span></div> +<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="comment">// removing this parameter once we revisited MESOS-600.</span></div> +<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <a class="code" href="classprocess_1_1Future.html">process::Future<Nothing></a> publishResources(</div> +<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keyword">const</span> <a class="code" href="classOption.html">Option<Resources></a>& additionalResources = <a class="code" href="structNone.html">None</a>());</div> <div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div> -<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordtype">double</span> _tasks_staging();</div> -<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordtype">double</span> _tasks_starting();</div> -<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordtype">double</span> _tasks_running();</div> -<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordtype">double</span> _tasks_killing();</div> -<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> </div> -<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordtype">double</span> _executors_registering();</div> -<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordtype">double</span> _executors_running();</div> -<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordtype">double</span> _executors_terminating();</div> -<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> </div> -<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordtype">double</span> _executor_directory_max_allowed_age_secs();</div> +<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="comment">// Gauge methods.</span></div> +<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordtype">double</span> _frameworks_active()</div> +<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  {</div> +<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(frameworks.size());</div> +<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  }</div> +<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> </div> +<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordtype">double</span> _uptime_secs()</div> +<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  {</div> +<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">return</span> (<a class="code" href="classprocess_1_1Clock.html#a24ed3f746bb6b3ddb1c52dce5e0ecd38">process::Clock::now</a>() - startTime).secs();</div> +<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  }</div> <div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div> -<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordtype">double</span> _resources_total(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div> -<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordtype">double</span> _resources_used(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div> -<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordtype">double</span> _resources_percent(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div> -<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> </div> -<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordtype">double</span> _resources_revocable_total(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div> -<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordtype">double</span> _resources_revocable_used(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div> -<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordtype">double</span> _resources_revocable_percent(<span class="keyword">const</span> std::string& <a class="code" href="namespaceos_1_1Shell.html#acfe16ef2b1146ad49a8651c0a457ce46">name</a>);</div> -<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> </div> -<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="comment">// Checks whether the two `SlaveInfo` objects are considered</span></div> -<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="comment">// compatible based on the value of the `--configuration_policy`</span></div> -<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="comment">// flag.</span></div> -<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <a class="code" href="classTry.html">Try<Nothing></a> compatible(</div> -<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keyword">const</span> SlaveInfo& previous,</div> -<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keyword">const</span> SlaveInfo& current) <span class="keyword">const</span>;</div> -<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> </div> -<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  protobuf::master::Capabilities requiredMasterCapabilities;</div> -<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> </div> -<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keyword">const</span> Flags <a class="code" href="decoder_8hpp.html#abb0829cce9dd20a40ae0d86890ae85c6">flags</a>;</div> -<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> </div> -<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1slave_1_1Slave.html#aba95e2a7762bb5df986048b05d03a22e">Http</a> <a class="code" href="namespacemesos_1_1uri.html#a5dff7c4a2df7be12fb642b5801c34f9f">http</a>;</div> -<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> </div> -<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  SlaveInfo info;</div> -<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div> -<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  protobuf::slave::Capabilities capabilities;</div> -<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> </div> -<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="comment">// Resources that are checkpointed by the slave.</span></div> -<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <a class="code" href="classmesos_1_1Resources.html">Resources</a> checkpointedResources;</div> -<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </div> -<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="comment">// The current total resources of the agent, i.e., `info.resources()` with</span></div> -<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="comment">// checkpointed resources applied an
<TRUNCATED>