You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2015/09/21 20:44:20 UTC

svn commit: r1704382 [1/2] - in /mesos/site/publish: ./ blog/ blog/mesos-0-24-0-released/ documentation/latest/maintenance/ documentation/latest/mesos-c++-style-guide/ documentation/maintenance/ documentation/mesos-c++-style-guide/

Author: vinodkone
Date: Mon Sep 21 18:44:14 2015
New Revision: 1704382

URL: http://svn.apache.org/viewvc?rev=1704382&view=rev
Log:
Published blog post for 0.24.0.

Added:
    mesos/site/publish/blog/mesos-0-24-0-released/
    mesos/site/publish/blog/mesos-0-24-0-released/index.html
    mesos/site/publish/documentation/latest/maintenance/
    mesos/site/publish/documentation/latest/maintenance/index.html
    mesos/site/publish/documentation/maintenance/
    mesos/site/publish/documentation/maintenance/index.html
Modified:
    mesos/site/publish/blog/feed.xml
    mesos/site/publish/blog/index.html
    mesos/site/publish/documentation/latest/mesos-c++-style-guide/index.html
    mesos/site/publish/documentation/mesos-c++-style-guide/index.html
    mesos/site/publish/index.html
    mesos/site/publish/sitemap.xml

Modified: mesos/site/publish/blog/feed.xml
URL: http://svn.apache.org/viewvc/mesos/site/publish/blog/feed.xml?rev=1704382&r1=1704381&r2=1704382&view=diff
==============================================================================
--- mesos/site/publish/blog/feed.xml (original)
+++ mesos/site/publish/blog/feed.xml Mon Sep 21 18:44:14 2015
@@ -4,7 +4,53 @@
   <id>http://mesos.apache.org/blog</id>
   <link href="http://mesos.apache.org/blog" />
   <link href="http://mesos.apache.org/blog/feed.xml" rel="self"/>
