You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2017/12/16 00:22:59 UTC

[3/4] mesos-site git commit: Updated the website built from mesos SHA: 3eaab8a.

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/4f4327f9/content/api/latest/c++/status__update__manager__process_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/status__update__manager__process_8hpp_source.html b/content/api/latest/c++/status__update__manager__process_8hpp_source.html
index 5a0683f..fff3090 100644
--- a/content/api/latest/c++/status__update__manager__process_8hpp_source.html
+++ b/content/api/latest/c++/status__update__manager__process_8hpp_source.html
@@ -98,978 +98,981 @@
 <div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="3rdparty_2stout_2include_2stout_2utils_8hpp.html">stout/utils.hpp</a>&gt;</span></div>
 <div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="uuid_8hpp.html">stout/uuid.hpp</a>&gt;</span></div>
 <div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div>
-<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="protobuf__utils_8hpp.html">common/protobuf_utils.hpp</a>&quot;</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="ftruncate_8hpp.html">stout/os/ftruncate.hpp</a>&gt;</span></div>
 <div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;</div>
-<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2constants_8hpp.html">slave/constants.hpp</a>&quot;</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="protobuf__utils_8hpp.html">common/protobuf_utils.hpp</a>&quot;</span></div>
 <div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="keyword">namespace </span>mesos {</div>
-<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">// `StatusUpdateManagerProcess` is responsible for</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// 1) Reliably sending status updates.</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">// 2) Checkpointing updates to disk (optional).</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">// 3) Receiving ACKs.</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">// 4) Recovering checkpointed status updates after failover.</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// It takes the following template parameters:</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">//  - `IDType` the type of the objects used to identify the managed streams.</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">//  - `CheckpointType` the type of the protobuf message written to checkpoint</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">//    the streams.</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">//  - `UpdateType` the type of the status updates that will be managed.</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">// NOTE: Unless first paused, this actor will forward updates as soon as</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">// possible; for example, during recovery or as soon as the first status update</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">// is processed.</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">// This process does NOT garbage collect any checkpointed state. The users of it</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment">// are responsible for the garbage collection of the status updates files.</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">// TODO(gkleiman): make `TaskStatusUpdateManager` use this actor (MESOS-8296).</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> IDType, <span class="keyword">typename</span> Checkpo<span class="keywordtype">int</span>Type, <span class="keyword">typename</span> UpdateType&gt;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">   76</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">StatusUpdateManagerProcess</a></div>
-<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;  : <span class="keyword">public</span> <a class="code" href="classProtobufProcess.html">ProtobufProcess</a>&lt;</div>
-<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        StatusUpdateManagerProcess&lt;IDType, CheckpointType, UpdateType&gt;&gt;</div>
-<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;{</div>
-<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;  <span class="comment">// This struct contains a map from stream ID to the stream state</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;  <span class="comment">// recovered for the status updates file.</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <span class="comment">// The stream state will be `None` if:</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="src_2slave_2constants_8hpp.html">slave/constants.hpp</a>&quot;</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">namespace </span>mesos {</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="keyword">namespace </span>internal {</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="comment">// `StatusUpdateManagerProcess` is responsible for</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="comment">// 1) Reliably sending status updates.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="comment">// 2) Checkpointing updates to disk (optional).</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="comment">// 3) Receiving ACKs.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="comment">// 4) Recovering checkpointed status updates after failover.</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="comment">// It takes the following template parameters:</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="comment">//  - `IDType` the type of the objects used to identify the managed streams.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">//  - `CheckpointType` the type of the protobuf message written to checkpoint</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="comment">//    the streams.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="comment">//  - `UpdateType` the type of the status updates that will be managed.</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="comment">// NOTE: Unless first paused, this actor will forward updates as soon as</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="comment">// possible; for example, during recovery or as soon as the first status update</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="comment">// is processed.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="comment">// This process does NOT garbage collect any checkpointed state. The users of it</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="comment">// are responsible for the garbage collection of the status updates files.</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="comment">// TODO(gkleiman): make `TaskStatusUpdateManager` use this actor (MESOS-8296).</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> IDType, <span class="keyword">typename</span> Checkpo<span class="keywordtype">int</span>Type, <span class="keyword">typename</span> UpdateType&gt;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">   78</a></span>&#160;<span class="keyword">class </span><a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">StatusUpdateManagerProcess</a></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;  : <span class="keyword">public</span> <a class="code" href="classProtobufProcess.html">ProtobufProcess</a>&lt;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        StatusUpdateManagerProcess&lt;IDType, CheckpointType, UpdateType&gt;&gt;</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;{</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="keyword">public</span>:</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;  <span class="comment">// This struct contains a map from stream ID to the stream state</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;  <span class="comment">// recovered for the status updates file.</span></div>
 <div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="comment">//   * The status updates file didn&#39;t exist.</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="comment">//   * The status updates file was empty.</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <span class="comment">// The stream state contains all the status updates (both acknowledged and</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="comment">// pending) added to the stream.</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="comment">// This struct also contains a count of the recoverable errors found during</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">// non-strict recovery.</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html">   94</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html">State</a></div>
-<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  {</div>
-<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html">   96</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html">StreamState</a></div>
-<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    {</div>
-<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a2d8368f778d37b116eb6308e171570f0">   98</a></span>&#160;      std::list&lt;UpdateType&gt; <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a2d8368f778d37b116eb6308e171570f0">updates</a>;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a156394001b71a453a74d7af4d686d2ab">   99</a></span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a156394001b71a453a74d7af4d686d2ab">terminated</a>;</div>
-<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div>
-<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#af46361932dd0c00fb873b16659f415a6">  101</a></span>&#160;      <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#af46361932dd0c00fb873b16659f415a6">StreamState</a>() : <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a2d8368f778d37b116eb6308e171570f0">updates</a>(), <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a156394001b71a453a74d7af4d686d2ab">terminated</a>(false) {}</div>
-<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    };</div>
-<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div>
-<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="comment">// The value will be `None` if the stream could not be recovered.</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a2e5e8f464fe376627713d446c2f29fc3">  105</a></span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;IDType, Option&lt;StreamState&gt;</a>&gt; <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a2e5e8f464fe376627713d446c2f29fc3">streams</a>;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a45494116292bcb2c0e345c932858bdab">  106</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a45494116292bcb2c0e345c932858bdab">errors</a>;</div>
-<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div>
-<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a7e4a15d5df405e0c869a826b6bafc974">  108</a></span>&#160;    <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a7e4a15d5df405e0c869a826b6bafc974">State</a>() : <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a2e5e8f464fe376627713d446c2f29fc3">streams</a>(), <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a45494116292bcb2c0e345c932858bdab">errors</a>(0) {}</div>
-<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  };</div>
-<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a681eb7df0ad9abc702b1dfa6e4a222cb">  111</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a681eb7df0ad9abc702b1dfa6e4a222cb">StatusUpdateManagerProcess</a>(</div>
-<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;      <span class="keyword">const</span> std::string&amp; <span class="keywordtype">id</span>,</div>
-<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;      <span class="keyword">const</span> std::string&amp; _statusUpdateType)</div>
-<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    : <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>::<a class="code" href="classprocess_1_1ProcessBase.html#a318038bacd95e4260864533f7cfe12fd">ProcessBase</a>(<a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>::ID::<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">generate</a>(id)),</div>
-<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      statusUpdateType(_statusUpdateType),</div>
-<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      paused(false) {}</div>
-<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div>
-<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a681eb7df0ad9abc702b1dfa6e4a222cb">StatusUpdateManagerProcess</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">StatusUpdateManagerProcess</a>&amp; that) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">StatusUpdateManagerProcess</a>&amp; <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ac5a0e5c29fe6a630c2b3d0f73dc79ddc">operator=</a>(</div>
-<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">StatusUpdateManagerProcess</a>&amp; that) = <span class="keyword">delete</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div>
-<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="comment">// Implementation.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <span class="comment">// The stream state will be `None` if:</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="comment">//   * The status updates file didn&#39;t exist.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <span class="comment">//   * The status updates file was empty.</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <span class="comment">// The stream state contains all the status updates (both acknowledged and</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <span class="comment">// pending) added to the stream.</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <span class="comment">// This struct also contains a count of the recoverable errors found during</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <span class="comment">// non-strict recovery.</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html">   96</a></span>&#160;  <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html">State</a></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  {</div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html">   98</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html">StreamState</a></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    {</div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a2d8368f778d37b116eb6308e171570f0">  100</a></span>&#160;      std::list&lt;UpdateType&gt; <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a2d8368f778d37b116eb6308e171570f0">updates</a>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a156394001b71a453a74d7af4d686d2ab">  101</a></span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a156394001b71a453a74d7af4d686d2ab">terminated</a>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#af46361932dd0c00fb873b16659f415a6">  103</a></span>&#160;      <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#af46361932dd0c00fb873b16659f415a6">StreamState</a>() : <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a2d8368f778d37b116eb6308e171570f0">updates</a>(), <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State_1_1StreamState.html#a156394001b71a453a74d7af4d686d2ab">terminated</a>(false) {}</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    };</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="comment">// The value will be `None` if the stream could not be recovered.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a2e5e8f464fe376627713d446c2f29fc3">  107</a></span>&#160;    <a class="code" href="classhashmap.html">hashmap&lt;IDType, Option&lt;StreamState&gt;</a>&gt; <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a2e5e8f464fe376627713d446c2f29fc3">streams</a>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a45494116292bcb2c0e345c932858bdab">  108</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a45494116292bcb2c0e345c932858bdab">errors</a>;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a7e4a15d5df405e0c869a826b6bafc974">  110</a></span>&#160;    <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a7e4a15d5df405e0c869a826b6bafc974">State</a>() : <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a2e5e8f464fe376627713d446c2f29fc3">streams</a>(), <a class="code" href="structmesos_1_1internal_1_1StatusUpdateManagerProcess_1_1State.html#a45494116292bcb2c0e345c932858bdab">errors</a>(0) {}</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;  };</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a681eb7df0ad9abc702b1dfa6e4a222cb">  113</a></span>&#160;  <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a681eb7df0ad9abc702b1dfa6e4a222cb">StatusUpdateManagerProcess</a>(</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      <span class="keyword">const</span> std::string&amp; <span class="keywordtype">id</span>,</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      <span class="keyword">const</span> std::string&amp; _statusUpdateType)</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    : <a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>::<a class="code" href="classprocess_1_1ProcessBase.html#a318038bacd95e4260864533f7cfe12fd">ProcessBase</a>(<a class="code" href="namespaceos.html#ae19e4161a51b86a1f330f3bf1dc75389">process</a>::ID::<a class="code" href="namespaceprocess_1_1ID.html#aeb11a48c9def1da169d8455a30d0ee39">generate</a>(id)),</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      statusUpdateType(_statusUpdateType),</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      paused(false) {}</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a681eb7df0ad9abc702b1dfa6e4a222cb">StatusUpdateManagerProcess</a>(<span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">StatusUpdateManagerProcess</a>&amp; that) = <span class="keyword">delete</span>;</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;  <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">StatusUpdateManagerProcess</a>&amp; <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ac5a0e5c29fe6a630c2b3d0f73dc79ddc">operator=</a>(</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      <span class="keyword">const</span> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html">StatusUpdateManagerProcess</a>&amp; that) = <span class="keyword">delete</span>;</div>
 <div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div>
-<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="comment">// Explicitly use `initialize` since we&#39;re overloading below.</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;  <span class="keyword">using</span> <a class="code" href="classprocess_1_1ProcessBase.html#a6baf49d6234eb638d068a98514e4ae3f">process::ProcessBase::initialize</a>;</div>
-<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div>
-<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="comment">// Initializes the actor with the necessary callbacks.</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// `_forwardCallback` is called whenever there is a new status update that</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="comment">// needs to be forwarded.</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="comment">// `_getPath` is called in order to generate the path of a status update</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// stream checkpoint file, given an `IDType`.</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ada5dee44c0cc874403efa6c2c3cde9d2">  133</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ada5dee44c0cc874403efa6c2c3cde9d2">initialize</a>(</div>
-<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;      <span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> UpdateType&amp;)&gt;&amp; _forwardCallback,</div>
-<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;      <span class="keyword">const</span> lambda::function&lt;<span class="keyword">const</span> std::string(<span class="keyword">const</span> IDType&amp;)&gt;&amp; _getPath)</div>
-<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  {</div>
-<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;    forwardCallback = _forwardCallback;</div>
-<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    getPath = _getPath;</div>
-<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  }</div>
-<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div>
-<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  <span class="comment">// Forwards the status update on the specified update stream.</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// If `checkpoint` is `false`, the update will be retried as long as it is in</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">// memory, but it will not be checkpointed.</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">  145</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>(</div>
-<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;      <span class="keyword">const</span> UpdateType&amp; <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>,</div>
-<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;      <span class="keyword">const</span> IDType&amp; streamId,</div>
-<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>)</div>
-<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;  {</div>
-<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;Received &quot;</span> &lt;&lt; statusUpdateType &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
-<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div>
-<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    <span class="keywordflow">if</span> (!streams.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(streamId)) {</div>
-<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a> =</div>
-<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        createStatusUpdateStream(</div>
-<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;            streamId,</div>
-<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;            update.has_framework_id()</div>
-<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;              ? <a class="code" href="classOption.html">Option&lt;FrameworkID&gt;</a>(update.framework_id())</div>
-<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;              : <a class="code" href="structNone.html">None</a>(),</div>
-<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;            <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>);</div>
-<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div>
-<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;      <span class="keywordflow">if</span> (create.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(create.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      }</div>
-<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    }</div>
-<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    CHECK(streams.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(streamId));</div>
-<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    StatusUpdateStream* stream = streams[streamId].<a class="code" href="classhashmap.html#a41f14039c11b5a1ab6c81add74192c9a">get</a>();</div>
-<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div>
-<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <span class="keywordflow">if</span> (update.has_latest_status()) {</div>
-<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
-<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;          <span class="stringliteral">&quot;Expected &quot;</span> + statusUpdateType + <span class="stringliteral">&quot; to not contain &#39;latest_status&#39;&quot;</span>);</div>
-<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    }</div>
-<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div>
-<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="comment">// Verify that we didn&#39;t get a non-checkpointable update for a</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <span class="comment">// stream that is checkpointable, and vice-versa.</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordflow">if</span> (stream-&gt;checkpointed() != <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>) {</div>
-<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
-<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;          <span class="stringliteral">&quot;Mismatched checkpoint value for &quot;</span> + statusUpdateType + <span class="stringliteral">&quot; &quot;</span> +</div>
-<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;          <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update) + <span class="stringliteral">&quot; (expected checkpoint=&quot;</span> +</div>
-<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;          <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(stream-&gt;checkpointed()) + <span class="stringliteral">&quot; actual checkpoint=&quot;</span> +</div>
-<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;          <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(checkpoint) + <span class="stringliteral">&quot;)&quot;</span>);</div>
-<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    }</div>
-<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div>
-<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">// Verify that the framework ID of the update matches the framework ID</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="comment">// of the stream.</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="keywordflow">if</span> (update.has_framework_id() != stream-&gt;frameworkId.isSome()) {</div>
-<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
-<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;          <span class="stringliteral">&quot;Mismatched framework ID for &quot;</span> + statusUpdateType +</div>
-<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;          <span class="stringliteral">&quot; &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update) + <span class="stringliteral">&quot; (expected &quot;</span> +</div>
-<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;          (stream-&gt;frameworkId.isSome()</div>
-<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;             ? <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(stream-&gt;frameworkId.get())</div>
-<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;             : <span class="stringliteral">&quot;no framework ID&quot;</span>) +</div>
-<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;          <span class="stringliteral">&quot; got &quot;</span> +</div>
-<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;          (update.has_framework_id()</div>
-<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;             ? <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update.framework_id())</div>
-<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;             : <span class="stringliteral">&quot;no framework ID&quot;</span>) +</div>
-<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;          <span class="stringliteral">&quot;)&quot;</span>);</div>
-<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    }</div>
-<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div>
-<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordflow">if</span> (update.has_framework_id() &amp;&amp;</div>
-<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        update.framework_id() != stream-&gt;frameworkId.get()) {</div>
-<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
-<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;          <span class="stringliteral">&quot;Mismatched framework ID for &quot;</span> + statusUpdateType +</div>
-<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;          <span class="stringliteral">&quot; &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update) +</div>
-<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;          <span class="stringliteral">&quot; (expected &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(stream-&gt;frameworkId.get()) +</div>
-<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;          <span class="stringliteral">&quot; actual &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update.framework_id()) + <span class="stringliteral">&quot;)&quot;</span>);</div>
-<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    }</div>
-<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div>
-<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="comment">// Handle the status update.</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;    <a class="code" href="classTry.html">Try&lt;bool&gt;</a> result = stream-&gt;update(update);</div>
-<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(result.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    }</div>
-<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;</div>
-<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="comment">// This only happens if the status update is a duplicate.</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="keywordflow">if</span> (!result.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()) {</div>
-<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    }</div>
-<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;</div>
-<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <span class="comment">// Forward the status update if this is at the front of the queue.</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    <span class="comment">// Subsequent status updates will be sent in `acknowledgement()`.</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <span class="keywordflow">if</span> (!paused &amp;&amp; stream-&gt;pending.size() == 1) {</div>
-<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      <a class="code" href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a>(stream-&gt;timeout);</div>
-<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;      <span class="keyword">const</span> <a class="code" href="classResult.html">Result&lt;UpdateType&gt;</a>&amp; next = stream-&gt;next();</div>
-<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      <span class="keywordflow">if</span> (next.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
-<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(next.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div>
-<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;      }</div>
-<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div>
-<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(next);</div>
-<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;      stream-&gt;timeout =</div>
-<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        forward(stream, next.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), <a class="code" href="namespacemesos_1_1internal_1_1slave.html#aeb8b9ceb7ee7fb45557ab4beeb3361a9">slave::STATUS_UPDATE_RETRY_INTERVAL_MIN</a>);</div>
-<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    }</div>
-<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div>
-<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  }</div>
-<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;</div>
-<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  <span class="comment">// Process the acknowledgment of a status update.</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="comment">// This will result in the next status update being forwarded.</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;  <span class="comment">// Implementation.</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;  <span class="comment">// Explicitly use `initialize` since we&#39;re overloading below.</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;  <span class="keyword">using</span> <a class="code" href="classprocess_1_1ProcessBase.html#a6baf49d6234eb638d068a98514e4ae3f">process::ProcessBase::initialize</a>;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <span class="comment">// Initializes the actor with the necessary callbacks.</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="comment">// `_forwardCallback` is called whenever there is a new status update that</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <span class="comment">// needs to be forwarded.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="comment">// `_getPath` is called in order to generate the path of a status update</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="comment">// stream checkpoint file, given an `IDType`.</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ada5dee44c0cc874403efa6c2c3cde9d2">  135</a></span>&#160;  <span class="keywordtype">void</span> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#ada5dee44c0cc874403efa6c2c3cde9d2">initialize</a>(</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;      <span class="keyword">const</span> lambda::function&lt;<span class="keywordtype">void</span>(<span class="keyword">const</span> UpdateType&amp;)&gt;&amp; _forwardCallback,</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;      <span class="keyword">const</span> lambda::function&lt;<span class="keyword">const</span> std::string(<span class="keyword">const</span> IDType&amp;)&gt;&amp; _getPath)</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;  {</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    forwardCallback = _forwardCallback;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    getPath = _getPath;</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;  }</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// Forwards the status update on the specified update stream.</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="comment">// If `checkpoint` is `false`, the update will be retried as long as it is in</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <span class="comment">// memory, but it will not be checkpointed.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">  147</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;Nothing&gt;</a> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>(</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keyword">const</span> UpdateType&amp; <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>,</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;      <span class="keyword">const</span> IDType&amp; streamId,</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      <span class="keywordtype">bool</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>)</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;  {</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;Received &quot;</span> &lt;&lt; statusUpdateType &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a1658b4adb952dc5e20465e31d572633b">update</a>;</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <span class="keywordflow">if</span> (!streams.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(streamId)) {</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      <a class="code" href="classTry.html">Try&lt;Nothing&gt;</a> <a class="code" href="namespacecgroups.html#a2ecc89636706df947027a4c3c2100fbe">create</a> =</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        createStatusUpdateStream(</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;            streamId,</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;            update.has_framework_id()</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;              ? <a class="code" href="classOption.html">Option&lt;FrameworkID&gt;</a>(update.framework_id())</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;              : <a class="code" href="structNone.html">None</a>(),</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;            <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>);</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;      <span class="keywordflow">if</span> (create.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(create.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;      }</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    }</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    CHECK(streams.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(streamId));</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    StatusUpdateStream* stream = streams[streamId].<a class="code" href="classhashmap.html#a41f14039c11b5a1ab6c81add74192c9a">get</a>();</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="keywordflow">if</span> (update.has_latest_status()) {</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;          <span class="stringliteral">&quot;Expected &quot;</span> + statusUpdateType + <span class="stringliteral">&quot; to not contain &#39;latest_status&#39;&quot;</span>);</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    }</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="comment">// Verify that we didn&#39;t get a non-checkpointable update for a</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="comment">// stream that is checkpointable, and vice-versa.</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    <span class="keywordflow">if</span> (stream-&gt;checkpointed() != <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>) {</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;          <span class="stringliteral">&quot;Mismatched checkpoint value for &quot;</span> + statusUpdateType + <span class="stringliteral">&quot; &quot;</span> +</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;          <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update) + <span class="stringliteral">&quot; (expected checkpoint=&quot;</span> +</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;          <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(stream-&gt;checkpointed()) + <span class="stringliteral">&quot; actual checkpoint=&quot;</span> +</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;          <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(checkpoint) + <span class="stringliteral">&quot;)&quot;</span>);</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    }</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="comment">// Verify that the framework ID of the update matches the framework ID</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="comment">// of the stream.</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;    <span class="keywordflow">if</span> (update.has_framework_id() != stream-&gt;frameworkId.isSome()) {</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;          <span class="stringliteral">&quot;Mismatched framework ID for &quot;</span> + statusUpdateType +</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;          <span class="stringliteral">&quot; &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update) + <span class="stringliteral">&quot; (expected &quot;</span> +</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;          (stream-&gt;frameworkId.isSome()</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;             ? <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(stream-&gt;frameworkId.get())</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;             : <span class="stringliteral">&quot;no framework ID&quot;</span>) +</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;          <span class="stringliteral">&quot; got &quot;</span> +</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;          (update.has_framework_id()</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;             ? <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update.framework_id())</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;             : <span class="stringliteral">&quot;no framework ID&quot;</span>) +</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;          <span class="stringliteral">&quot;)&quot;</span>);</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    }</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    <span class="keywordflow">if</span> (update.has_framework_id() &amp;&amp;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;        update.framework_id() != stream-&gt;frameworkId.get()) {</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;          <span class="stringliteral">&quot;Mismatched framework ID for &quot;</span> + statusUpdateType +</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;          <span class="stringliteral">&quot; &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update) +</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;          <span class="stringliteral">&quot; (expected &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(stream-&gt;frameworkId.get()) +</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;          <span class="stringliteral">&quot; actual &quot;</span> + <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(update.framework_id()) + <span class="stringliteral">&quot;)&quot;</span>);</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    }</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="comment">// Handle the status update.</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    <a class="code" href="classTry.html">Try&lt;bool&gt;</a> result = stream-&gt;update(update);</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(result.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    }</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    <span class="comment">// This only happens if the status update is a duplicate.</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;    <span class="keywordflow">if</span> (!result.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()) {</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    }</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    <span class="comment">// Forward the status update if this is at the front of the queue.</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="comment">// Subsequent status updates will be sent in `acknowledgement()`.</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <span class="keywordflow">if</span> (!paused &amp;&amp; stream-&gt;pending.size() == 1) {</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;      <a class="code" href="stout_2include_2stout_2check_8hpp.html#ab8738e43a60086f3b434c0278933e85e">CHECK_NONE</a>(stream-&gt;timeout);</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      <span class="keyword">const</span> <a class="code" href="classResult.html">Result&lt;UpdateType&gt;</a>&amp; next = stream-&gt;next();</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;      <span class="keywordflow">if</span> (next.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(next.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;      }</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      <a class="code" href="stout_2include_2stout_2check_8hpp.html#aee320e7c6e107071f4b85d4cc135a265">CHECK_SOME</a>(next);</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;      stream-&gt;timeout =</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;        forward(stream, next.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), <a class="code" href="namespacemesos_1_1internal_1_1slave.html#aeb8b9ceb7ee7fb45557ab4beeb3361a9">slave::STATUS_UPDATE_RETRY_INTERVAL_MIN</a>);</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    }</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;  }</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="comment">// Process the acknowledgment of a status update.</span></div>
 <div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="comment">// Returns `true` if the ACK is handled successfully (e.g., checkpointed)</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="comment">//                and the task&#39;s status update stream is not terminated.</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <span class="comment">//         `false` same as above except the status update stream is</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="comment">//                terminated.</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  <span class="comment">//         `Failure` if there are any errors (e.g., duplicate, checkpointing).</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a9aa45e70ff97941eefdc582b410c1221">  246</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;bool&gt;</a> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a9aa45e70ff97941eefdc582b410c1221">acknowledgement</a>(</div>
