You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by gi...@apache.org on 2018/01/30 04:22:41 UTC
[2/5] mesos-site git commit: Updated the website built from mesos
SHA: 2bb7189.
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/7167b7ed/content/api/latest/c++/src_2slave_2state_8hpp_source.html
----------------------------------------------------------------------
diff --git a/content/api/latest/c++/src_2slave_2state_8hpp_source.html b/content/api/latest/c++/src_2slave_2state_8hpp_source.html
index 0222982..0717178 100644
--- a/content/api/latest/c++/src_2slave_2state_8hpp_source.html
+++ b/content/api/latest/c++/src_2slave_2state_8hpp_source.html
@@ -132,401 +132,416 @@
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// `T` may be either a single protobuf message or a sequence of messages</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// if `T` is a specialization of `google::protobuf::RepeatedPtrField`.</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
-<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state.html#aa6c82835d873c6b255edf7eb079187e9"> 81</a></span> <a class="code" href="classTry.html">Try<T></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state.html#aa6c82835d873c6b255edf7eb079187e9">read</a>(<span class="keyword">const</span> std::string& path)</div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state.html#adeb89c1623e8d5af457b5b130aceac1d"> 81</a></span> <a class="code" href="classResult.html">Result<T></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state.html#adeb89c1623e8d5af457b5b130aceac1d">read</a>(<span class="keyword">const</span> std::string& path)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classTry.html">Try<T></a> result = ::protobuf::read<T>(path);</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span> (result.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(result.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classResult.html">Result<T></a> result = ::protobuf::read<T>(path);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span> (result.<a class="code" href="classResult.html#a85eaa52037223d71092e65701c166562">isSome</a>()) {</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="namespacemesos.html#acd6e7795d91704a2923093e05c5ef62a">upgradeResources</a>(&result.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>());</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="namespacemesos.html#acd6e7795d91704a2923093e05c5ef62a">upgradeResources</a>(&result.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">template</span> <></div>
-<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a94259b7042cc94c4050ebffb2ad0dc2e"> 93</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<std::string></a> read<std::string>(<span class="keyword">const</span> std::string& path)</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(path);</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword">template</span> <></div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a6a9aaf261339ed2c48a9c5d0b54d498a"> 100</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Resources></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a6a9aaf261339ed2c48a9c5d0b54d498a">read<Resources></a>(<span class="keyword">const</span> std::string& path)</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="classTry.html">Try<google::protobuf::RepeatedPtrField<Resource></a>> resources =</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  read<google::protobuf::RepeatedPtrField<Resource>>(path);</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span> (resources.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(resources.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// While we return a `Result<string>` here in order to keep the return</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// type of `state::read` consistent, the `None` case does not arise here.</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// That is, an empty file will result in an empty string, rather than</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// the `Result` ending up in a `None` state.</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a19c92fe2f0998dbbc281938ca636b3ca"> 97</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<std::string></a> read<std::string>(<span class="keyword">const</span> std::string& path)</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceos.html#aa1d97ff0a93229e1fe6b33e3e2d567f7">os::read</a>(path);</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> }</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a6bdbe39082783fa5f8073104c5aa5b3c"> 104</a></span> <span class="keyword">inline</span> <a class="code" href="classResult.html">Result<Resources></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state.html#a6bdbe39082783fa5f8073104c5aa5b3c">read<Resources></a>(<span class="keyword">const</span> std::string& path)</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classResult.html">Result<google::protobuf::RepeatedPtrField<Resource></a>> resources =</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  read<google::protobuf::RepeatedPtrField<Resource>>(path);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> std::move(resources.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (resources.<a class="code" href="classResult.html#aeca16ad17d299ad885c9b46c83b12a3d">isError</a>()) {</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(resources.<a class="code" href="classResult.html#a521adf96f5c27d26d6b1d580aae8aaee">error</a>());</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div>
-<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html"> 113</a></span> <span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div>
-<div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467"> 115</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">const</span> std::string& path,</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">const</span> std::string& message)</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">return ::os::write</a>(path, message);</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (resources.<a class="code" href="classResult.html#ac2cdc0db9f9d29a5bb2f1cf19c29da49">isNone</a>()) {</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="structNone.html">None</a>();</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> std::move(resources.<a class="code" href="classResult.html#aedf79f3b14dcda5791b84a64ada4d412">get</a>());</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html"> 121</a></span> <span class="keyword">namespace </span>internal {</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keyword">template</span> <</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">typename</span> T,</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">typename</span> std::enable_if<</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  std::is_convertible<T*, google::protobuf::Message*>::value,</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">int</span>><a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">::type</a> = 0></div>
-<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#ab49e1bd389c03a72198895d11a263418"> 128</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(<span class="keyword">const</span> std::string& path, T message)</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> {</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// If the `Try` from `downgradeResources` returns an `Error`, we currently</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// continue to checkpoint the resources in a partially downgraded state.</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// This implies that an agent with refined reservations cannot be downgraded</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// to versions before reservation refinement support, which was introduced</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// in 1.4.0.</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// TODO(mpark): Do something smarter with the result once</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// something like an agent recovery capability is introduced.</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="namespacemesos.html#ab6aedf5b9bda94224599094cb8140c83">downgradeResources</a>(&message);</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">return ::protobuf::write</a>(path, message);</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div>
-<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a3c2fe175512a56ae2e3cd696306961ce"> 143</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">const</span> std::string& path,</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  google::protobuf::RepeatedPtrField<Resource> resources)</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// If the `Try` from `downgradeResources` returns an `Error`, we currently</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// continue to checkpoint the resources in a partially downgraded state.</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// This implies that an agent with refined reservations cannot be downgraded</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// to versions before reservation refinement support, which was introduced</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// in 1.4.0.</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// TODO(mpark): Do something smarter with the result once</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// something like an agent recovery capability is introduced.</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="namespacemesos.html#ab6aedf5b9bda94224599094cb8140c83">downgradeResources</a>(&resources);</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">return ::protobuf::write</a>(path, resources);</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div>
-<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a5e1e0e7948227db3dc2470f4792aee7d"> 160</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">const</span> std::string& path,</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& resources)</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">const</span> google::protobuf::RepeatedPtrField<Resource>& messages = resources;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(path, messages);</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467"> 123</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">const</span> std::string& path,</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">const</span> std::string& message)</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">return ::os::write</a>(path, message);</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keyword">template</span> <</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">typename</span> T,</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">typename</span> std::enable_if<</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  std::is_convertible<T*, google::protobuf::Message*>::value,</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">int</span>><a class="code" href="namespacemesos_1_1internal_1_1fs.html#a2343e2642db514496ba8380776487fba">::type</a> = 0></div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#ab49e1bd389c03a72198895d11a263418"> 136</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(<span class="keyword">const</span> std::string& path, T message)</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// If the `Try` from `downgradeResources` returns an `Error`, we currently</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// continue to checkpoint the resources in a partially downgraded state.</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// This implies that an agent with refined reservations cannot be downgraded</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// to versions before reservation refinement support, which was introduced</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// in 1.4.0.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">// TODO(mpark): Do something smarter with the result once</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// something like an agent recovery capability is introduced.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="namespacemesos.html#ab6aedf5b9bda94224599094cb8140c83">downgradeResources</a>(&message);</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">return ::protobuf::write</a>(path, message);</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> }</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a3c2fe175512a56ae2e3cd696306961ce"> 151</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">const</span> std::string& path,</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  google::protobuf::RepeatedPtrField<Resource> resources)</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// If the `Try` from `downgradeResources` returns an `Error`, we currently</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// continue to checkpoint the resources in a partially downgraded state.</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// This implies that an agent with refined reservations cannot be downgraded</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// to versions before reservation refinement support, which was introduced</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// in 1.4.0.</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// TODO(mpark): Do something smarter with the result once</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// something like an agent recovery capability is introduced.</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="namespacemesos.html#ab6aedf5b9bda94224599094cb8140c83">downgradeResources</a>(&resources);</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="namespacemesos_1_1internal_1_1log_1_1protocol.html#a66ff2d5af4db53227f787281c0765d8d">return ::protobuf::write</a>(path, resources);</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> }</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> } <span class="comment">// namespace internal {</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="comment">// Thin wrapper to checkpoint data to disk and perform the necessary</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment">// error checking. It checkpoints an instance of T at the given path.</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="comment">// We can checkpoint anything as long as T is supported by</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="comment">// internal::checkpoint. Currently the list of supported Ts are:</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="comment">// - std::string</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="comment">// - google::protobuf::Message</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="comment">// - google::protobuf::RepeatedPtrField<T></span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// - mesos::Resources</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="comment">//</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// NOTE: We provide atomic (all-or-nothing) semantics here by always</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// writing to a temporary file first then using os::rename to atomically</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// move it to the desired path.</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
-<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state.html#ae69c6d783deb9ff0947c2ecce6f37192"> 184</a></span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state.html#ae69c6d783deb9ff0947c2ecce6f37192">checkpoint</a>(<span class="keyword">const</span> std::string& path, <span class="keyword">const</span> T& t)</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// Create the base directory.</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  std::string <a class="code" href="namespaceprocess.html#a373bd5e2bd8f2694e4589293af477854">base</a> = <a class="code" href="classPath.html">Path</a>(path).<a class="code" href="classPath.html#a0449e93ffb615ef7fd198ef03dd1100c">dirname</a>();</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">mkdir</a> = <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">os::mkdir</a>(base);</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span> (mkdir.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to create directory '"</span> + base + <span class="stringliteral">"': "</span> + mkdir.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// NOTE: We create the temporary file at 'base/XXXXXX' to make sure</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">// rename below does not cross devices (MESOS-2319).</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">//</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// TODO(jieyu): It's possible that the temporary file becomes</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// dangling if slave crashes or restarts while checkpointing.</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// Consider adding a way to garbage collect them.</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a> = <a class="code" href="namespaceos.html#a913abd73990a86de728ab7141b714b85">os::mktemp</a>(<a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(base, <span class="stringliteral">"XXXXXX"</span>));</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (temp.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to create temporary file: "</span> + temp.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// Now checkpoint the instance of T to the temporary file.</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state.html#ae69c6d783deb9ff0947c2ecce6f37192">checkpoint</a> = <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">internal::checkpoint</a>(temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), t);</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span> (checkpoint.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// Try removing the temporary file on error.</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a>(temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to write temporary file '"</span> + temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>() +</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="stringliteral">"': "</span> + checkpoint.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">// Rename the temporary file to the path.</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a">rename</a> = <a class="code" href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a">os::rename</a>(temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), path);</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span> (rename.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// Try removing the temporary file on error.</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a>(temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to rename '"</span> + temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>() + <span class="stringliteral">"' to '"</span> +</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  path + <span class="stringliteral">"': "</span> + rename.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div>
+<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a5e1e0e7948227db3dc2470f4792aee7d"> 168</a></span> <span class="keyword">inline</span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> std::string& path,</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">const</span> <a class="code" href="classmesos_1_1Resources.html">Resources</a>& resources)</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> {</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">const</span> google::protobuf::RepeatedPtrField<Resource>& messages = resources;</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">checkpoint</a>(path, messages);</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> }</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> } <span class="comment">// namespace internal {</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="comment">// Thin wrapper to checkpoint data to disk and perform the necessary</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// error checking. It checkpoints an instance of T at the given path.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// We can checkpoint anything as long as T is supported by</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// internal::checkpoint. Currently the list of supported Ts are:</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="comment">// - std::string</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// - google::protobuf::Message</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment">// - google::protobuf::RepeatedPtrField<T></span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// - mesos::Resources</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// NOTE: We provide atomic (all-or-nothing) semantics here by always</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment">// writing to a temporary file first then using os::rename to atomically</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// move it to the desired path.</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="namespacemesos_1_1internal_1_1slave_1_1state.html#ae69c6d783deb9ff0947c2ecce6f37192"> 192</a></span> <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state.html#ae69c6d783deb9ff0947c2ecce6f37192">checkpoint</a>(<span class="keyword">const</span> std::string& path, <span class="keyword">const</span> T& t)</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> {</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Create the base directory.</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  std::string <a class="code" href="namespaceprocess.html#a373bd5e2bd8f2694e4589293af477854">base</a> = <a class="code" href="classPath.html">Path</a>(path).<a class="code" href="classPath.html#a0449e93ffb615ef7fd198ef03dd1100c">dirname</a>();</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">mkdir</a> = <a class="code" href="namespaceos.html#af0f3343df38b8241f66750a273d4a5a6">os::mkdir</a>(base);</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (mkdir.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to create directory '"</span> + base + <span class="stringliteral">"': "</span> + mkdir.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// NOTE: We create the temporary file at 'base/XXXXXX' to make sure</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// rename below does not cross devices (MESOS-2319).</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">//</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// TODO(jieyu): It's possible that the temporary file becomes</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// dangling if slave crashes or restarts while checkpointing.</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// Consider adding a way to garbage collect them.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="classTry.html">Try<std::string></a> <a class="code" href="namespaceos.html#aa3debc8caa054e7a0a3bfe4aa42aae07">temp</a> = <a class="code" href="namespaceos.html#a913abd73990a86de728ab7141b714b85">os::mktemp</a>(<a class="code" href="namespacepath.html#aa86b16a2171cec90bb3337930513ef0f">path::join</a>(base, <span class="stringliteral">"XXXXXX"</span>));</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span> (temp.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to create temporary file: "</span> + temp.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Now checkpoint the instance of T to the temporary file.</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state.html#ae69c6d783deb9ff0947c2ecce6f37192">checkpoint</a> = <a class="code" href="namespacemesos_1_1internal_1_1slave_1_1state_1_1internal.html#a749d698dcb6786428fa589b72cee6467">internal::checkpoint</a>(temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), t);</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span> (checkpoint.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// Try removing the temporary file on error.</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a>(temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to write temporary file '"</span> + temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>() +</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="stringliteral">"': "</span> + checkpoint.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// Rename the temporary file to the path.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classTry.html">Try<Nothing></a> <a class="code" href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a">rename</a> = <a class="code" href="namespaceos.html#a4cdd0a41f89eeb7cc908f3dec0f7f15a">os::rename</a>(temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>(), path);</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span> (rename.<a class="code" href="classTry.html#a0b98f95163b8a38daafd1651b043a276">isError</a>()) {</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// Try removing the temporary file on error.</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="namespaceos.html#ac1c8ce3595084d78291f98c2be9f62ba">os::rm</a>(temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>());</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment">// NOTE: The *State structs (e.g., TaskState, RunState, etc) are</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// defined in reverse dependency order because many of them have</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="comment">// Option<*State> dependencies which means we need them declared in</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// their entirety in order to compile because things like</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="comment">// Option<*State> need to know the final size of the types.</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div>
-<div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html"> 235</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html">TaskState</a></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> {</div>
-<div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a944483d9d8c1750845b41cd2b96b44ad"> 237</a></span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a944483d9d8c1750845b41cd2b96b44ad">TaskState</a>() : <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a5c14a61ac614a9f185c37124db32b480">errors</a>(0) {}</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<TaskState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a2e49a328dccecaaef44bb547c79b1e0d">recover</a>(</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keyword">const</span> std::string& rootDir,</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">const</span> ExecutorID& executorId,</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">const</span> ContainerID& containerId,</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keyword">const</span> TaskID& taskId,</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordtype">bool</span> strict);</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div>
-<div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#aef99d901e03fb95eaed8ddfbbf1e2cf7"> 248</a></span>  TaskID <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#aef99d901e03fb95eaed8ddfbbf1e2cf7">id</a>;</div>
-<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#ab88ce30e1cafe8719e7aa069df82df16"> 249</a></span>  <a class="code" href="classOption.html">Option<Task></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#ab88ce30e1cafe8719e7aa069df82df16">info</a>;</div>
-<div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a099e206bf4dad04e3dc7348df3a22024"> 250</a></span>  std::vector<StatusUpdate> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a099e206bf4dad04e3dc7348df3a22024">updates</a>;</div>
-<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a45df01b06cc4e27be1631f4f9c85e986"> 251</a></span>  <a class="code" href="classhashset.html">hashset<id::UUID></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a45df01b06cc4e27be1631f4f9c85e986">acks</a>;</div>
-<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a5c14a61ac614a9f185c37124db32b480"> 252</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a5c14a61ac614a9f185c37124db32b480">errors</a>;</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> };</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> <a class="code" href="classError.html">Error</a>(<span class="stringliteral">"Failed to rename '"</span> + temp.<a class="code" href="classTry.html#a7be0768038e0628632492edf6cc1515a">get</a>() + <span class="stringliteral">"' to '"</span> +</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  path + <span class="stringliteral">"': "</span> + rename.<a class="code" href="classTry.html#aec4a11ddd3c036e889d90b7eb6258ba7">error</a>());</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <a class="code" href="structNothing.html">Nothing</a>();</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">// NOTE: The *State structs (e.g., TaskState, RunState, etc) are</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// defined in reverse dependency order because many of them have</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment">// Option<*State> dependencies which means we need them declared in</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment">// their entirety in order to compile because things like</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment">// Option<*State> need to know the final size of the types.</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html"> 243</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html">TaskState</a></div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div>
+<div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a944483d9d8c1750845b41cd2b96b44ad"> 245</a></span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a944483d9d8c1750845b41cd2b96b44ad">TaskState</a>() : <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a5c14a61ac614a9f185c37124db32b480">errors</a>(0) {}</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<TaskState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a2e49a328dccecaaef44bb547c79b1e0d">recover</a>(</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">const</span> std::string& rootDir,</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">const</span> ExecutorID& executorId,</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">const</span> ContainerID& containerId,</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keyword">const</span> TaskID& taskId,</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordtype">bool</span> strict);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div>
-<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html"> 256</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html">RunState</a></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> {</div>
-<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a77a409b68769564c0148e971bd929db3"> 258</a></span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a77a409b68769564c0148e971bd929db3">RunState</a>() : <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a7b5b3e41c7b2062355c473cab8c7b0bb">completed</a>(false), <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a036cd904332629bc05c752ac6cd094e9">errors</a>(0) {}</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<RunState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a4e08e42bbb81e7af57d648331268fcc1">recover</a>(</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">const</span> std::string& rootDir,</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keyword">const</span> ExecutorID& executorId,</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">const</span> ContainerID& containerId,</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordtype">bool</span> strict);</div>
+<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#aef99d901e03fb95eaed8ddfbbf1e2cf7"> 256</a></span>  TaskID <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#aef99d901e03fb95eaed8ddfbbf1e2cf7">id</a>;</div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#ab88ce30e1cafe8719e7aa069df82df16"> 257</a></span>  <a class="code" href="classOption.html">Option<Task></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#ab88ce30e1cafe8719e7aa069df82df16">info</a>;</div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a099e206bf4dad04e3dc7348df3a22024"> 258</a></span>  std::vector<StatusUpdate> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a099e206bf4dad04e3dc7348df3a22024">updates</a>;</div>
+<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a45df01b06cc4e27be1631f4f9c85e986"> 259</a></span>  <a class="code" href="classhashset.html">hashset<id::UUID></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a45df01b06cc4e27be1631f4f9c85e986">acks</a>;</div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a5c14a61ac614a9f185c37124db32b480"> 260</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1TaskState.html#a5c14a61ac614a9f185c37124db32b480">errors</a>;</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> };</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html"> 264</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html">RunState</a></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> {</div>
+<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a77a409b68769564c0148e971bd929db3"> 266</a></span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a77a409b68769564c0148e971bd929db3">RunState</a>() : <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a7b5b3e41c7b2062355c473cab8c7b0bb">completed</a>(false), <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a036cd904332629bc05c752ac6cd094e9">errors</a>(0) {}</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div>
-<div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af72a5cac973ca74938bd0b060dc905fd"> 268</a></span>  <a class="code" href="classOption.html">Option<ContainerID></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af72a5cac973ca74938bd0b060dc905fd">id</a>;</div>
-<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a6b059882bec3801cca1567f477e89881"> 269</a></span>  <a class="code" href="classhashmap.html">hashmap<TaskID, TaskState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a6b059882bec3801cca1567f477e89881">tasks</a>;</div>
-<div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a6214c5d19e5e98df06bd669a77eaa8cd"> 270</a></span>  <a class="code" href="classOption.html">Option<pid_t></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a6214c5d19e5e98df06bd669a77eaa8cd">forkedPid</a>;</div>
-<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af5bbb78d5d870816bed066dc4d55c8ea"> 271</a></span>  <a class="code" href="classOption.html">Option<process::UPID></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af5bbb78d5d870816bed066dc4d55c8ea">libprocessPid</a>;</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="comment">// This represents if the executor is connected via HTTP. It can be None()</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// when the connection type is unknown.</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#ab96ac551f70a53cda09bece97ba8bfc7"> 275</a></span>  <a class="code" href="classOption.html">Option<bool></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#ab96ac551f70a53cda09bece97ba8bfc7">http</a>;</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// Executor terminated and all its updates acknowledged.</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a7b5b3e41c7b2062355c473cab8c7b0bb"> 278</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a7b5b3e41c7b2062355c473cab8c7b0bb">completed</a>;</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div>
-<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a036cd904332629bc05c752ac6cd094e9"> 280</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a036cd904332629bc05c752ac6cd094e9">errors</a>;</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> };</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div>
-<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html"> 284</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html">ExecutorState</a></div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> {</div>
-<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a1520e67b022f806c5bf6397cb562f483"> 286</a></span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a1520e67b022f806c5bf6397cb562f483">ExecutorState</a>() : <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#acf454ebfad71bed1e2c2de161f8b4477">errors</a>(0) {}</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<RunState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a4e08e42bbb81e7af57d648331268fcc1">recover</a>(</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">const</span> std::string& rootDir,</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">const</span> ExecutorID& executorId,</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">const</span> ContainerID& containerId,</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">bool</span> strict);</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af72a5cac973ca74938bd0b060dc905fd"> 276</a></span>  <a class="code" href="classOption.html">Option<ContainerID></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af72a5cac973ca74938bd0b060dc905fd">id</a>;</div>
+<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a6b059882bec3801cca1567f477e89881"> 277</a></span>  <a class="code" href="classhashmap.html">hashmap<TaskID, TaskState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a6b059882bec3801cca1567f477e89881">tasks</a>;</div>
+<div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a6214c5d19e5e98df06bd669a77eaa8cd"> 278</a></span>  <a class="code" href="classOption.html">Option<pid_t></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a6214c5d19e5e98df06bd669a77eaa8cd">forkedPid</a>;</div>
+<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af5bbb78d5d870816bed066dc4d55c8ea"> 279</a></span>  <a class="code" href="classOption.html">Option<process::UPID></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#af5bbb78d5d870816bed066dc4d55c8ea">libprocessPid</a>;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// This represents if the executor is connected via HTTP. It can be None()</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">// when the connection type is unknown.</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#ab96ac551f70a53cda09bece97ba8bfc7"> 283</a></span>  <a class="code" href="classOption.html">Option<bool></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#ab96ac551f70a53cda09bece97ba8bfc7">http</a>;</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">// Executor terminated and all its updates acknowledged.</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a7b5b3e41c7b2062355c473cab8c7b0bb"> 286</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a7b5b3e41c7b2062355c473cab8c7b0bb">completed</a>;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<ExecutorState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a873476d4c6aa5c570b83e333174af671">recover</a>(</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keyword">const</span> std::string& rootDir,</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keyword">const</span> ExecutorID& executorId,</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordtype">bool</span> strict);</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div>
-<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#ae4acfebbe3d16f5d032ddcaea1ab775e"> 295</a></span>  ExecutorID <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#ae4acfebbe3d16f5d032ddcaea1ab775e">id</a>;</div>
-<div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a094771a0260a6cb9c5a4c28fa67602e4"> 296</a></span>  <a class="code" href="classOption.html">Option<ExecutorInfo></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a094771a0260a6cb9c5a4c28fa67602e4">info</a>;</div>
-<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a23c3e37f5fdc1f8107d50e1cb27c74eb"> 297</a></span>  <a class="code" href="classOption.html">Option<ContainerID></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a23c3e37f5fdc1f8107d50e1cb27c74eb">latest</a>;</div>
-<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#af95714b376c0f7b2ce62ac1502489647"> 298</a></span>  <a class="code" href="classhashmap.html">hashmap<ContainerID, RunState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#af95714b376c0f7b2ce62ac1502489647">runs</a>;</div>
-<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#acf454ebfad71bed1e2c2de161f8b4477"> 299</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#acf454ebfad71bed1e2c2de161f8b4477">errors</a>;</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> };</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a036cd904332629bc05c752ac6cd094e9"> 288</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1RunState.html#a036cd904332629bc05c752ac6cd094e9">errors</a>;</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> };</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html"> 292</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html">ExecutorState</a></div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> {</div>
+<div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a1520e67b022f806c5bf6397cb562f483"> 294</a></span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a1520e67b022f806c5bf6397cb562f483">ExecutorState</a>() : <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#acf454ebfad71bed1e2c2de161f8b4477">errors</a>(0) {}</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<ExecutorState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#a873476d4c6aa5c570b83e333174af671">recover</a>(</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keyword">const</span> std::string& rootDir,</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const</span> ExecutorID& executorId,</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordtype">bool</span> strict);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div>
-<div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html"> 303</a></span> <span class="keyword">struct </span><a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html">FrameworkState</a></div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> {</div>
-<div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#a636c7411451f10f7c93f99c9f2b44d7e"> 305</a></span>  <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#a636c7411451f10f7c93f99c9f2b44d7e">FrameworkState</a>() : <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#acef705e489dcff53f85e350c76b5e994">errors</a>(0) {}</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">static</span> <a class="code" href="classTry.html">Try<FrameworkState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#a88aed4dd628fa76ef0f92874455f007d">recover</a>(</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">const</span> std::string& rootDir,</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">const</span> SlaveID& slaveId,</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keyword">const</span> FrameworkID& frameworkId,</div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordtype">bool</span> strict);</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div>
-<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#acb8551f77850aa0361034dbcb2bc3c66"> 313</a></span>  FrameworkID <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#acb8551f77850aa0361034dbcb2bc3c66">id</a>;</div>
-<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#a642b485f91451df2456ceb6c5ebfec2b"> 314</a></span>  <a class="code" href="classOption.html">Option<FrameworkInfo></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#a642b485f91451df2456ceb6c5ebfec2b">info</a>;</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="comment">// Note that HTTP frameworks (supported in 0.24.0) do not have a</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="comment">// PID, in which case 'pid' is Some(UPID()) rather than None().</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#a728950e0a987f9b7334eeb70239a4b72"> 318</a></span>  <a class="code" href="classOption.html">Option<process::UPID></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#a728950e0a987f9b7334eeb70239a4b72">pid</a>;</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div>
-<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#ad237e4adea9ae19e3ad889c31f350c6e"> 320</a></span>  <a class="code" href="classhashmap.html">hashmap<ExecutorID, ExecutorState></a> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#ad237e4adea9ae19e3ad889c31f350c6e">executors</a>;</div>
-<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#acef705e489dcff53f85e350c76b5e994"> 321</a></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1FrameworkState.html#acef705e489dcff53f85e350c76b5e994">errors</a>;</div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> };</div>
+<div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#ae4acfebbe3d16f5d032ddcaea1ab775e"> 303</a></span>  ExecutorID <a class="code" href="structmesos_1_1internal_1_1slave_1_1state_1_1ExecutorState.html#ae4acfebbe3d16f5d032ddcaea1ab775e">id</a>;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"><a class="line"
<TRUNCATED>