-  <updated>2015-09-17T00:00:00Z</updated>
+  <updated>2015-09-21T00:00:00Z</updated>
+  
+  <entry>
+    <id>http://mesos.apache.org/blog/mesos-0-24-0-released/</id>
+    <link href="/blog/mesos-0-24-0-released/" />
+    <title>
+      Apache Mesos 0.24.0 Released
+    </title>
+    <updated>2015-09-21T00:00:00Z</updated>
+    <author>
+      <name>Vinod Kone</name>
+    </author>
+    <content type="html">
+      &lt;p&gt;The latest Mesos release, 0.24.0, is now available for &lt;a href=&quot;http://mesos.apache.org/downloads&quot;&gt;download&lt;/a&gt;. This release includes the following features and improvements:&lt;/p&gt;
+
+&lt;h4&gt;Scheduler HTTP API (&lt;a href=&quot;https://issues.apache.org/jira/browse/MESOS-2288&quot;&gt;MESOS-2288&lt;/a&gt;)&lt;/h4&gt;
+
+&lt;p&gt;Mesos 0.24 provides &lt;strong&gt;experimental&lt;/strong&gt; support for scheduler HTTP API. Framework schedulers can communicate with Mesos by sending HTTP POST requests to &lt;code&gt;/api/v1/scheduler&lt;/code&gt; instead of depending on the native libmesos library. The endpoint accepts both JSON and Protobuf requests. Additionally, the master talks back to the scheduler using the same connection opened by the scheduler, mitigating communication issues in firewalled/NATed environments. Refer to the &lt;a href=&quot;http://mesos.apache.org/documentation/latest/scheduler_http_api/&quot;&gt;scheduler http api documentation&lt;/a&gt; for more information.&lt;/p&gt;
+
+&lt;p&gt;Note that, this release only adds the support for scheduler HTTP API. Support for HTTP executor API is currently in the works and will be released soon!&lt;/p&gt;
+
+&lt;h3&gt;API Versioning (&lt;a href=&quot;https://issues.apache.org/jira/browse/MESOS-3167&quot;&gt;MESOS-3167&lt;/a&gt;)&lt;/h3&gt;
+
+&lt;p&gt;As part of this release, we have also outlined the versioning scheme for Mesos HTTP API going forward. At a high level, the Mesos API (constituting Scheduler, Executor, Internal, Operator/Admin APIs) will have a version in the URL. The versioned URL will have a prefix of &lt;code&gt;/api/vN&lt;/code&gt; where &lt;code&gt;N&lt;/code&gt; is the version of the API. For simplicity, the stable version of the API will correspond to the major release version of Mesos. For example, v1 of the API will be supported by Mesos release versions 1.0.0, 1.4.0, 1.20.0 etc. Refer to the &lt;a href=&quot;https://docs.google.com/document/d/1-iQjo6778H_fU_1Zi_Yk6szg8qj-wqYgVgnx7u3h6OU/edit#&quot;&gt;versioning design document&lt;/a&gt; for more information.&lt;/p&gt;
+
+&lt;h3&gt;Changelog&lt;/h3&gt;
+
+&lt;p&gt;Hundreds of other bug fixes/improvements are included in Mesos 0.24.0.
+See the &lt;a href=&quot;https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=0.24.0&quot;&gt;CHANGELOG&lt;/a&gt; for a full list of resolved JIRA issues.&lt;/p&gt;
+
+&lt;h3&gt;Upgrades&lt;/h3&gt;
+
+&lt;p&gt;Rolling upgrades from a Mesos 0.23.x cluster to Mesos 0.24 are straightforward, but there are a few caveats/deprecations.
+Please refer to the &lt;a href=&quot;http://mesos.apache.org/documentation/latest/upgrades/&quot;&gt;upgrade guide&lt;/a&gt; for detailed information on upgrading to Mesos 0.24.&lt;/p&gt;
+
+&lt;h3&gt;Try it out&lt;/h3&gt;
+
+&lt;p&gt;We encourage you to try out this release and let us know what you think. If you run into any issues, please let us know on the &lt;a href=&quot;https://mesos.apache.org/community&quot;&gt;user mailing list and IRC&lt;/a&gt;.&lt;/p&gt;
+
+&lt;h3&gt;Thanks!&lt;/h3&gt;
+
+&lt;p&gt;Thanks to the 37 contributors who made 0.24.0 possible:&lt;/p&gt;
+
+&lt;p&gt;Adam B, Aditi Dixit, Alex Clemmer, Alexander Rojas, Alexander Rukletsov, Anand Mazumdar, Anindya Sinha, Artem Harutyunyan, Bartek Plotka, Benjamin Hindman, Benjamin Mahler, Bernd Mathiske, Chi Zhang, Chris Heller, Dave Lester, Greg Mann, Guangya Liu, Ian Downes, Isabel Jimenez, James DeFelice, James Peach, Jan Schlicht, Jiang Yan Xu, Jie Yu, Joerg Schad, Jojy Varghese, Joris Van Remoortere, Joseph Wu, Kapil Arya, Klaus Ma, Lily Chen, Marco Massenzio, Mark Wang, Michael Park, Michael Schenck, Niklas Nielsen, Paul Brett, Ryuichi Okumura, Shuai Lin, Till Toenshoff, Tim Anderegg, Timothy Chen, Vinod Kone, Yong Qiao Wang, ayouwei, haosdent huang, usultrared.&lt;/p&gt;
+
+	</content>
+  </entry>
   
   <entry>
     <id>http://mesos.apache.org/blog/mesoscon-europe-2015-schedule-announced/</id>

Modified: mesos/site/publish/blog/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/blog/index.html?rev=1704382&r1=1704381&r2=1704382&view=diff
==============================================================================
--- mesos/site/publish/blog/index.html (original)
+++ mesos/site/publish/blog/index.html Mon Sep 21 18:44:14 2015
@@ -76,6 +76,11 @@
 	<div class="col-md-9">
 		
 		  <article>
+		  	<h2><a href="/blog/mesos-0-24-0-released/">Apache Mesos 0.24.0 Released</a></h2>
+			<p><em>Posted by Vinod Kone, September 21, 2015</em></p>
+		  </article>
+		
+		  <article>
 		  	<h2><a href="/blog/mesoscon-europe-2015-schedule-announced/">MesosCon Europe Schedule and Diversity Scholarship Available</a></h2>
 			<p><em>Posted by Michael Hausenblas, September 17, 2015</em></p>
 		  </article>

Added: mesos/site/publish/blog/mesos-0-24-0-released/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/blog/mesos-0-24-0-released/index.html?rev=1704382&view=auto
==============================================================================
--- mesos/site/publish/blog/mesos-0-24-0-released/index.html (added)
+++ mesos/site/publish/blog/mesos-0-24-0-released/index.html Mon Sep 21 18:44:14 2015
@@ -0,0 +1,165 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Apache Mesos 0.24.0 Released</title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
+		    <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml">
+		    
+		    <link href="../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" />
+				
+		    
+			
+			<!-- Google Analytics Magic -->
+			<script type="text/javascript">
+			  var _gaq = _gaq || [];
+			  _gaq.push(['_setAccount', 'UA-20226872-1']);
+			  _gaq.push(['_setDomainName', 'apache.org']);
+			  _gaq.push(['_trackPageview']);
+
+			  (function() {
+			    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+			  })();
+			</script>
+    </head>
+    <body>
+			<!-- magical breadcrumbs -->
+			<div class="topnav">
+			<ul class="breadcrumb">
+			  <li>
+					<div class="dropdown">
+					  <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
+					  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+							<li><a href="http://www.apache.org">Apache Homepage</a></li>
+							<li><a href="http://www.apache.org/licenses/">License</a></li>
+					  	<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
+					  	<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+							<li><a href="http://www.apache.org/security/">Security</a></li>
+					  </ul>
+					</div>
+				</li>
+				<li><a href="http://mesos.apache.org">Apache Mesos</a></li>
+				
+				
+					<li><a href="/blog
+/">Blog
+</a></li>
+				
+				
+			</ul><!-- /breadcrumb -->
+			</div>
+			
+			<!-- navbar excitement -->
+	    <div class="navbar navbar-static-top" role="navigation">
+	      <div class="navbar-inner">
+	        <div class="container">
+						<a href="/" class="logo"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+					<div class="nav-collapse">
+						<ul class="nav nav-pills navbar-right">
+						  <li><a href="/gettingstarted/">Getting Started</a></li>
+						  <li><a href="/documentation/latest/">Documentation</a></li>
+						  <li><a href="/downloads/">Downloads</a></li>
+						  <li><a href="/community/">Community</a></li>
+						</ul>
+					</div>
+	        </div>
+	      </div>
+	    </div><!-- /.navbar -->
+
+      <div class="container">
+
+			<div class="row">
+
+<div class="col-md-3">
+	<div class="meta">
+		<span class="author">
+			
+			<span class="author_contact">
+			  <p><strong>Vinod Kone</strong></p>
+			  <p><a href="http://twitter.com/">@</a></p>
+			</span>
+		</span>
+		<p><em>Posted September 21, 2015</em></p>
+	</div>
+	
+	<div class="share">
+		<span class="social-share-button"><a href="https://twitter.com/share" class="twitter-share-button" data-via="apachemesos">Tweet</a></span>
+		
+		<span><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></span>
+
+		<span><div class="g-plusone" data-size="medium"></div></span>
+
+		<!-- Place this tag after the last +1 button tag. -->
+		<script type="text/javascript">
+		  (function() {
+		    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
+		    po.src = 'https://apis.google.com/js/plusone.js';
+		    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
+		  })();
+		</script>
+		
+		<script src="//platform.linkedin.com/in.js" type="text/javascript">
+		 lang: en_US
+		</script>
+		<script type="IN/Share" data-counter="right"></script>
+	</div>
+</div>
+
+<div class="post col-md-9">
+	<h1>Apache Mesos 0.24.0 Released</h1>
+	
+	<p>The latest Mesos release, 0.24.0, is now available for <a href="http://mesos.apache.org/downloads">download</a>. This release includes the following features and improvements:</p>
+
+<h4>Scheduler HTTP API (<a href="https://issues.apache.org/jira/browse/MESOS-2288">MESOS-2288</a>)</h4>
+
+<p>Mesos 0.24 provides <strong>experimental</strong> support for scheduler HTTP API. Framework schedulers can communicate with Mesos by sending HTTP POST requests to <code>/api/v1/scheduler</code> instead of depending on the native libmesos library. The endpoint accepts both JSON and Protobuf requests. Additionally, the master talks back to the scheduler using the same connection opened by the scheduler, mitigating communication issues in firewalled/NATed environments. Refer to the <a href="http://mesos.apache.org/documentation/latest/scheduler_http_api/">scheduler http api documentation</a> for more information.</p>
+
+<p>Note that, this release only adds the support for scheduler HTTP API. Support for HTTP executor API is currently in the works and will be released soon!</p>
+
+<h3>API Versioning (<a href="https://issues.apache.org/jira/browse/MESOS-3167">MESOS-3167</a>)</h3>
+
+<p>As part of this release, we have also outlined the versioning scheme for Mesos HTTP API going forward. At a high level, the Mesos API (constituting Scheduler, Executor, Internal, Operator/Admin APIs) will have a version in the URL. The versioned URL will have a prefix of <code>/api/vN</code> where <code>N</code> is the version of the API. For simplicity, the stable version of the API will correspond to the major release version of Mesos. For example, v1 of the API will be supported by Mesos release versions 1.0.0, 1.4.0, 1.20.0 etc. Refer to the <a href="https://docs.google.com/document/d/1-iQjo6778H_fU_1Zi_Yk6szg8qj-wqYgVgnx7u3h6OU/edit#">versioning design document</a> for more information.</p>
+
+<h3>Changelog</h3>
+
+<p>Hundreds of other bug fixes/improvements are included in Mesos 0.24.0.
+See the <a href="https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=0.24.0">CHANGELOG</a> for a full list of resolved JIRA issues.</p>
+
+<h3>Upgrades</h3>
+
+<p>Rolling upgrades from a Mesos 0.23.x cluster to Mesos 0.24 are straightforward, but there are a few caveats/deprecations.
+Please refer to the <a href="http://mesos.apache.org/documentation/latest/upgrades/">upgrade guide</a> for detailed information on upgrading to Mesos 0.24.</p>
+
+<h3>Try it out</h3>
+
+<p>We encourage you to try out this release and let us know what you think. If you run into any issues, please let us know on the <a href="https://mesos.apache.org/community">user mailing list and IRC</a>.</p>
+
+<h3>Thanks!</h3>
+
+<p>Thanks to the 37 contributors who made 0.24.0 possible:</p>
+
+<p>Adam B, Aditi Dixit, Alex Clemmer, Alexander Rojas, Alexander Rukletsov, Anand Mazumdar, Anindya Sinha, Artem Harutyunyan, Bartek Plotka, Benjamin Hindman, Benjamin Mahler, Bernd Mathiske, Chi Zhang, Chris Heller, Dave Lester, Greg Mann, Guangya Liu, Ian Downes, Isabel Jimenez, James DeFelice, James Peach, Jan Schlicht, Jiang Yan Xu, Jie Yu, Joerg Schad, Jojy Varghese, Joris Van Remoortere, Joseph Wu, Kapil Arya, Klaus Ma, Lily Chen, Marco Massenzio, Mark Wang, Michael Park, Michael Schenck, Niklas Nielsen, Paul Brett, Ryuichi Okumura, Shuai Lin, Till Toenshoff, Tim Anderegg, Timothy Chen, Vinod Kone, Yong Qiao Wang, ayouwei, haosdent huang, usultrared.</p>
+
+</div>
+</div>
+
+			
+	      <hr>
+
+				<!-- footer -->
+	      <div class="footer">
+	        <p>&copy; 2012-2015 <a href="http://apache.org">The Apache Software Foundation</a>.
+	        Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation.<p>
+	      </div><!-- /footer -->
+
+	    </div> <!-- /container -->
+
+	    <!-- JS -->
+	    <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
+			<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script>
+    </body>
+</html>

Added: mesos/site/publish/documentation/latest/maintenance/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/maintenance/index.html?rev=1704382&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/maintenance/index.html (added)
+++ mesos/site/publish/documentation/latest/maintenance/index.html Mon Sep 21 18:44:14 2015
@@ -0,0 +1,375 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
+		    <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml">
+		    
+		    <link href="../../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" />
+				
+		    
+			
+			<!-- Google Analytics Magic -->
+			<script type="text/javascript">
+			  var _gaq = _gaq || [];
+			  _gaq.push(['_setAccount', 'UA-20226872-1']);
+			  _gaq.push(['_setDomainName', 'apache.org']);
+			  _gaq.push(['_trackPageview']);
+
+			  (function() {
+			    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+			  })();
+			</script>
+    </head>
+    <body>
+			<!-- magical breadcrumbs -->
+			<div class="topnav">
+			<ul class="breadcrumb">
+			  <li>
+					<div class="dropdown">
+					  <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
+					  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+							<li><a href="http://www.apache.org">Apache Homepage</a></li>
+							<li><a href="http://www.apache.org/licenses/">License</a></li>
+					  	<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
+					  	<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+							<li><a href="http://www.apache.org/security/">Security</a></li>
+					  </ul>
+					</div>
+				</li>
+				<li><a href="http://mesos.apache.org">Apache Mesos</a></li>
+				
+				
+					<li><a href="/documentation
+/">Documentation
+</a></li>
+				
+				
+			</ul><!-- /breadcrumb -->
+			</div>
+			
+			<!-- navbar excitement -->
+	    <div class="navbar navbar-static-top" role="navigation">
+	      <div class="navbar-inner">
+	        <div class="container">
+						<a href="/" class="logo"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+					<div class="nav-collapse">
+						<ul class="nav nav-pills navbar-right">
+						  <li><a href="/gettingstarted/">Getting Started</a></li>
+						  <li><a href="/documentation/latest/">Documentation</a></li>
+						  <li><a href="/downloads/">Downloads</a></li>
+						  <li><a href="/community/">Community</a></li>
+						</ul>
+					</div>
+	        </div>
+	      </div>
+	    </div><!-- /.navbar -->
+
+      <div class="container">
+
+			<div class="row-fluid">
+	<div class="col-md-4">
+		<h4>If you're new to Mesos</h4>
+		<p>See the <a href="/gettingstarted/">getting started</a> page for more information about downloading, building, and deploying Mesos.</p>
+		
+		<h4>If you'd like to get involved or you're looking for support</h4>
+		<p>See our <a href="/community/">community</a> page for more details.</p>
+	</div>
+	<div class="col-md-8">
+		<h1>Maintenance Primitives</h1>
+
+<p>Operators regularly need to perform maintenance tasks on machines that comprise
+a Mesos cluster.  Most Mesos upgrades can be done without affecting running
+tasks, but there are situations where maintenance may affect running tasks.
+For example:
+* Hardware repair
+* Kernel upgrades
+* Agent upgrades (e.g. adjusting agent attributes or resources)</p>
+
+<p>Frameworks require visibility into any actions that disrupt cluster operation
+in order to meet Service Level Agreements or to ensure uninterrupted services
+for their end users.  Therefore, to reconcile the requirements of frameworks
+and operators, frameworks must be aware of planned maintenance events and
+operators must be aware of frameworks’ ability to adapt to maintenance.
+Maintenance primitives add a layer to facilitate communication between the
+frameworks and operator.</p>
+
+<h2>Terminology</h2>
+
+<p>For the purpose of this document, an &ldquo;Operator&rdquo; is a person, tool, or script
+which manages the Mesos cluster.</p>
+
+<p>Maintenance primitives add several new concepts to the Mesos cluster.
+Those concepts are:
+* <strong>Maintenance</strong> - An operation that makes resources on a machine unavailable,
+  either temporarily or permanently.
+* <strong>Maintenance window</strong> - A set of machines and an associated interval during
+  which some maintenance is planned on those machines.
+* <strong>Maintenance schedule</strong> - A list of maintenance windows.
+  A single machine may only appear in a schedule once.
+* <strong>Unavailability</strong> - An operator-specified interval, defined by a start time
+  and duration, during which an associated machine may become unavailable.
+  In general, no assumptions should be made about the availability of the
+  machine (or resources) after the unavailability.
+* <strong>Drain</strong> - An interval between the scheduling of maintenance and when the
+  machine(s) become unavailable.  Offers sent with resources from draining
+  machines will contain unavailability information.  Frameworks running on
+  draining machines will receive inverse offers (see next).  Frameworks
+  utilizing resources on affected machines are expected either to take
+  preemptive steps to prepare for the unavailability; or to communicate the
+  framework&rsquo;s inability to conform to the maintenance schedule.
+* <strong>Inverse offer</strong> - A communication mechanism for the master to ask for
+  resources back from a framework.  This notifies frameworks about any
+  unavailability and gives frameworks a mechanism to respond about their
+  capability to comply.  Inverse offers are similar to offers in that they
+  can be accepted, rejected, re-offered, and rescinded.</p>
+
+<p><strong>Note</strong>: Unavailability and inverse offers are not specific to maintenance.
+The same concepts can be used for non-maintenance goals, such as reallocating
+resources or resource preemption.</p>
+
+<h2>How does it work?</h2>
+
+<p>Maintenance primitives were introduced in Mesos 0.25.0.  Several machine
+maintenance modes were also introduced.  Those modes are illustrated below.</p>
+
+<p><img src="images/maintenance-primitives-modes.png" alt="Maintenance mode transitions" /></p>
+
+<p>All mode transitions must be initiated by the operator.  Mesos will not
+change the mode of any machine, regardless of the estimate provided in
+the maintenance schedule.</p>
+
+<h3>Scheduling maintenance</h3>
+
+<p>A machine is transitioned from Up mode into Draining mode as soon as it
+is scheduled for maintenance.  To transition a machine into Draining mode,
+an operator constructs a maintenance schedule and posts it to the Mesos master.</p>
+
+<p>See the definition of a <a href="https://github.com/apache/mesos/blob/016b02d7ed5a65bcad9261a133c8237c2df66e6e/include/mesos/maintenance/maintenance.proto#L48-L67">maintenance::Schedule</a>
+and of <a href="https://github.com/apache/mesos/blob/016b02d7ed5a65bcad9261a133c8237c2df66e6e/include/mesos/v1/mesos.proto#L140-L154">Unavailability</a>.</p>
+
+<p>In a production environment, the schedule must be constructed to ensure that
+enough agents are operational at any given point in time to ensure
+uninterrupted service by the frameworks.</p>
+
+<p>For example, in a cluster of three machines, the operator can schedule two
+machines for one hour of maintenance, followed by another hour for the last
+machine.  The timestamps for unavailability are in nanoseconds since the epoch.
+The schedule might look like:
+<code>json
+{
+  "windows" : [
+    {
+      "machine_ids" : [
+        { "hostname" : "machine1", "ip" : "10.0.0.1" },
+        { "hostname" : "machine2", "ip" : "10.0.0.2" }
+      ],
+      "unavailability" : {
+        "start" : { "nanoseconds" : 1443830400000000000 },
+        "duration" : { "nanoseconds" : 3600000000000 }
+      }
+    }, {
+      "machine_ids" : [
+        { "hostname" : "machine3", "ip" : "10.0.0.3" }
+      ],
+      "unavailability" : {
+        "start" : { "nanoseconds" : 1443834000000000000 },
+        "duration" : { "nanoseconds" : 3600000000000 }
+      }
+    }
+  ]
+}
+</code></p>
+
+<p>The operator then posts the schedule to the master&rsquo;s maintenance endpoints.
+<code>bash
+curl http://localhost:5050/master/maintenance/schedule
+  -H "Content-type: application/json"
+  -X POST
+  -d @schedule.json
+</code></p>
+
+<p>The machines in a maintenance schedule do not necessarily need to be registered
+with the Mesos master.  The operator may add a machine to the maintenance
+schedule prior to launching an agent on the machine.  For example, this is
+useful for preventing a faulty machine from launching an agent on boot.</p>
+
+<p><strong>Note</strong>: Each machine in the maintenance schedule should have as
+complete information as possible.  In order for Mesos to recognize an agent
+as coming from a particular machine, both the <code>hostname</code> and <code>ip</code> fields must
+match.  Any omitted data defaults to the empty string <code>""</code>.  If there are
+multiple hostnames or IPs for a machine, the machine&rsquo;s fields need to match
+what the agent announces to the master.  If there is any ambiguity in a
+machine&rsquo;s configuration, the operator should use the <code>--hostname</code> and <code>--ip</code>
+options when starting agents.</p>
+
+<p>The master checks that a maintenance schedule has the following properties:
+* Each maintenance window in the schedule must have at least one machine
+  and a specified unavailability interval.
+* Each machine must only appear in the schedule once.
+* Each machine must have at least a hostname or IP included.
+  The hostname is not case-sensitive.
+* All machines that are in Down mode must be present in the schedule.
+  This is required because this endpoint does not handle the transition
+  from Down mode to Up mode.</p>
+
+<p>If any of these properties are not met, the maintenance schedule is rejected
+with a corresponding error message and the master&rsquo;s state does not change.</p>
+
+<p>To update a maintenance schedule, the operator should first read the existing
+schedule, make the necessary changes, and then post the modified schedule.</p>
+
+<p>To cancel a maintenance schedule, the operator should post an empty schedule.</p>
+
+<h3>Draining mode</h3>
+
+<p>As soon as a schedule is posted to the Mesos master, the following things occur:
+* The schedule is stored in the replicated log.  This means
+  the schedule is persisted in case of master failover.
+* All machines in the schedule are immediately transitioned into Draining
+  mode.  The mode of each machine is also persisted in the replicated log.
+* All frameworks using resources on affected agents are immediately
+  notified.  Existing offers from the affected agents are rescinded
+  and re-sent with additional unavailability data.  All Frameworks using
+  resources from the affected agents are given inverse offers.
+* New offers from the affected agents will also include
+  the additional unavailability data.</p>
+
+<p>With this additional information, frameworks should perform scheduling in a
+maintenance-aware fashion.  Inverse offers communicate the frameworks' ability
+to conform to the maintenance schedule.
+For example:
+* A framework with long-running tasks may choose agents with no unavailability
+  or with unavailability further in the future.
+* A datastore may choose to start a new replica if one of its agents is
+  scheduled for extensive maintenance or decommissioning.  If the datastore
+  can reasonably copy data into a new agent before maintenance,
+  it would accept any inverse offers.  Otherwise, it would decline them.
+* A stateful task, on an eminently unavailable agent, may be migrated to
+  another available agent.  If the framework has sufficient resources to do
+  so, it would accept any inverse offers.  Otherwise, it would decline them.</p>
+
+<p>Accepting an inverse offer indicates that the framework is ok with the
+maintenance schedule as it currently stands, given the current state of
+the framework&rsquo;s resources.  The master and operator should perceive acceptance
+as a best-effort promise by the framework to free all the resources contained
+in the inverse offer by the start of the unavailability interval.  An inverse
+offer may also be rejected if the framework is unable to conform to the
+maintenance schedule.</p>
+
+<p>A framework can use a filter to control when it wants to be contacted again
+with an inverse offer.  This is useful since future circumstances may change
+the viability of the maintenance schedule.  The filter for inverse offers is
+identical to the existing mechanism for re-offering offers to frameworks.</p>
+
+<p><strong>Note</strong>: Accepting or declining an inverse offer does not result in
+immediate changes in the maintenance schedule, or in the way Mesos acts.
+Inverse offers only represent some extra information that frameworks may
+find useful. In the same manner, a rejection or acceptance of an offer is a
+hint for an operator. The operator may or may not chose to take that hint
+into account.</p>
+
+<h3>Starting maintenance</h3>
+
+<p>The operator starts maintenance by posting a list of machines to the master&rsquo;s
+maintenance endpoint.</p>
+
+<p>See the definition of a <a href="https://github.com/apache/mesos/blob/016b02d7ed5a65bcad9261a133c8237c2df66e6e/include/mesos/v1/mesos.proto#L157-L167">MachineID</a>.</p>
+
+<p>For example, to start maintenance on two machines:
+<code>json
+[
+  { "hostname" : "machine1", "ip" : "10.0.0.1" },
+  { "hostname" : "machine2", "ip" : "10.0.0.2" }
+]
+</code>
+<code>bash
+curl http://localhost:5050/master/machine/down
+  -H "Content-type: application/json"
+  -X POST
+  -d @machines.json
+</code></p>
+
+<p>The master checks that a list of machines has the following properties:
+* The list of machines must not be empty.
+* Each machine must only appear once.
+* Each machine must have at least a hostname or IP included.
+  The hostname is not case-sensitive.
+* If a machine&rsquo;s IP is included, it must be correctly formed.
+* All listed machines must be present in the schedule.</p>
+
+<p>If any of these properties are not met, the list of machines is rejected
+with a corresponding error message and the master&rsquo;s state does not change.</p>
+
+<p>The operator can start maintenance on any machine that is scheduled for
+maintenance.  Machines that are not scheduled for maintenance cannot be
+directly transitioned from Up mode into Down mode.  However, the operator
+may schedule a machine for maintenance with a timestamp of the current
+time or in the past; and then immediately start maintenance on that machine.</p>
+
+<p>It is up to the operator to transition a machine from Draining to Deactivated
+mode.  Mesos will keep a machine in Draining mode even if the unavailability
+window arrives or passes.  This means that the operation of the machine is not
+disrupted in any way and offers (with unavailability information) are still
+sent for this machine.</p>
+
+<p>When maintenance is triggered by the operator, all agents on the machine are
+told to shutdown.  These agents are subsequently removed from the master
+which causes tasks to be updated as <code>TASK_LOST</code>.  Any agents from
+machines in maintenance are also prevented from registering with the master.</p>
+
+<h3>Completing maintenance</h3>
+
+<p>When maintenance is complete, or if maintenance needs to be cancelled,
+the operator can stop maintenance.  The process is very similar
+to starting maintenance (same validation criterion as the previous section).
+The operator posts a list of machines to the master&rsquo;s endpoints:
+<code>json
+[
+  { "hostname" : "machine1", "ip" : "10.0.0.1" },
+  { "hostname" : "machine2", "ip" : "10.0.0.2" }
+]
+</code>
+<code>bash
+curl http://localhost:5050/master/machine/up
+  -H "Content-type: application/json"
+  -X POST
+  -d @machines.json
+</code></p>
+
+<p><strong>Note</strong>: The duration of the maintenance, as indicated by the &ldquo;unavailability&rdquo;
+field, is a best-effort guess made by the operator.  Stopping maintenance
+before the end of the unavailability interval is allowed, as is stopping
+maintenance after the end of the unavailability interval.  The machines are
+never automatically transitioned out of maintenance.</p>
+
+<p>Frameworks are informed about the completion or cancellation of maintenance
+when offers from that machine start being sent.  There is no explicit mechanism
+for notifying frameworks when maintenance is stopped.  After maintenance is
+stopped, new offers are no longer tagged with unavailability and inverse offers
+are no longer sent.  Also, new agents can start to register from the machine.</p>
+
+	</div>
+</div>
+
+			
+	      <hr>
+
+				<!-- footer -->
+	      <div class="footer">
+	        <p>&copy; 2012-2015 <a href="http://apache.org">The Apache Software Foundation</a>.
+	        Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation.<p>
+	      </div><!-- /footer -->
+
+	    </div> <!-- /container -->
+
+	    <!-- JS -->
+	    <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
+			<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script>
+    </body>
+</html>

Modified: mesos/site/publish/documentation/latest/mesos-c++-style-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-c%2B%2B-style-guide/index.html?rev=1704382&r1=1704381&r2=1704382&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/mesos-c++-style-guide/index.html (original)
+++ mesos/site/publish/documentation/latest/mesos-c++-style-guide/index.html Mon Sep 21 18:44:14 2015
@@ -367,9 +367,9 @@ s += "world"; // THIS IS A DANGLING REFE
 
 
 <pre><code class="{.cpp}">// 1: OK.
-const auto&amp; i = values.find(keys.front());
+const auto i = values.find(keys.front());
 // Compare with
-const typename map::iterator&amp; i = values.find(keys.front());
+const typename map::iterator i = values.find(keys.front());
 
 // 2: OK.
 auto names = shared_ptr&lt;list&lt;string&gt;&gt;(new list&lt;string&gt;());

Added: mesos/site/publish/documentation/maintenance/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/maintenance/index.html?rev=1704382&view=auto
==============================================================================
--- mesos/site/publish/documentation/maintenance/index.html (added)
+++ mesos/site/publish/documentation/maintenance/index.html Mon Sep 21 18:44:14 2015
@@ -0,0 +1,375 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title></title>
+		    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
+		    <link rel="alternate" type="application/atom+xml" title="Apache Mesos Blog" href="/blog/feed.xml">
+		    
+		    <link href="../../assets/css/main.css" media="screen" rel="stylesheet" type="text/css" />
+				
+		    
+			
+			<!-- Google Analytics Magic -->
+			<script type="text/javascript">
+			  var _gaq = _gaq || [];
+			  _gaq.push(['_setAccount', 'UA-20226872-1']);
+			  _gaq.push(['_setDomainName', 'apache.org']);
+			  _gaq.push(['_trackPageview']);
+
+			  (function() {
+			    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+			  })();
+			</script>
+    </head>
+    <body>
+			<!-- magical breadcrumbs -->
+			<div class="topnav">
+			<ul class="breadcrumb">
+			  <li>
+					<div class="dropdown">
+					  <a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
+					  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+							<li><a href="http://www.apache.org">Apache Homepage</a></li>
+							<li><a href="http://www.apache.org/licenses/">License</a></li>
+					  	<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
+					  	<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+							<li><a href="http://www.apache.org/security/">Security</a></li>
+					  </ul>
+					</div>
+				</li>
+				<li><a href="http://mesos.apache.org">Apache Mesos</a></li>
+				
+				
+					<li><a href="/documentation
+/">Documentation
+</a></li>
+				
+				
+			</ul><!-- /breadcrumb -->
+			</div>
+			
+			<!-- navbar excitement -->
+	    <div class="navbar navbar-static-top" role="navigation">
+	      <div class="navbar-inner">
+	        <div class="container">
+						<a href="/" class="logo"><img src="/assets/img/mesos_logo.png" alt="Apache Mesos logo" /></a>
+					<div class="nav-collapse">
+						<ul class="nav nav-pills navbar-right">
+						  <li><a href="/gettingstarted/">Getting Started</a></li>
+						  <li><a href="/documentation/latest/">Documentation</a></li>
+						  <li><a href="/downloads/">Downloads</a></li>
+						  <li><a href="/community/">Community</a></li>
+						</ul>
+					</div>
+	        </div>
+	      </div>
+	    </div><!-- /.navbar -->
+
+      <div class="container">
+
+			<div class="row-fluid">
+	<div class="col-md-4">
+		<h4>If you're new to Mesos</h4>
+		<p>See the <a href="/gettingstarted/">getting started</a> page for more information about downloading, building, and deploying Mesos.</p>
+		
+		<h4>If you'd like to get involved or you're looking for support</h4>
+		<p>See our <a href="/community/">community</a> page for more details.</p>
+	</div>
+	<div class="col-md-8">
+		<h1>Maintenance Primitives</h1>
+
+<p>Operators regularly need to perform maintenance tasks on machines that comprise
+a Mesos cluster.  Most Mesos upgrades can be done without affecting running
+tasks, but there are situations where maintenance may affect running tasks.
+For example:
+* Hardware repair
+* Kernel upgrades
+* Agent upgrades (e.g. adjusting agent attributes or resources)</p>
+
+<p>Frameworks require visibility into any actions that disrupt cluster operation
+in order to meet Service Level Agreements or to ensure uninterrupted services
+for their end users.  Therefore, to reconcile the requirements of frameworks
+and operators, frameworks must be aware of planned maintenance events and
+operators must be aware of frameworks’ ability to adapt to maintenance.
+Maintenance primitives add a layer to facilitate communication between the
+frameworks and operator.</p>
+
+<h2>Terminology</h2>
+
+<p>For the purpose of this document, an &ldquo;Operator&rdquo; is a person, tool, or script
+which manages the Mesos cluster.</p>
+
+<p>Maintenance primitives add several new concepts to the Mesos cluster.
+Those concepts are:
+* <strong>Maintenance</strong> - An operation that makes resources on a machine unavailable,
+  either temporarily or permanently.
+* <strong>Maintenance window</strong> - A set of machines and an associated interval during
+  which some maintenance is planned on those machines.
+* <strong>Maintenance schedule</strong> - A list of maintenance windows.
+  A single machine may only appear in a schedule once.
+* <strong>Unavailability</strong> - An operator-specified interval, defined by a start time
+  and duration, during which an associated machine may become unavailable.
+  In general, no assumptions should be made about the availability of the
+  machine (or resources) after the unavailability.
+* <strong>Drain</strong> - An interval between the scheduling of maintenance and when the
+  machine(s) become unavailable.  Offers sent with resources from draining
+  machines will contain unavailability information.  Frameworks running on
+  draining machines will receive inverse offers (see next).  Frameworks
+  utilizing resources on affected machines are expected either to take
+  preemptive steps to prepare for the unavailability; or to communicate the
+  framework&rsquo;s inability to conform to the maintenance schedule.
+* <strong>Inverse offer</strong> - A communication mechanism for the master to ask for
+  resources back from a framework.  This notifies frameworks about any
+  unavailability and gives frameworks a mechanism to respond about their
+  capability to comply.  Inverse offers are similar to offers in that they
+  can be accepted, rejected, re-offered, and rescinded.</p>
+
+<p><strong>Note</strong>: Unavailability and inverse offers are not specific to maintenance.
+The same concepts can be used for non-maintenance goals, such as reallocating
+resources or resource preemption.</p>
+
+<h2>How does it work?</h2>
+
+<p>Maintenance primitives were introduced in Mesos 0.25.0.  Several machine
+maintenance modes were also introduced.  Those modes are illustrated below.</p>
+
+<p><img src="images/maintenance-primitives-modes.png" alt="Maintenance mode transitions" /></p>
+
+<p>All mode transitions must be initiated by the operator.  Mesos will not
+change the mode of any machine, regardless of the estimate provided in
+the maintenance schedule.</p>
+
+<h3>Scheduling maintenance</h3>
+
+<p>A machine is transitioned from Up mode into Draining mode as soon as it
+is scheduled for maintenance.  To transition a machine into Draining mode,
+an operator constructs a maintenance schedule and posts it to the Mesos master.</p>
+
+<p>See the definition of a <a href="https://github.com/apache/mesos/blob/016b02d7ed5a65bcad9261a133c8237c2df66e6e/include/mesos/maintenance/maintenance.proto#L48-L67">maintenance::Schedule</a>
+and of <a href="https://github.com/apache/mesos/blob/016b02d7ed5a65bcad9261a133c8237c2df66e6e/include/mesos/v1/mesos.proto#L140-L154">Unavailability</a>.</p>
+
+<p>In a production environment, the schedule must be constructed to ensure that
+enough agents are operational at any given point in time to ensure
+uninterrupted service by the frameworks.</p>
+
+<p>For example, in a cluster of three machines, the operator can schedule two
+machines for one hour of maintenance, followed by another hour for the last
+machine.  The timestamps for unavailability are in nanoseconds since the epoch.
+The schedule might look like:
+<code>json
+{
+  "windows" : [
+    {
+      "machine_ids" : [
+        { "hostname" : "machine1", "ip" : "10.0.0.1" },
+        { "hostname" : "machine2", "ip" : "10.0.0.2" }
+      ],
+      "unavailability" : {
+        "start" : { "nanoseconds" : 1443830400000000000 },
+        "duration" : { "nanoseconds" : 3600000000000 }
+      }
+    }, {
+      "machine_ids" : [
+        { "hostname" : "machine3", "ip" : "10.0.0.3" }
+      ],
+      "unavailability" : {
+        "start" : { "nanoseconds" : 1443834000000000000 },
+        "duration" : { "nanoseconds" : 3600000000000 }
+      }
+    }
+  ]
+}
+</code></p>
+
+<p>The operator then posts the schedule to the master&rsquo;s maintenance endpoints.
+<code>bash
+curl http://localhost:5050/master/maintenance/schedule
+  -H "Content-type: application/json"
+  -X POST
+  -d @schedule.json
+</code></p>
+
+<p>The machines in a maintenance schedule do not necessarily need to be registered
+with the Mesos master.  The operator may add a machine to the maintenance
+schedule prior to launching an agent on the machine.  For example, this is
+useful for preventing a faulty machine from launching an agent on boot.</p>
+
+<p><strong>Note</strong>: Each machine in the maintenance schedule should have as
+complete information as possible.  In order for Mesos to recognize an agent
+as coming from a particular machine, both the <code>hostname</code> and <code>ip</code> fields must
+match.  Any omitted data defaults to the empty string <code>""</code>.  If there are
+multiple hostnames or IPs for a machine, the machine&rsquo;s fields need to match
+what the agent announces to the master.  If there is any ambiguity in a
+machine&rsquo;s configuration, the operator should use the <code>--hostname</code> and <code>--ip</code>
+options when starting agents.</p>
+
+<p>The master checks that a maintenance schedule has the following properties:
+* Each maintenance window in the schedule must have at least one machine
+  and a specified unavailability interval.
+* Each machine must only appear in the schedule once.
+* Each machine must have at least a hostname or IP included.
+  The hostname is not case-sensitive.
+* All machines that are in Down mode must be present in the schedule.
+  This is required because this endpoint does not handle the transition
+  from Down mode to Up mode.</p>
+
+<p>If any of these properties are not met, the maintenance schedule is rejected
+with a corresponding error message and the master&rsquo;s state does not change.</p>
+
+<p>To update a maintenance schedule, the operator should first read the existing
+schedule, make the necessary changes, and then post the modified schedule.</p>
+
+<p>To cancel a maintenance schedule, the operator should post an empty schedule.</p>
+
+<h3>Draining mode</h3>
+
+<p>As soon as a schedule is posted to the Mesos master, the following things occur:
+* The schedule is stored in the replicated log.  This means
+  the schedule is persisted in case of master failover.
+* All machines in the schedule are immediately transitioned into Draining
+  mode.  The mode of each machine is also persisted in the replicated log.
+* All frameworks using resources on affected agents are immediately
+  notified.  Existing offers from the affected agents are rescinded
+  and re-sent with additional unavailability data.  All Frameworks using
+  resources from the affected agents are given inverse offers.
+* New offers from the affected agents will also include
+  the additional unavailability data.</p>
+
+<p>With this additional information, frameworks should perform scheduling in a
+maintenance-aware fashion.  Inverse offers communicate the frameworks' ability
+to conform to the maintenance schedule.
+For example:
+* A framework with long-running tasks may choose agents with no unavailability
+  or with unavailability further in the future.
+* A datastore may choose to start a new replica if one of its agents is
+  scheduled for extensive maintenance or decommissioning.  If the datastore
+  can reasonably copy data into a new agent before maintenance,
+  it would accept any inverse offers.  Otherwise, it would decline them.
+* A stateful task, on an eminently unavailable agent, may be migrated to
+  another available agent.  If the framework has sufficient resources to do
+  so, it would accept any inverse offers.  Otherwise, it would decline them.</p>
+
+<p>Accepting an inverse offer indicates that the framework is ok with the
+maintenance schedule as it currently stands, given the current state of
+the framework&rsquo;s resources.  The master and operator should perceive acceptance
+as a best-effort promise by the framework to free all the resources contained
+in the inverse offer by the start of the unavailability interval.  An inverse
+offer may also be rejected if the framework is unable to conform to the
+maintenance schedule.</p>
+
+<p>A framework can use a filter to control when it wants to be contacted again
+with an inverse offer.  This is useful since future circumstances may change
+the viability of the maintenance schedule.  The filter for inverse offers is
+identical to the existing mechanism for re-offering offers to frameworks.</p>
+
+<p><strong>Note</strong>: Accepting or declining an inverse offer does not result in
+immediate changes in the maintenance schedule, or in the way Mesos acts.
+Inverse offers only represent some extra information that frameworks may
+find useful. In the same manner, a rejection or acceptance of an offer is a
+hint for an operator. The operator may or may not chose to take that hint
+into account.</p>
+
+<h3>Starting maintenance</h3>
+
+<p>The operator starts maintenance by posting a list of machines to the master&rsquo;s
+maintenance endpoint.</p>
+
+<p>See the definition of a <a href="https://github.com/apache/mesos/blob/016b02d7ed5a65bcad9261a133c8237c2df66e6e/include/mesos/v1/mesos.proto#L157-L167">MachineID</a>.</p>
+
+<p>For example, to start maintenance on two machines:
+<code>json
+[
+  { "hostname" : "machine1", "ip" : "10.0.0.1" },
+  { "hostname" : "machine2", "ip" : "10.0.0.2" }
+]
+</code>
+<code>bash
+curl http://localhost:5050/master/machine/down
+  -H "Content-type: application/json"
+  -X POST
+  -d @machines.json
+</code></p>
+
+<p>The master checks that a list of machines has the following properties:
+* The list of machines must not be empty.
+* Each machine must only appear once.
+* Each machine must have at least a hostname or IP included.
+  The hostname is not case-sensitive.
+* If a machine&rsquo;s IP is included, it must be correctly formed.
+* All listed machines must be present in the schedule.</p>
+
+<p>If any of these properties are not met, the list of machines is rejected
+with a corresponding error message and the master&rsquo;s state does not change.</p>
+
+<p>The operator can start maintenance on any machine that is scheduled for
+maintenance.  Machines that are not scheduled for maintenance cannot be
+directly transitioned from Up mode into Down mode.  However, the operator
+may schedule a machine for maintenance with a timestamp of the current
+time or in the past; and then immediately start maintenance on that machine.</p>
+
+<p>It is up to the operator to transition a machine from Draining to Deactivated
+mode.  Mesos will keep a machine in Draining mode even if the unavailability
+window arrives or passes.  This means that the operation of the machine is not
+disrupted in any way and offers (with unavailability information) are still
+sent for this machine.</p>
+
+<p>When maintenance is triggered by the operator, all agents on the machine are
+told to shutdown.  These agents are subsequently removed from the master
+which causes tasks to be updated as <code>TASK_LOST</code>.  Any agents from
+machines in maintenance are also prevented from registering with the master.</p>
+
+<h3>Completing maintenance</h3>
+
+<p>When maintenance is complete, or if maintenance needs to be cancelled,
+the operator can stop maintenance.  The process is very similar
+to starting maintenance (same validation criterion as the previous section).
+The operator posts a list of machines to the master&rsquo;s endpoints:
+<code>json
+[
+  { "hostname" : "machine1", "ip" : "10.0.0.1" },
+  { "hostname" : "machine2", "ip" : "10.0.0.2" }
+]
+</code>
+<code>bash
+curl http://localhost:5050/master/machine/up
+  -H "Content-type: application/json"
+  -X POST
+  -d @machines.json
+</code></p>
+
+<p><strong>Note</strong>: The duration of the maintenance, as indicated by the &ldquo;unavailability&rdquo;
+field, is a best-effort guess made by the operator.  Stopping maintenance
+before the end of the unavailability interval is allowed, as is stopping
+maintenance after the end of the unavailability interval.  The machines are
+never automatically transitioned out of maintenance.</p>
+
+<p>Frameworks are informed about the completion or cancellation of maintenance
+when offers from that machine start being sent.  There is no explicit mechanism
+for notifying frameworks when maintenance is stopped.  After maintenance is
+stopped, new offers are no longer tagged with unavailability and inverse offers
+are no longer sent.  Also, new agents can start to register from the machine.</p>
+
+	</div>
+</div>
+
+			
+	      <hr>
+
+				<!-- footer -->
+	      <div class="footer">
+	        <p>&copy; 2012-2015 <a href="http://apache.org">The Apache Software Foundation</a>.
+	        Apache Mesos, the Apache feather logo, and the Apache Mesos project logo are trademarks of The Apache Software Foundation.<p>
+	      </div><!-- /footer -->
+
+	    </div> <!-- /container -->
+
+	    <!-- JS -->
+	    <script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
+			<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js" type="text/javascript"></script>
+    </body>
+</html>

Modified: mesos/site/publish/documentation/mesos-c++-style-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/mesos-c%2B%2B-style-guide/index.html?rev=1704382&r1=1704381&r2=1704382&view=diff
==============================================================================
--- mesos/site/publish/documentation/mesos-c++-style-guide/index.html (original)
+++ mesos/site/publish/documentation/mesos-c++-style-guide/index.html Mon Sep 21 18:44:14 2015
@@ -367,9 +367,9 @@ s += "world"; // THIS IS A DANGLING REFE
 
 
 <pre><code class="{.cpp}">// 1: OK.
-const auto&amp; i = values.find(keys.front());
+const auto i = values.find(keys.front());
 // Compare with
-const typename map::iterator&amp; i = values.find(keys.front());
+const typename map::iterator i = values.find(keys.front());
 
 // 2: OK.
 auto names = shared_ptr&lt;list&lt;string&gt;&gt;(new list&lt;string&gt;());

Modified: mesos/site/publish/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/index.html?rev=1704382&r1=1704381&r2=1704382&view=diff
==============================================================================
--- mesos/site/publish/index.html (original)
+++ mesos/site/publish/index.html Mon Sep 21 18:44:14 2015
@@ -117,7 +117,8 @@
   <div class="col-md-5">
     <h3>News</h3>
       <ul>
-            <li><em>September 17, 2015</em> - <a href="/blog/mesoscon-europe-2015-schedule-announced/">MesosCon Europe Schedule and Diversity Scholarship</a></li>
+            <li><em>September 21, 2015</em> - Mesos 0.24.0 is released! See the <a href="https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=0.24.0">CHANGELOG</a> and <a href="/blog/mesos-0-24-0-released/">blog post</a> for more details.</li>
+        <li><em>September 17, 2015</em> - <a href="/blog/mesoscon-europe-2015-schedule-announced/">MesosCon Europe Schedule and Diversity Scholarship</a></li>
         <li><em>August 5, 2015</em> - <a href="/blog/mesoscon-goes-europe/">MesosCon goes Europe</a></li>
         <li><em>July 28, 2015</em> - <a href="/blog/register-for-mesoscon-seattle-save/">Register for #MesosCon by 7/31 and Save $100</a></li>
         <li><em>July 22, 2015</em> - Mesos 0.23.0 is released! See the <a href="https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=0.23.0">CHANGELOG</a> and <a href="/blog/mesos-0-23-0-released/">blog post</a> for more details.</li>