-<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      <span class="keyword">const</span> IDType&amp; streamId,</div>
-<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;      <span class="keyword">const</span> <a class="code" href="structid_1_1UUID.html">id::UUID</a>&amp; uuid)</div>
-<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  {</div>
-<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;Received &quot;</span> &lt;&lt; statusUpdateType</div>
-<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;              &lt;&lt; <span class="stringliteral">&quot; acknowledgement (UUID: &quot;</span> &lt;&lt; uuid &lt;&lt; <span class="stringliteral">&quot;)&quot;</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;              &lt;&lt; <span class="stringliteral">&quot; for stream &quot;</span> &lt;&lt; <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId);</div>
-<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div>
-<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <span class="comment">// This might happen if we haven&#39;t completed recovery yet or if the</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <span class="comment">// acknowledgement is for a stream that has been cleaned up.</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <span class="keywordflow">if</span> (!streams.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(streamId)) {</div>
-<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
-<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;          <span class="stringliteral">&quot;Cannot find the &quot;</span> + statusUpdateType + <span class="stringliteral">&quot; stream &quot;</span> +</div>
-<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;          <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId));</div>
-<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    }</div>
-<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div>
-<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    StatusUpdateStream* stream = streams[streamId].<a class="code" href="classhashmap.html#a41f14039c11b5a1ab6c81add74192c9a">get</a>();</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  <span class="comment">// This will result in the next status update being forwarded.</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;  <span class="comment">//</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  <span class="comment">// Returns `true` if the ACK is handled successfully (e.g., checkpointed)</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="comment">//                and the task&#39;s status update stream is not terminated.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;  <span class="comment">//         `false` same as above except the status update stream is</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  <span class="comment">//                terminated.</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;  <span class="comment">//         `Failure` if there are any errors (e.g., duplicate, checkpointing).</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a9aa45e70ff97941eefdc582b410c1221">  248</a></span>&#160;  <a class="code" href="classprocess_1_1Future.html">process::Future&lt;bool&gt;</a> <a class="code" href="classmesos_1_1internal_1_1StatusUpdateManagerProcess.html#a9aa45e70ff97941eefdc582b410c1221">acknowledgement</a>(</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;      <span class="keyword">const</span> IDType&amp; streamId,</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      <span class="keyword">const</span> <a class="code" href="structid_1_1UUID.html">id::UUID</a>&amp; uuid)</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  {</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    LOG(INFO) &lt;&lt; <span class="stringliteral">&quot;Received &quot;</span> &lt;&lt; statusUpdateType</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;              &lt;&lt; <span class="stringliteral">&quot; acknowledgement (UUID: &quot;</span> &lt;&lt; uuid &lt;&lt; <span class="stringliteral">&quot;)&quot;</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;              &lt;&lt; <span class="stringliteral">&quot; for stream &quot;</span> &lt;&lt; <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId);</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <span class="comment">// This might happen if we haven&#39;t completed recovery yet or if the</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <span class="comment">// acknowledgement is for a stream that has been cleaned up.</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;    <span class="keywordflow">if</span> (!streams.<a class="code" href="classhashmap.html#ac142b3f8b73c76d5d4545bbd299007e5">contains</a>(streamId)) {</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;          <span class="stringliteral">&quot;Cannot find the &quot;</span> + statusUpdateType + <span class="stringliteral">&quot; stream &quot;</span> +</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;          <a class="code" href="namespacens.html#a28116b46e6543597a11733424cd1aa20">stringify</a>(streamId));</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    }</div>
 <div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div>
-<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <span class="comment">// Handle the acknowledgement.</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <a class="code" href="classTry.html">Try&lt;bool&gt;</a> result = stream-&gt;acknowledgement(uuid);</div>
-<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;</div>
-<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(result.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    }</div>
-<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div>
-<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    <span class="keywordflow">if</span> (!result.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()) {</div>
-<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
-<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;          <span class="stringliteral">&quot;Duplicate &quot;</span> + statusUpdateType + <span class="stringliteral">&quot; acknowledgement&quot;</span>);</div>
-<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    }</div>
-<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;</div>
-<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    stream-&gt;timeout = <a class="code" href="structNone.html">None</a>();</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    StatusUpdateStream* stream = streams[streamId].<a class="code" href="classhashmap.html#a41f14039c11b5a1ab6c81add74192c9a">get</a>();</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    <span class="comment">// Handle the acknowledgement.</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <a class="code" href="classTry.html">Try&lt;bool&gt;</a> result = stream-&gt;acknowledgement(uuid);</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(result.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    }</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <span class="keywordflow">if</span> (!result.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>()) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;          <span class="stringliteral">&quot;Duplicate &quot;</span> + statusUpdateType + <span class="stringliteral">&quot; acknowledgement&quot;</span>);</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    }</div>
 <div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div>
-<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    <span class="comment">// Get the next update in the queue.</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keyword">const</span> <a class="code" href="classResult.html">Result&lt;UpdateType&gt;</a>&amp; next = stream-&gt;next();</div>
-<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    <span class="keywordflow">if</span> (next.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
-<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      <span class="keywordflow">return</span> <a class="code" href="structprocess_1_1Failure.html">process::Failure</a>(next.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div>
-<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    }</div>
-<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div>
-<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <span class="keywordtype">bool</span> terminated = stream-&gt;terminated;</div>
-<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <span class="keywordflow">if</span> (terminated) {</div>
-<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;      <span class="keywordflow">if</span> (next.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div>
-<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;        LOG(WARNING) &lt;&lt; <span class="stringliteral">&quot;Acknowledged a terminal &quot;</span> &lt;&lt; statusUpdateType</div>
-<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;                     &lt;&lt; <span class="stringliteral">&quot; but updates are still pending&quot;</span>;</div>
-<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      }</div>
-<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;      cleanupStatusUpdateStream(streamId);</div>
-<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!paused &amp;&amp; next.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div>
-<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;      <span class="comment">// Forward the next queued status update.</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      stream-&gt;timeout =</div>
-<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        forward(stream, next.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>(), <a class="code" href="namespacemesos_1_1internal_1_1slave.html#aeb8b9ceb7ee7fb45557ab4beeb3361a9">slave::STATUS_UPDATE_RETRY_INTERVAL_MIN</a>);</div>
-<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    }</div>
-<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div>
-<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keywordflow">return</span> !terminated;</div>
-<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  }</div>
-<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div>
-<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <span class="comment">// Recovers the status update manager&#39;s state using the supplied stream IDs.</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  <span class="comment">//</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;  <span class="comment">// Returns:</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="comment">//  - The recovered state if successful.</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;  <span class="comment">//  - The recovered state, including the number of errors encountered, if</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  <span class="comment">//    `strict == false` and any of the streams couldn&#39;t be recovered.</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;  <span class="comment">//  - A `Failure` if `strict == true` and any of the streams couldn&#39;t be</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;  <span class="comment">//    recovered.</span></div>
-<div class="line"><a name="l00308"></a

<TRUNCATED>