You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ka...@apache.org on 2016/02/01 03:49:28 UTC

svn commit: r1727886 [7/16] - in /mesos/site: ./ publish/ publish/assets/img/documentation/ publish/community/ publish/documentation/ publish/documentation/allocation-module/ publish/documentation/app-framework-development-guide/ publish/documentation/...

Modified: mesos/site/publish/documentation/latest/high-availability/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/high-availability/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/high-availability/index.html (original)
+++ mesos/site/publish/documentation/latest/high-availability/index.html Mon Feb  1 02:49:25 2016
@@ -81,10 +81,12 @@
 		<p>See our <a href="/community/">community</a> page for more details.</p>
 	</div>
 	<div class="col-md-8">
-		<h1>Mesos High Availability Mode</h1>
+		<h1>Mesos High-Availability Mode</h1>
 
 <p>If the Mesos master is unavailable, existing tasks can continue to execute, but new resources cannot be allocated and new tasks cannot be launched. To reduce the chance of this situation occurring, Mesos has a high-availability mode that uses multiple Mesos masters: one active master (called the <em>leader</em> or leading master) and several <em>backups</em> in case it fails. The masters elect the leader, with <a href="http://zookeeper.apache.org/">Apache ZooKeeper</a> both coordinating the election and handling leader detection by masters, slaves, and scheduler drivers. More information regarding <a href="http://zookeeper.apache.org/doc/trunk/recipes.html#sc_leaderElection">how leader election works</a> is available on the Apache Zookeeper website.</p>
 
+<p>This document describes how to configure Mesos to run in high-availability mode. For more information on developing highly available frameworks, see a <a href="/documentation/latest/high-availability-framework-guide/">companion document</a>.</p>
+
 <p><strong>Note</strong>: This document assumes you know how to start, run, and work with ZooKeeper, whose client library is included in the standard Mesos build.</p>
 
 <h2>Usage</h2>
@@ -98,7 +100,7 @@
 <ul>
 <li><p>Start the mesos-master binaries using the <code>--zk</code> flag, e.g. <code>--zk=zk://host1:port1,host2:port2,.../path</code></p></li>
 <li><p>Start the mesos-slave binaries with <code>--master=zk://host1:port1,host2:port2,.../path</code></p></li>
-<li><p>Start any framework schedulers using the same <code>zk</code> path as in the last two steps. The SchedulerDriver must be constructed with this path, as shown in the <a href="http://mesos.apache.org/documentation/latest/app-framework-development-guide/">Framework Development Guide</a>.</p></li>
+<li><p>Start any framework schedulers using the same <code>zk</code> path as in the last two steps. The SchedulerDriver must be constructed with this path, as shown in the <a href="/documentation/latest/app-framework-development-guide/">Framework Development Guide</a>.</p></li>
 </ul>
 </li>
 </ol>
@@ -106,7 +108,7 @@
 
 <p>From now on, the Mesos masters and slaves all communicate with ZooKeeper to find out which master is the current leading master. This is in addition to the usual communication between the leading master and the slaves.</p>
 
-<p>Refer to the <a href="http://mesos.apache.org/documentation/latest/app-framework-development-guide/">Scheduler API</a> for how to deal with leadership changes.</p>
+<p>Refer to the <a href="/documentation/latest/app-framework-development-guide/">Scheduler API</a> for how to deal with leadership changes.</p>
 
 <h2>Component Disconnection Handling</h2>
 
@@ -134,7 +136,7 @@
 
 <ul>
 <li><p>The slave fails health checks from the leader.</p></li>
-<li><p>The leader marks the slave as deactivated and sends its tasks to the LOST state. The  <a href="http://mesos.apache.org/documentation/latest/app-framework-development-guide/">Framework Development Guide</a> describes these various task states.</p></li>
+<li><p>The leader marks the slave as deactivated and sends its tasks to the LOST state. The  <a href="/documentation/latest/app-framework-development-guide/">Framework Development Guide</a> describes these various task states.</p></li>
 <li><p>Deactivated slaves may not re-register with the leader and are told to shut down upon any post-deactivation communication.</p></li>
 </ul>
 

Modified: mesos/site/publish/documentation/latest/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/index.html (original)
+++ mesos/site/publish/documentation/latest/index.html Mon Feb  1 02:49:25 2016
@@ -95,15 +95,22 @@
 
 <ul>
 <li><a href="/documentation/latest/getting-started/">Getting Started</a> for basic instructions on compiling and installing Mesos.</li>
+<li><a href="/documentation/latest/upgrades/">Upgrades</a> for upgrading a Mesos cluster.</li>
 <li><a href="/documentation/latest/configuration/">Configuration</a> for command-line arguments.</li>
-<li><a href="/documentation/latest/containerizer/">Mesos Containerizer</a> default containerizer, supports both Linux and POSIX systems.</li>
+<li><a href="/documentation/latest/containerizer/">Containerizer</a> for containerizer overview and use cases.
+
+<ul>
+<li><a href="/documentation/latest/containerizer-internals/">Containerizer Internals</a> for implementation details of containerizers.</li>
+<li><a href="/documentation/latest/mesos-containerizer/">Mesos Containerizer</a> default containerizer, supports both Linux and POSIX systems.</li>
 <li><a href="/documentation/latest/docker-containerizer/">Docker Containerizer</a> for launching a Docker image as a Task, or as an Executor.</li>
-<li><a href="/documentation/latest/external-containerizer/">External Containerizer</a> for custom containerization implementations.</li>
+<li><a href="/documentation/latest/external-containerizer/">External Containerizer</a> for custom containerization implementations (deprecated).</li>
+</ul>
+</li>
 <li><a href="/documentation/latest/roles/">Roles</a></li>
 <li><a href="/documentation/latest/authentication/">Framework Authentication</a></li>
 <li><a href="/documentation/latest/authorization/">Framework Authorization</a></li>
 <li><a href="/documentation/latest/framework-rate-limiting/">Framework Rate Limiting</a></li>
-<li><a href="/documentation/latest/logging-and-debugging/">Logging and Debugging</a> for viewing Mesos and framework logs.</li>
+<li><a href="/documentation/latest/logging/">Logging</a></li>
 <li><a href="/documentation/latest/high-availability/">High Availability</a> for running multiple masters simultaneously.</li>
 <li><a href="/documentation/latest/operational-guide/">Operational Guide</a></li>
 <li><a href="/documentation/latest/monitoring/">Monitoring</a></li>
@@ -112,18 +119,20 @@
 <li><a href="/documentation/latest/maintenance/">Maintenance</a> for performing maintenance on a Mesos cluster.</li>
 <li><a href="/documentation/latest/tools/">Tools</a> for setting up and running a Mesos cluster.</li>
 <li><a href="/documentation/latest/ssl/">SSL</a> for enabling and enforcing SSL communication.</li>
+<li><a href="/documentation/latest/mesos-provisioner/">Mesos Image Provisioner</a> for provisioning container filesystems from different image formats.</li>
 </ul>
 
 
 <h2>Advanced Features</h2>
 
 <ul>
-<li><a href="/documentation/attributes-resources/">Attributes and Resources</a> for how to describe the slaves that comprise a cluster.</li>
+<li><a href="/documentation/latest/attributes-resources/">Attributes and Resources</a> for how to describe the slaves that comprise a cluster.</li>
 <li><a href="/documentation/latest/fetcher/">Fetcher Cache</a> for how to configure the Mesos fetcher cache.</li>
 <li><a href="/documentation/latest/networking-for-mesos-managed-containers/">Networking for Mesos-managed Containers</a></li>
 <li><a href="/documentation/latest/oversubscription/">Oversubscription</a> for how to configure Mesos to take advantage of unused resources to launch &ldquo;best-effort&rdquo; tasks.</li>
 <li><a href="/documentation/latest/persistent-volume/">Persistent Volume</a> for how to allow tasks to access persistent storage resources.</li>
-<li><a href="/documentation/latest/reservation/">Reservation</a> for how to configure Mesos to allow slaves to reserve resources.</li>
+<li><a href="/documentation/latest/quota/">Quota</a> for how to configure Mesos to provide guaranteed resource allocations for use by a role.</li>
+<li><a href="/documentation/latest/reservation/">Reservation</a> for how operators and frameworks can reserve resources on individual agents for use by a role.</li>
 </ul>
 
 
@@ -131,6 +140,7 @@
 
 <ul>
 <li><a href="/documentation/latest/frameworks/">Mesos frameworks</a> for a list of apps built on top of Mesos and instructions on how to run them.</li>
+<li><a href="/documentation/latest/sandbox/">Sandbox</a> describes a useful debugging arena for most users.</li>
 </ul>
 
 
@@ -138,11 +148,14 @@
 
 <ul>
 <li><a href="/documentation/latest/app-framework-development-guide/">Framework Development Guide</a> describes how to build applications on top of Mesos.</li>
+<li><a href="/documentation/latest/high-availability-framework-guide/">Designing Highly Available Mesos Frameworks</a></li>
 <li><a href="/documentation/latest/reconciliation/">Reconciliation</a> for ensuring a framework&rsquo;s state remains eventually consistent in the face of failures.</li>
 <li><a href="/documentation/latest/scheduler-http-api/">Scheduler HTTP API</a> describes the new HTTP API for communication between schedulers and the Mesos master.</li>
+<li><a href="/documentation/latest/executor-http-api/">Executor HTTP API</a> describes the new HTTP API for communication between executors and the Mesos agent.</li>
 <li><a href="/api/latest/java/">Javadoc</a> documents the Mesos Java API.</li>
 <li><a href="/api/latest/c++/namespacemesos.html">Doxygen</a> documents the Mesos C++ API.</li>
 <li><a href="/documentation/latest/tools/">Developer Tools</a> for hacking on Mesos or writing frameworks.</li>
+<li><a href="/documentation/latest/versioning/">Versioning</a> describes how Mesos does API and release versioning.</li>
 </ul>
 
 

Added: mesos/site/publish/documentation/latest/logging/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/logging/index.html?rev=1727886&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/logging/index.html (added)
+++ mesos/site/publish/documentation/latest/logging/index.html Mon Feb  1 02:49:25 2016
@@ -0,0 +1,306 @@
+<!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>Logging</h1>
+
+<p>Mesos handles the logs of each Mesos component differently depending on the
+degree of control Mesos has over the source code of the component.</p>
+
+<p>Roughly, these categories are:</p>
+
+<ul>
+<li><a href="#Internal">Internal</a> - Master and Agent.</li>
+<li><a href="#Containers">Containers</a> - Executors and Tasks.</li>
+<li>External - Components launched outside of Mesos, like
+Frameworks and <a href="/documentation/latest/high-availability/">ZooKeeper</a>.  These are expected to
+implement their own logging solution.</li>
+</ul>
+
+
+<h2><a name="Internal"></a>Internal</h2>
+
+<p>The Mesos Master and Agent use the
+<a href="https://github.com/google/glog">Google&rsquo;s logging library</a>.
+For information regarding the command-line options used to configure this
+library, see the <a href="/documentation/latest/configuration/">configuration documentation</a>.
+Google logging options that are not explicitly mentioned there can be
+configured via environment variables.</p>
+
+<p>Both Master and Agent also expose an HTTP endpoint which temporarily toggles
+verbose logging:</p>
+
+<pre><code>POST &lt;ip:port&gt;/logging/toggle?level=[1|2|3]&amp;duration=VALUE
+</code></pre>
+
+<p>The effect is analogous to setting the <code>GLOG_v</code> environment variable prior
+to starting the Master/Agent, except the logging level will revert to the
+original level after the given duration.</p>
+
+<h2><a name="Containers"></a>Containers</h2>
+
+<p>For background, see <a href="/documentation/latest/containerizer/">the containerizer documentation</a>.</p>
+
+<p>Mesos does not assume any structured logging for entities running inside
+containers.  Instead, Mesos will store the stdout and stderr of containers
+into plain files (&ldquo;stdout&rdquo; and &ldquo;stderr&rdquo;) located inside
+<a href="sandbox.md#where-is-it">the sandbox</a>.</p>
+
+<p>In some cases, the default Container logger behavior of Mesos is not ideal:</p>
+
+<ul>
+<li>Logging may not be standardized across containers.</li>
+<li>Logs are not easily aggregated.</li>
+<li>Log file sizes are not managed.  Given enough time, the &ldquo;stdout&rdquo; and &ldquo;stderr&rdquo;
+files can fill up the Agent&rsquo;s disk.</li>
+</ul>
+
+
+<h2><code>ContainerLogger</code> Module</h2>
+
+<p>The <code>ContainerLogger</code> module was introduced in Mesos 0.27.0 and aims to address
+the shortcomings of the default logging behavior for containers.  The module
+can be used to change how Mesos redirects the stdout and stderr of containers.</p>
+
+<p>The <a href="https://github.com/apache/mesos/blob/master/include/mesos/slave/container_logger.hpp">interface for a <code>ContainerLogger</code> can be found here</a>.</p>
+
+<p>Mesos comes with two <code>ContainerLogger</code> modules:</p>
+
+<ul>
+<li>The <code>SandboxContainerLogger</code> implements the existing logging behavior as
+a <code>ContainerLogger</code>.  This is the default behavior.</li>
+<li>The <code>LogrotateContainerLogger</code> addresses the problem of unbounded log file
+sizes.</li>
+</ul>
+
+
+<h3><code>LogrotateContainerLogger</code></h3>
+
+<p>The <code>LogrotateContainerLogger</code> constrains the total size of a container&rsquo;s
+stdout and stderr files.  The module does this by rotating log files based
+on the parameters to the module.  When a log file reaches its specified
+maximum size, it is renamed by appending a <code>.N</code> to the end of the filename,
+where <code>N</code> increments each rotation.  Older log files are deleted when the
+specified maximum number of files is reached.</p>
+
+<h4>Invoking the module</h4>
+
+<p>The <code>LogrotateContainerLogger</code> can be loaded by specifying the library
+<code>liblogrotate_container_logger.so</code> in the
+<a href="modules.md#Invoking"><code>--modules</code> flag</a> when starting the Agent and by
+setting the <code>--container_logger</code> Agent flag to
+<code>org_apache_mesos_LogrotateContainerLogger</code>.</p>
+
+<h4>Module parameters</h4>
+
+<table class="table table-striped">
+  <thead>
+    <tr>
+      <th width="30%">
+        Key
+      </th>
+      <th>
+        Explanation
+      </th>
+    </tr>
+  </thead>
+
+  <tr>
+    <td>
+      <code>max_stdout_size</code>/<code>max_stderr_size</code>
+    </td>
+    <td>
+      Maximum size, in bytes, of a single stdout/stderr log file.
+      When the size is reached, the file will be rotated.
+
+      Defaults to 10 MB.  Minimum size of 1 (memory) page, usually around 4 KB.
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      <code>logrotate_stdout_options</code>/
+      <code>logrotate_stderr_options</code>
+    </td>
+    <td>
+      Additional config options to pass into <code>logrotate</code> for stdout.
+      This string will be inserted into a <code>logrotate</code> configuration
+      file. i.e. For "stdout":
+      <pre>
+/path/to/stdout {
+  [logrotate_stdout_options]
+  size [max_stdout_size]
+}</pre>
+      NOTE: The <code>size</code> option will be overriden by this module.
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      <code>launcher_dir</code>
+    </td>
+    <td>
+      Directory path of Mesos binaries.
+      The <code>LogrotateContainerLogger</code> will find the
+      <code>mesos-logrotate-logger</code> binary under this directory.
+
+      Defaults to <code>/usr/local/libexec/mesos</code>.
+    </td>
+  </tr>
+
+  <tr>
+    <td>
+      <code>logrotate_path</code>
+    </td>
+    <td>
+      If specified, the <code>LogrotateContainerLogger</code> will use the
+      specified <code>logrotate</code> instead of the system's
+      <code>logrotate</code>.  If <code>logrotate</code> is not found, then
+      the module will exit with an error.
+    </td>
+  </tr>
+</table>
+
+
+<h4>How it works</h4>
+
+<ol>
+<li>Every time a container starts up, the <code>LogrotateContainerLogger</code>
+starts up companion subprocesses of the <code>mesos-logrotate-logger</code> binary.</li>
+<li>The module instructs Mesos to redirect the container&rsquo;s stdout/stderr
+to the <code>mesos-logrotate-logger</code>.</li>
+<li>As the container outputs to stdout/stderr, <code>mesos-logrotate-logger</code> will
+pipe the output into the &ldquo;stdout&rdquo;/&ldquo;stderr&rdquo; files.  As the files grow,
+<code>mesos-logrotate-logger</code> will call <code>logrotate</code> to keep the files strictly
+under the configured maximum size.</li>
+<li>When the container exits, <code>mesos-logrotate-logger</code> will finish logging before
+exiting as well.</li>
+</ol>
+
+
+<p>The <code>LogrotateContainerLogger</code> is designed to be resilient across Agent
+failover.  If the Agent process dies, any instances of <code>mesos-logrotate-logger</code>
+will continue to run.</p>
+
+<h3>Writing a Custom <code>ContainerLogger</code></h3>
+
+<p>For basics on module writing, see <a href="/documentation/latest/modules/">the modules documentation</a>.</p>
+
+<p>There are several caveats to consider when designing a new <code>ContainerLogger</code>:</p>
+
+<ul>
+<li>Logging by the <code>ContainerLogger</code> should be resilient to Agent failover.
+If the Agent process dies (which includes the <code>ContainerLogger</code> module),
+logging should continue.  This is usually achieved by using subprocesses.</li>
+<li>When containers shut down, the <code>ContainerLogger</code> is not explicitly notified.
+Instead, encountering <code>EOF</code> in the container&rsquo;s stdout/stderr signifies
+that the container has exited.  This provides a stronger guarantee that the
+<code>ContainerLogger</code> has seen all the logs before exiting itself.</li>
+<li>The <code>ContainerLogger</code> should not assume that containers have been launched
+with any specific <code>ContainerLogger</code>.  The Agent may be restarted with a
+different <code>ContainerLogger</code>.</li>
+<li>Each <a href="/documentation/latest/containerizer/">containerizer</a> running on an Agent uses its own
+instance of the <code>ContainerLogger</code>.  This means more than one <code>ContainerLogger</code>
+may be running in a single Agent.  However, each Agent will only run a single
+type of <code>ContainerLogger</code>.</li>
+</ul>
+
+
+	</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/maintenance/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/maintenance/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/maintenance/index.html (original)
+++ mesos/site/publish/documentation/latest/maintenance/index.html Mon Feb  1 02:49:25 2016
@@ -146,7 +146,7 @@ resources or resource preemption.</p>
 <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="/assets/img/documentation/maintenance-primitives-modes.png" alt="Maintenance mode transitions" /></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

Modified: mesos/site/publish/documentation/latest/markdown-style-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/markdown-style-guide/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/markdown-style-guide/index.html (original)
+++ mesos/site/publish/documentation/latest/markdown-style-guide/index.html Mon Feb  1 02:49:25 2016
@@ -137,60 +137,55 @@ Continued longer note.
 
 <p>Files and path references should be specified as follows:</p>
 
-<pre><code class="{.text}">Remember you can also use the `file:///path/to/file` or `/path/to/file`
+<pre><code class="{.txt}">Remember you can also use the `file:///path/to/file` or `/path/to/file`
 </code></pre>
 
 <h2>Tables</h2>
 
 <p>In order to avoid problems with markdown formatting we should specify tables in html directly:</p>
 
-<p>~~~{.html}</p>
-
-<table class="table table-striped">
-  <thead>
-    <tr>
-      <th width="30%">
+<pre><code>&lt;table class="table table-striped"&gt;
+  &lt;thead&gt;
+    &lt;tr&gt;
+      &lt;th width="30%"&gt;
         Flag
-      </th>
-      <th>
+      &lt;/th&gt;
+      &lt;th&gt;
         Explanation
-      </th>
-  </thead>
-  <tr>
-    <td>
+      &lt;/th&gt;
+  &lt;/thead&gt;
+  &lt;tr&gt;
+    &lt;td&gt;
       --ip=VALUE
-    </td>
-    <td>
+    &lt;/td&gt;
+    &lt;td&gt;
       IP address to listen on
-    </td>
-  </tr>
-  <tr>
-    <td>
+    &lt;/td&gt;
+  &lt;/tr&gt;
+  &lt;tr&gt;
+    &lt;td&gt;
       --[no-]help
-    </td>
-    <td>
+    &lt;/td&gt;
+    &lt;td&gt;
       Prints this help message (default: false)
+    &lt;/td&gt;
+  &lt;/tr&gt;
+&lt;/table&gt;
+</code></pre>
 
-    </td>
-  </tr>
-</table>
-
-
-<pre><code>
-
-## Indendation and Whitespace
+<h2>Indendation and Whitespace</h2>
 
-We use no extra indentation in markdown files.
+<p>We use no extra indentation in markdown files.
 We have one new line after section headings and two blank lines
-in between sections.
-</code></pre>
+in between sections.</p>
 
-<p>&hellip; end of previous section.</p>
+<pre><code class="{.txt}">... end of previous section.
 
-<h2>New Section</h2>
 
-<p>Beginning of new section &hellip;.
-~~~</p>
+## New Section
+
+Beginning of new section ....
+</code></pre>
 
 	</div>
 </div>

Added: mesos/site/publish/documentation/latest/mesos-containerizer/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-containerizer/index.html?rev=1727886&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/mesos-containerizer/index.html (added)
+++ mesos/site/publish/documentation/latest/mesos-containerizer/index.html Mon Feb  1 02:49:25 2016
@@ -0,0 +1,184 @@
+<!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>Mesos Containerizer</h1>
+
+<p>The MesosContainerizer provides lightweight containerization and
+resource isolation of executors using Linux-specific functionality
+such as control cgroups and namespaces. It is composable so operators
+can selectively enable different isolators.</p>
+
+<p>It also provides basic support for POSIX systems (e.g., OSX) but
+without any actual isolation, only resource usage reporting.</p>
+
+<h3>Shared Filesystem</h3>
+
+<p>The SharedFilesystem isolator can optionally be used on Linux hosts to
+enable modifications to each container&rsquo;s view of the shared
+filesystem.</p>
+
+<p>The modifications are specified in the ContainerInfo included in the
+ExecutorInfo, either by a framework or by using the
+<code>--default_container_info</code> slave flag.</p>
+
+<p>ContainerInfo specifies Volumes which map parts of the shared
+filesystem (host_path) into the container&rsquo;s view of the filesystem
+(container_path), as read-write or read-only. The host_path can be
+absolute, in which case it will make the filesystem subtree rooted at
+host_path also accessible under container_path for each container.
+If host_path is relative then it is considered as a directory
+relative to the executor&rsquo;s work directory. The directory will be
+created and permissions copied from the corresponding directory (which
+must exist) in the shared filesystem.</p>
+
+<p>The primary use-case for this isolator is to selectively make parts of
+the shared filesystem private to each container. For example, a
+private &ldquo;/tmp&rdquo; directory can be achieved with <code>host_path="tmp"</code> and
+<code>container_path="/tmp"</code> which will create a directory &ldquo;tmp&rdquo; inside the
+executor&rsquo;s work directory (mode 1777) and simultaneously mount it as
+/tmp inside the container. This is transparent to processes running
+inside the container. Containers will not be able to see the host&rsquo;s
+/tmp or any other container&rsquo;s /tmp.</p>
+
+<h3>Pid Namespace</h3>
+
+<p>The Pid Namespace isolator can be used to isolate each container in
+a separate pid namespace with two main benefits:</p>
+
+<ol>
+<li><p>Visibility: Processes running in the container (executor and
+descendants) are unable to see or signal processes outside the
+namespace.</p></li>
+<li><p>Clean termination: Termination of the leading process in a pid
+namespace will result in the kernel terminating all other processes
+in the namespace.</p></li>
+</ol>
+
+
+<p>The Launcher will use (2) during destruction of a container in
+preference to the freezer cgroup, avoiding known kernel issues related
+to freezing cgroups under OOM conditions.</p>
+
+<p>/proc will be mounted for containers so tools such as &lsquo;ps&rsquo; will work
+correctly.</p>
+
+<h3>Posix Disk Isolator</h3>
+
+<p>The Posix Disk isolator provides basic disk isolation. It is able to
+report the disk usage for each sandbox and optionally enforce the disk
+quota. It can be used on both Linux and OS X.</p>
+
+<p>To enable the Posix Disk isolator, append <code>posix/disk</code> to the
+<code>--isolation</code> flag when starting the slave.</p>
+
+<p>By default, the disk quota enforcement is disabled. To enable it,
+specify <code>--enforce_container_disk_quota</code> when starting the slave.</p>
+
+<p>The Posix Disk isolator reports disk usage for each sandbox by
+periodically running the <code>du</code> command. The disk usage can be retrieved
+from the resource statistics endpoint (<code>/monitor/statistics.json</code>).</p>
+
+<p>The interval between two <code>du</code>s can be controlled by the slave flag
+<code>--container_disk_watch_interval</code>. For example,
+<code>--container_disk_watch_interval=1mins</code> sets the interval to be 1
+minute. The default interval is 15 seconds.</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-provisioner/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-provisioner/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/mesos-provisioner/index.html (original)
+++ mesos/site/publish/documentation/latest/mesos-provisioner/index.html Mon Feb  1 02:49:25 2016
@@ -101,28 +101,29 @@
 
 <p>We introduced a new protobuf message <code>Image</code> that describes a container filesystem image.</p>
 
-<p>message Image {
+<pre><code class="{.proto}">message Image {
   enum Type {
     APPC = 1;
     DOCKER = 2;
     // More Image types.
-  }</p>
+  }
 
-<p>  message Appc {
+  message Appc {
     // Appc configurations.
-  }</p>
+  }
 
-<p>  message Docker {
+  message Docker {
     // Docker configurations
-  }</p>
+  }
 
-<p>  required Type type = 1;</p>
+  required Type type = 1;
 
-<p>  // Only one of the following image messages should be set to match
+  // Only one of the following image messages should be set to match
   // the type.
   optional Appc appc = 2;
   optional Docker docker = 3;
-}</p>
+}
+</code></pre>
 
 <p>This <code>Image</code> message type contains the type of image specification and the corresponding configurations for that type.</p>
 
@@ -135,12 +136,12 @@ that volume will be mounted with the ima
 
 <h2>Setup and Agent Flags</h2>
 
-<p>To run the agent to enable Mesos containerizer, you must launch the agent with mesos as a containerizer option, which is the default containerizer for the mesos agent. It also has to enable linux/filesystem as part of the enabled isolators. The supported image providers can also be configured through agent flags, as well as the supported image provider backend.</p>
+<p>To run the agent to enable Mesos containerizer, you must launch the agent with mesos as a containerizer option, which is the default containerizer for the mesos agent. It also has to enable filesystem/linux as part of the enabled isolators. The supported image providers can also be configured through agent flags, as well as the supported image provider backend.</p>
 
 <p>Mesos agent also needs to be running under linux with root permissions.</p>
 
 <ul>
-<li>Example: <code>mesos-slave --containerizers=mesos --image_providers=appc,docker --image_provisioner_backend=copy --isolation=linux/filesystem</code></li>
+<li>Example: <code>mesos-slave --containerizers=mesos --image_providers=appc,docker --image_provisioner_backend=copy --isolation=filesystem/linux</code></li>
 </ul>
 
 
@@ -165,11 +166,11 @@ Mesos agent supports multiple image prov
 
 <p>https://github.com/docker/docker/blob/master/image/spec/v1.md</p>
 
-<p>Docker image provider supports two different methods of finding and pulling images: local and registry. The <code>docker_puller</code> agent flag allows the slave to choose between these methods.</p>
+<p>Docker image provider supports two different methods of finding and pulling images: local and registry. The <code>docker_registry</code> agent flag allows the slave to choose between these methods based on the URL scheme.</p>
 
-<p>Local puller finds docker images based on image name and tag in the host filesystem, in the directory configured by <code>docker_local_archives_dir</code>.</p>
+<p>By specifying a URL in <code>docker_registry</code> agent flag pointing to a local directory (file:///tmp/mesos/images/docker), the provisioner will use the Local puller to find docker images based on image name and tag in the host filesystem.</p>
 
-<p>Registry puller finds and downloads images by contacting Docker registry, and by default contacts server configured by <code>docker_registry</code> and <code>docker_registry_port</code> agent flag when no custom registry is specified.</p>
+<p>If the URL configured in <code>docker_registry</code> isn&rsquo;t pointing to a local directory, it will be assumed to be a registry referring to a Docker registry. The Registry puller will find and download images by contacting Docker registry with the configured URL when no custom registry is specified.</p>
 
 <p>Note that to run the Registry puller Mesos agent must be running with SSL enabled.</p>
 
@@ -196,8 +197,8 @@ backend tracked by MESOS-2971). For smal
 
 <h2>Related Docs</h2>
 
-<p>For more information on the Mesos containerizer filesystem, namespace, and isolator features, visit <a href="/documentation/latest/https://github.com/apache/mesos/blob/master/docs/containerizer/">here</a>.
-For more information on launching Docker containers through the Docker containerizer, visit <a href="/documentation/latest/https://github.com/apache/mesos/blob/master/docs/docker-containerizer/">here</a>.</p>
+<p>For more information on the Mesos containerizer filesystem, namespace, and isolator features, visit <a href="/documentation/latest/mesos-containerizer/">Mesos Containerizer</a>.
+For more information on launching Docker containers through the Docker containerizer, visit <a href="/documentation/latest/docker-containerizer/">Docker Containerizer</a>.</p>
 
 	</div>
 </div>

Modified: mesos/site/publish/documentation/latest/modules/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/modules/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/modules/index.html (original)
+++ mesos/site/publish/documentation/latest/modules/index.html Mon Feb  1 02:49:25 2016
@@ -109,7 +109,7 @@ scripting languages without forcing thos
 Finally, modules provide an easy way for third parties to easily extend Mesos
 without having to know all the internal details.</p>
 
-<h2>Invoking Mesos modules</h2>
+<h2><a name="Invoking"></a>Invoking Mesos modules</h2>
 
 <p>The command-line flag <code>--modules</code> is available for Mesos master, slave, and
 tests to specify a list of modules to be loaded and be available to the internal

Modified: mesos/site/publish/documentation/latest/networking-for-mesos-managed-containers/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/networking-for-mesos-managed-containers/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/networking-for-mesos-managed-containers/index.html (original)
+++ mesos/site/publish/documentation/latest/networking-for-mesos-managed-containers/index.html Mon Feb  1 02:49:25 2016
@@ -105,7 +105,7 @@ framework changes.</p>
 
 <h2>How does it work?</h2>
 
-<p><img src="/assets/img/documentation/networking-architecture.png" alt="Mesos Networking Architecture" /></p>
+<p><img src="images/networking-architecture.png" alt="Mesos Networking Architecture" /></p>
 
 <p>A key observation is that the networking support is enabled via a Mesos module
 and thus the Mesos master and agents are completely oblivious of it. It is
@@ -150,7 +150,7 @@ isolation</li>
 <li><p>Cleanup Module:</p>
 
 <ul>
-<li>responsible for doing a cleanup (releasing IPs, etc.) during a Agent lost
+<li>responsible for doing a cleanup (releasing IPs, etc.) during an Agent lost
 event, dormant otherwise</li>
 </ul>
 </li>
@@ -231,7 +231,7 @@ before the address(es) are recycled.</p>
 there is an example implementation at https://github.com/mesosphere/net-modules.</p>
 
 <p>Once the network isolation module has been built into a shared dynamic library,
-we can load it into Mesos Agent (see <a href="/documentation/latest/modules/">modules documentation</a> on
+we can load it into Mesos Agent (/documentation/latest/see <a href="modules/">modules documentation</a> on
 instructions for building and loading a module).</p>
 
 <h2>Enabling frameworks for IP-per-container capability</h2>

Added: mesos/site/publish/documentation/latest/newbie-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/newbie-guide/index.html?rev=1727886&view=auto
==============================================================================
--- mesos/site/publish/documentation/latest/newbie-guide/index.html (added)
+++ mesos/site/publish/documentation/latest/newbie-guide/index.html Mon Feb  1 02:49:25 2016
@@ -0,0 +1,248 @@
+<!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">
+		<p>&ndash;</p>
+
+<h2>layout: documentation</h2>
+
+<h1>Newbie Guide</h1>
+
+<h2>Introduction</h2>
+
+<p>The purpose of this document is to give an introduction and overall description of the contribution process for contributors new to Mesos.  This document is intended to extend the existing documentation with a focus on on-boarding contributors to the community as quickly as possible.</p>
+
+<h1>Contribution Process Overview</h1>
+
+<p>The figure below shows a high-level process flow of the contribution delivery process for the Mesos open source distribution. Details of the process can be obtained from the [submitting-a-patch] (/documentation/latest/submitting-a-patch/) document of the Mesos distribution along with the Getting Started Guidance section of this document.</p>
+
+<p><img src="NewbieContributionOverview.jpg" alt="Newbie Document" /></p>
+
+<h2>Preparation and Build Environment Setup</h2>
+
+<p>In order to complete the contribution process you will need to obtain account authorizations and install additional tooling to build the Mesos binaries. These pre-requisites are listed below:</p>
+
+<ul>
+<li><p>Required account authorizations</p>
+
+<ul>
+<li>Apache Review Board Account</li>
+<li>Apache JIRA Account</li>
+</ul>
+</li>
+<li><p>Required installations</p>
+
+<ul>
+<li>Git</li>
+<li>RBtools</li>
+<li>GTest</li>
+<li>GLog</li>
+</ul>
+</li>
+</ul>
+
+
+<h2>Download and Build Mesos</h2>
+
+<p>In order to begin contributing you will need to download and build the latest stable release of the Mesos distribution. Documentation on the steps to complete this process is described in the Mesos document and link listed above.</p>
+
+<h2>Make Modifications</h2>
+
+<p>Make your intended modifications to the source code and then commit the changes to your local build repository. Changes to the source should also include test cases to exercise the modification. Details about this process are found in the Mesos document listed above and Getting Started section below.</p>
+
+<h2>Submit Patch</h2>
+
+<p>Once changes are completed and tested submit the patch for review. This process will take the modifications from review submission to committed changes in the Mesos distribution.</p>
+
+<h1>Getting Started Guidance</h1>
+
+<p>The following information will help provide additional guidance to execute the steps summarized in Contribution Process Overview described above as well as provide helpful hints when following the <a href="/documentation/latest/submitting-a-patch/">submitting-a-patch</a> document of the Mesos distribution.</p>
+
+<h2>Apache JIRA Account Pre-Requisite</h2>
+
+<p>Detailed steps are provided in the Mesos documentation to obtain a JIRA account. Once you have obtained a JIRA account, ensure the additional step to request addition to the list of “contributors” is completed.</p>
+
+<h2>Tooling Pre-Requisites</h2>
+
+<p>There is a set of tooling listed below that is required to be installed for the contribution process. These tools will not be described in this document and it is assumed that the reader will seek alternative references to become familiar with each of these tools outside of this document.</p>
+
+<ul>
+<li><a href="https://git-scm.com/">Git Client</a></li>
+<li><a href="https://www.reviewboard.org/docs/rbtools/dev/">RBTools</a></li>
+<li><a href="https://github.com/google/googletest">GTest</a></li>
+<li><a href="https://github.com/google/glog">GLog</a></li>
+</ul>
+
+
+<h2>Core Libraries</h2>
+
+<p>There are two core libraries in Mesos: <em>stout</em> and <em>libprocess</em>. <em>stout</em> is the low level operating system abstraction tooling that should be used in place of writing your own low level tools. <em>libprocess</em> is a library used to support building compatible concurrent components (see <a href="https://www.youtube.com/watch?v=5EIiU6R_6KE">video</a> for an introduction to the <em>libprocess</em> library). New contributors to Mesos should become familiar with these libraries and utilize them where appropriate.  Additional documentation can be found in the following two README files: 3rdparty/libprocess/README.md and 3rdparty/libprocess/3rdparty/stout/README.md.</p>
+
+<h2>Download and Build Mesos</h2>
+
+<p>Detailed steps are provided in the <a href="/documentation/latest/getting-started/">Mesos documentation</a> to download and build Mesos. When downloading the Mesos distribution there are 2 options to obtain the Mesos source code. For contributing, ensure that the Git option is used.</p>
+
+<h2>JIRA</h2>
+
+<p><a href="http://issues.apache.org/jira/browse/MESOS">JIRA</a> is the issue tracking system for all bug fixes and feature additions in Mesos. When contributing to Mesos, all assignments, discussions, and resolution proposals for a specific issue should be documented as comments within the JIRA item.</p>
+
+<h2>Identifying a JIRA Issue</h2>
+
+<p>To begin the contribution process, identify a Mesos JIRA issue that is currently unassigned. It is highly recommended to start contributing to beginner level issues and overtime move to advanced level issues. The JIRA issue-tracking system can be filtered based on labels. The following labels can be used to identify beginner level JIRA tickets:</p>
+
+<ul>
+<li>newbie</li>
+<li>“*newbie++”</li>
+<li>beginner</li>
+<li>beginners</li>
+</ul>
+
+
+<p>When identifying a JIRA issue to work on, it is recommended to work on items that are relevant to the next release. Selecting work items important for the next release increases the priority for reviewers during the contribution process. See the tracking ticket for the release to figure out the high priority projects or ask the release manager to guide you.</p>
+
+<h2>Assign a JIRA Issue</h2>
+
+<p>There are a couple options to assign a work item: 1) create a new JIRA issue to work on or 2) identify an existing JIRA issue item to work on as described above. Whichever option is chosen there are several steps that should be followed when assigning yourself a JIRA ticket.</p>
+
+<p>It is important to identify a shepherd before you assign a ticket to yourself. Working with a shepherd will reveal its priority at the current time. To identify a shepherd look at the <a href="/documentation/latest/committers/">maintainers</a> file to get an idea who to ask to shepherd your JIRA issue.\</p>
+
+<h2>JIRA Issue Solution Proposals</h2>
+
+<p>Once you have an assigned JIRA issue and you have identified a shepherd, it is important to discuss your proposed solution within the JIRA ticket early in the resolution process in order to get feedback from reviewers. Early discussions will help:</p>
+
+<ol>
+<li><p>ensure the solution will be scoped in a consumable fashion;</p></li>
+<li><p>eliminate duplicate work with other contributions; and</p></li>
+<li><p>alert anyone interested in following the activity and progress of the ticket.</p></li>
+</ol>
+
+
+<p>Guidelines to consider when designing a solution can be found in the <a href="/documentation/latest/effective-code-reviewing/">effective-code-reviewing</a> document.</p>
+
+<h2>Making Changes</h2>
+
+<p>After completing the solution review make the source code changes, build and successfully run relevant test cases. Guidelines for these processes can be found in the <a href="/documentation/latest/submitting-a-patch.md">submitting-a-patch</a> and [mesos-c++style-guide] (c++-style-guide/).</p>
+
+<p>When creating and running test cases pay particular attention to race conditions. One recommendation is to run system tests multiple times.  Below is a sample command to repeat the test 100 times.</p>
+
+<p><em>sudo GLOG_v=1 ./bin/mesos-tests.sh &ndash;verbose &ndash;gtest_filter=”*DOCKER*” &ndash;break-on-error &ndash;gtest_shuffle &ndash;gtest_repeat=100</em></p>
+
+<h2>Submit a Patch to the Review Board</h2>
+
+<p>Submit your patch for review after you have come to an agreement with your shepherd on the proposed solution, made the modifications and successfully ran the test cases. Make sure your shepherd is added as a &ldquo;reviewer&rdquo; (among others) in the review. This will ensure that your reviews get processed.</p>
+
+<p>When submitting a patch for review, include all testing done in the submission documentation. Follow the detailed steps found in the <a href="/documentation/latest/submitting-a-patch/">submitting-a-patch</a> document to submit a patch for review.</p>
+
+<h1>Advanced Level JIRA Items</h1>
+
+<p>As you gain experience contributing to Mesos you may want to tackle more advanced level JIRA items. These items may touch multiple components within Mesos and/or may have a significant impact on the developer or user community. In these cases, a working group of stakeholders is formed to develop a design document. The initial formation of this working group will be part of the community communication resources, e.g. the re-occurring developer sync meetings, the developer email list, the IRC channel, etc. For reference, a contributor new to an advanced level work item can refer to the work done for the <a href="https://issues.apache.org/jira/browse/MESOS-1592">inverse offer</a> project.</p>
+
+<hr />
+
+<h1>FAQs</h1>
+
+<p>Q: Where can I find documentation about Mesos?
+A: Mesos documentation is located in the ‘docs’ directory of the Mesos distribution. This documentation includes information about Mesos architecture and design, running Mesos, developing within the Mesos ecosystem and contributing to Mesos. Additionally, the latest documentation can be found here:
+<a href="http://mesos.apache.org/documentation/latest/index.html">http://mesos.apache.org/documentation/latest/index.html</a></p>
+
+<p>Q: What is a Shepherd?
+A: An identified PMC/committer that works with a contributor to help shepherd a JIRA item to completion.  Shepherds should be as identified at the beginning of the design/development phase.</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/operational-guide/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/operational-guide/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/operational-guide/index.html (original)
+++ mesos/site/publish/documentation/latest/operational-guide/index.html Mon Feb  1 02:49:25 2016
@@ -85,7 +85,7 @@
 
 <h2>Using a process supervisor</h2>
 
-<p>Mesos uses a &ldquo;<a href="https://en.wikipedia.org/wiki/Fail-fast">fail-fast</a>&rdquo; approach to error handling: if a serious error occurs, Mesos will typically exit rather than trying to continue running in a possibly erroneous state. For example, when Mesos is configured for <a href="/documentation/latest/high-availability">high availability</a>, the leading master will abort itself when it discovers it has been partitioned away from the Zookeeper quorum. This is a safety precaution to ensure the previous leader doesn&rsquo;t continue communicating in an unsafe state.</p>
+<p>Mesos uses a &ldquo;<a href="/documentation/latest/https://en.wikipedia.org/wiki/Fail-fast">fail-fast</a>&rdquo; approach to error handling: if a serious error occurs, Mesos will typically exit rather than trying to continue running in a possibly erroneous state. For example, when Mesos is configured for <a href="high-availability/">high availability</a>, the leading master will abort itself when it discovers it has been partitioned away from the Zookeeper quorum. This is a safety precaution to ensure the previous leader doesn&rsquo;t continue communicating in an unsafe state.</p>
 
 <p>To ensure that such failures are handled appropriately, production deployments of Mesos typically use a <em>process supervisor</em> (such as systemd or supervisord) to detect when Mesos processes exit. The supervisor can be configured to restart the failed process automatically and/or to notify the cluster operator to investigate the situation.</p>
 

Modified: mesos/site/publish/documentation/latest/oversubscription/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/oversubscription/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/oversubscription/index.html (original)
+++ mesos/site/publish/documentation/latest/oversubscription/index.html Mon Feb  1 02:49:25 2016
@@ -97,7 +97,7 @@ components: a Resource Estimator and a Q
 alongside extending the existing resource allocator, resource monitor, and
 mesos slave. The new components and their interactions are illustrated below.</p>
 
-<p><img src="/assets/img/documentation/oversubscription-overview.jpg" alt="Oversubscription overview" /></p>
+<p><img src="images/oversubscription-overview.jpg" alt="Oversubscription overview" /></p>
 
 <h3>Resource estimation</h3>
 
@@ -285,6 +285,16 @@ Controller with it&rsquo;s own libproces
 be made. Each corrective action contains information about executor or task and
 the type of action to perform.</p>
 
+<p>Mesos comes with a <code>noop</code> and a <code>load</code> qos controller. The <code>noop</code> controller
+does not provide any corrections, thus does not assure any quality of service
+for regular tasks. The <code>load</code> controller is ensuring the total system load
+doesn&rsquo;t exceed a configurable thresholds and as a result try to avoid the cpu
+congestion on the node. If the load is above the thresholds controller evicts
+all the revocable executors. These thresholds are configurable via two module
+parameters <code>load_threshold_5min</code> and <code>load_threshold_15min</code>. They represent
+standard unix load averages in the system. 1 minute system load is ignored,
+since for oversubscription use case it can be a misleading signal.</p>
+
 <pre><code class="{.proto}">message QoSCorrection {
   enum Type {
     KILL = 1; // Terminate an executor.
@@ -380,6 +390,37 @@ between these corrections is controlled
 <p>In the example above, a fixed amount of 14 cpus will be offered as revocable
 resources.</p>
 
+<p>The <code>load</code> qos controller is enabled as follows:</p>
+
+<pre><code>--qos_controller="org_apache_mesos_LoadQoSController"
+
+--qos_correction_interval_min="20secs"
+
+--modules='{
+  "libraries": {
+    "file": "/usr/local/lib64/libload_qos_controller.so",
+    "modules": {
+      "name": "org_apache_mesos_LoadQoSController",
+      "parameters": [
+        {
+          "key": "load_threshold_5min",
+          "value": "6"
+        },
+        {
+      "key": "load_threshold_15min",
+      "value": "4"
+        }
+      ]
+    }
+  }
+}'
+</code></pre>
+
+<p>In the example above, when standard unix system load average for 5 minutes will
+be above 6, or for 15 minutes will be above 4 then slave will evict all the
+<code>revocable</code> executors. <code>LoadQoSController</code> will be effectively run every 20
+seconds.</p>
+
 <p>To install a custom resource estimator and QoS controller, please refer to the
 <a href="/documentation/latest/modules/">modules documentation</a>.</p>
 

Modified: mesos/site/publish/documentation/latest/persistent-volume/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/persistent-volume/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/persistent-volume/index.html (original)
+++ mesos/site/publish/documentation/latest/persistent-volume/index.html Mon Feb  1 02:49:25 2016
@@ -96,35 +96,40 @@ that is mounted at a well-known location
 
 <p>Persistent volumes can only be created from <strong>reserved</strong> disk resources, whether
 it be statically reserved or dynamically reserved. A dynamically reserved
-persistent volume also cannot be unreserved without having explicitly destroyed
-the volume. These rules exist to limit the accidental mistakes such as:
-a persistent volume containing sensitive data being offered to other frameworks
-in the cluster.</p>
+persistent volume also cannot be unreserved without first explicitly destroying
+the volume. These rules exist to limit accidental mistakes, such as a persistent
+volume containing sensitive data being offered to other frameworks in the
+cluster.</p>
 
 <p>Please refer to the <a href="/documentation/latest/reservation/">Reservation</a> documentation for details
 regarding reservation mechanisms available in Mesos.</p>
 
 <p>Persistent volumes can be created by <strong>operators</strong> and authorized
 <strong>frameworks</strong>. We require a <code>principal</code> from the operator or framework in order
-to authenticate/authorize the operations. <a href="/documentation/latest/authorization/">Authorization</a> is
-specified via the existing ACL mechanism. (<strong><em>Coming Soon</em></strong>)</p>
+to authenticate/authorize the operations. Permissions are specified via the
+existing ACL mechanism. To use authorization with reserve, unreserve, create,
+and destroy operations, the Mesos master must be configured with the desired
+ACLs. For more information, see the
+<a href="/documentation/latest/authorization/">authorization documentation</a>.</p>
 
 <ul>
 <li><code>Offer::Operation::Create</code> and <code>Offer::Operation::Destroy</code> messages are
 available for <strong>frameworks</strong> to send back via the <code>acceptOffers</code> API as a
 response to a resource offer.</li>
-<li><code>/create</code> and <code>/destroy</code> HTTP endpoints are available for <strong>operators</strong>
-to manage persistent volumes through the master. (<strong><em>Coming Soon</em></strong>).</li>
+<li><code>/create-volumes</code> and <code>/destroy-volumes</code> HTTP endpoints allow
+<strong>operators</strong> to manage persistent volumes through the master.</li>
 </ul>
 
 
 <p>In the following sections, we will walk through examples of each of the
 interfaces described above.</p>
 
-<h2><code>Offer::Operation::Create</code></h2>
+<h3>Framework Scheduler API</h3>
 
-<p>A framework is able to create volumes through the resource offer cycle.
-Suppose we receive a resource offer with 2048 MB of dynamically reserved disk.</p>
+<h4><code>Offer::Operation::Create</code></h4>
+
+<p>A framework can create volumes through the resource offer cycle.  Suppose we
+receive a resource offer with 2048 MB of dynamically reserved disk.</p>
 
 <pre><code>{
   "id" : &lt;offer_id&gt;,
@@ -146,12 +151,12 @@ Suppose we receive a resource offer with
 </code></pre>
 
 <p>We can create a persistent volume from the 2048 MB of disk resources by sending
-the following <code>Offer::Operation</code> message via the <code>acceptOffers</code> API.
-<code>Offer::Operation::Create</code> has a <code>volumes</code> field which we specify with the
-persistent volume information. We need to specify the following:</p>
+an <code>Offer::Operation</code> message via the <code>acceptOffers</code> API.
+<code>Offer::Operation::Create</code> has a <code>volumes</code> field which specifies the persistent
+volume information. We need to specify the following:</p>
 
 <ol>
-<li>ID of the persistent volume which needs to be unique per role on each slave.</li>
+<li>The ID for the persistent volume; this must be unique per role on each slave.</li>
 <li>The non-nested relative path within the container to mount the volume.</li>
 <li>The permissions for the volume. Currently, <code>"RW"</code> is the only possible value.</li>
 </ol>
@@ -184,7 +189,8 @@ persistent volume information. We need t
 }
 </code></pre>
 
-<p>The subsequent resource offer will <strong>contain</strong> the following persistent volume:</p>
+<p>If this succeeds, a subsequent resource offer will contain the following
+persistent volume:</p>
 
 <pre><code>{
   "id" : &lt;offer_id&gt;,
@@ -214,12 +220,12 @@ persistent volume information. We need t
 }
 </code></pre>
 
-<h2><code>Offer::Operation::Destroy</code></h2>
+<h4><code>Offer::Operation::Destroy</code></h4>
 
-<p>A framework is able to destroy persistent volumes through the resource offer
-cycle. In <a href="#offeroperationcreate">Offer::Operation::Create</a>, we created a
-persistent volume from 2048 MB of disk resources. Mesos will not garbage-collect
-this volume until we explicitly destroy it. Suppose we would like to destroy the
+<p>A framework can destroy persistent volumes through the resource offer cycle. In
+<a href="#offeroperationcreate">Offer::Operation::Create</a>, we created a persistent
+volume from 2048 MB of disk resources. Mesos will not garbage-collect this
+volume until we explicitly destroy it. Suppose we would like to destroy the
 volume we created. First, we receive a resource offer (copy/pasted from above):</p>
 
 <pre><code>{
@@ -252,7 +258,7 @@ volume we created. First, we receive a r
 
 <p>We destroy the persistent volume by sending the <code>Offer::Operation</code> message via
 the <code>acceptOffers</code> API. <code>Offer::Operation::Destroy</code> has a <code>volumes</code> field which
-we specify the persistent volumes to be destroyed.</p>
+specifies the persistent volumes to be destroyed.</p>
 
 <pre><code>{
   "type" : Offer::Operation::DESTROY,
@@ -281,9 +287,9 @@ we specify the persistent volumes to be
 }
 </code></pre>
 
-<p>The persistent volume will be destroyed, but the disk resources will still be
-reserved. As such, the subsequent resource offer will <strong>contain</strong> the following
-reserved disk resources:</p>
+<p>If this request succeeds, the persistent volume will be destroyed but the disk
+resources will still be reserved. As such, a subsequent resource offer will
+contain the following reserved disk resources:</p>
 
 <pre><code>{
   "id" : &lt;offer_id&gt;,
@@ -304,13 +310,196 @@ reserved disk resources:</p>
 }
 </code></pre>
 
-<p>Note that in 0.23, even after you destroy the persistent volume, its content
-will still be on the disk. The garbage collection for persistent volumes is
-coming soon: <a href="https://issues.apache.org/jira/browse/MESOS-2408">MESOS-2048</a>.</p>
+<p>Those reserved resources can then be used as normal: e.g., they can be used to
+create another persistent volume or can be unreserved.</p>
+
+<p>Garbage collection for persistent volumes is planned but has not been
+implemented yet &ndash; <a href="https://issues.apache.org/jira/browse/MESOS-2408">MESOS-2408</a>.
+In the mean time, even after you destroy a persistent volume, its content will
+remain on disk.</p>
+
+<h3>Operator HTTP Endpoints</h3>
+
+<p>As described above, persistent volumes can be created by a framework scheduler
+as part of the resource offer cycle. Persistent volumes can also be created and
+destroyed by sending HTTP requests to the <code>/create-volumes</code> and
+<code>/destroy-volumes</code> endpoints, respectively. This capability is intended for use
+by operators and administrative tools.</p>
+
+<h4><code>/create-volumes</code></h4>
+
+<p>To use this endpoint, the operator should first ensure that a reservation for
+the necessary resources has been made on the appropriate slave (e.g., by using
+the <code>/reserve</code> HTTP endpoint or by configuring a static reservation).</p>
+
+<p>To create a 512MB persistent volume for the <code>ads</code> role on a dynamically reserved
+disk resource, we can send a request like so:</p>
+
+<pre><code>curl -i \
+     -u &lt;operator_principal&gt;:&lt;password&gt; \
+     -d slaveId=&lt;slave_id&gt; \
+     -d volumes='[
+       {
+         "name": "disk",
+         "type": "SCALAR",
+         "scalar": { "value": 512 },
+         "role": "ads",
+         "reservation": {
+           "principal": &lt;operator_principal&gt;
+         },
+         "disk": {
+           "persistence": {
+             "id" : &lt;persistence_id&gt;
+           },
+           "volume": {
+             "mode": "RW",
+             "container_path": &lt;path&gt;
+           }
+         }
+       }
+     ]' \
+     -X POST http://&lt;ip&gt;:&lt;port&gt;/master/create-volumes
+</code></pre>
+
+<p>The user receives one of the following HTTP responses:</p>
+
+<ul>
+<li><code>200 OK</code>: Success (the persistent volumes have been created).</li>
+<li><code>400 BadRequest</code>: Invalid arguments (e.g., missing parameters).</li>
+<li><code>401 Unauthorized</code>: Unauthenticated request.</li>
+<li><code>403 Forbidden</code>: Unauthorized request.</li>
+<li><code>409 Conflict</code>: Insufficient resources to create the volumes.</li>
+</ul>
+
+
+<p>Note that a single <code>/create-volumes</code> request can create multiple persistent
+volumes, but all of the volumes must be on the same slave.</p>
+
+<h4><code>/destroy-volumes</code></h4>
+
+<p>To destroy the volume created above, we can send an HTTP POST like so:</p>
+
+<pre><code>curl -i \
+     -u &lt;operator_principal&gt;:&lt;password&gt; \
+     -d slaveId=&lt;slave_id&gt; \
+     -d volumes='[
+       {
+         "name": "disk",
+         "type": "SCALAR",
+         "scalar": { "value": 512 },
+         "role": "ads",
+         "reservation": {
+           "principal": &lt;operator_principal&gt;
+         },
+         "disk": {
+           "persistence": {
+             "id" : &lt;persistence_id&gt;
+           },
+           "volume": {
+             "mode": "RW",
+             "container_path": &lt;path&gt;
+           }
+         }
+       }
+     ]' \
+     -X POST http://&lt;ip&gt;:&lt;port&gt;/master/destroy-volumes
+</code></pre>
+
+<p>The user receives one of the following HTTP responses:</p>
+
+<ul>
+<li><code>200 OK</code>: Success (the volumes have been destroyed).</li>
+<li><code>400 BadRequest</code>: Invalid arguments (e.g., missing parameters).</li>
+<li><code>401 Unauthorized</code>: Unauthenticated request.</li>
+<li><code>403 Forbidden</code>: Unauthorized request.</li>
+<li><code>409 Conflict</code>: Insufficient resources to destroy the volumes.</li>
+</ul>
+
+
+<p>Note that a single <code>/destroy-volumes</code> request can destroy multiple persistent
+volumes, but all of the volumes must be on the same slave.</p>
+
+<h3>Programming with Persistent Volumes</h3>
 
-<h3><code>/create</code> (<em>Coming Soon</em>)</h3>
+<p>Some suggestions to keep in mind when building applications that use persistent
+volumes:</p>
+
+<ul>
+<li><p>A single <code>acceptOffers</code> call can be used to both create a new dynamic
+reservation (via <code>Offer::Operation::Reserve</code>) and create a new persistent
+volume on those newly reserved resources (via <code>Offer::Operation::Create</code>).</p></li>
+<li><p>Attempts to dynamically reserve resources or create persistent volumes might
+fail&mdash;for example, because the network message containing the operation did
+not reach the master or because the master rejected the operation.
+Applications should be prepared to detect failures and correct for them (e.g.,
+by retrying the operation).</p></li>
+<li><p>When using HTTP endpoints to reserve resources or create persistent volumes,
+<em>some</em> failures can be detected by examining the HTTP response code returned
+to the client. However, it is still possible for a <code>200</code> response code to be
+returned to the client but for the associated operation to fail.</p></li>
+<li><p>When using the scheduler API, detecting that a dynamic reservation has failed
+is a little tricky: reservations do not have unique identifiers, and the Mesos
+master does not provide explicit feedback on whether a reservation request has
+succeeded or failed. Hence, framework schedulers typically use a combination
+of two techniques:</p>
+
+<ol>
+<li><p>They use timeouts to detect that a reservation request may have failed
+(because they don&rsquo;t receive a resource offer containing the expected
+resources after a given period of time).</p></li>
+<li><p>To check whether a resource offer includes the effect of a dynamic
+reservation, applications <em>cannot</em> check for the presence of a &ldquo;reservation
+ID&rdquo; or similar value (because reservations do not have IDs). Instead,
+applications should examine the resource offer and check it contains
+sufficient reserved resources for the application&rsquo;s role. If it does not,
+the application should make additional reservation requests as necessary.</p></li>
+</ol>
+</li>
+<li><p>When a scheduler issues a dynamic reservation request, the reserved resources
+might <em>not</em> be present in the next resource offer the scheduler receives.
+There are two reasons for this: first, the reservation request might fail or
+be dropped by the network, as discussed above. Second, the reservation request
+might simply be delayed, so that the next resource offer from the master will
+be issued before the reservation request is received by the master. This is
+why the text above suggests that applications wait for a timeout before
+assuming that a reservation request should be retried.</p></li>
+<li><p>A consequence of using timeouts to detect failures is that an application
+might submit more reservation requests than intended (e.g., a timeout fires
+and an application makes another reservation request; meanwhile, the original
+reservation request is also processed). Recall that two reservations for the
+same role at the same agent are &ldquo;merged&rdquo;: for example, role <code>foo</code> makes two
+requests to reserve 2 CPUs at a single agent and both reservation requests
+succeed, the result will be a single reservation of 4 CPUs. To handle this
+situation, applications should be prepared for resource offers that contain
+more resources than expected. Some applications may also want to detect this
+situation and unreserve an additional reserved resources that will not be
+required.</p></li>
+<li><p>It often makes sense to structure application logic as a &ldquo;state machine&rdquo;,
+where the application moves from its initial state (no reserved resources and
+no persistent volumes) and eventually transitions toward a single terminal
+state (necessary resources reserved and persistent volume created). As new
+events (such as timeouts and resource offers) are received, the application
+compares the event with its current state and decides what action to take
+next.</p></li>
+<li><p>Because persistent volumes are associated with roles, a volume might be
+offered to <em>any</em> of the frameworks that are registered in that role. For
+example, a persistent volume might be created by one framework and then
+offered to a different framework in the same role. This can be used to pass
+large volumes of data between frameworks in a convenient way. However, this
+behavior might also allow sensitive data created by one framework to be read
+or modified by another framework in the same role. It can also make it more
+difficult for frameworks to determine whether a dynamic reservation has
+succeeded: as discussed above, frameworks need to wait for an offer that
+contains the &ldquo;expected&rdquo; reserved resources to determine when a reservation
+request has succeeded. Determining what a framework should &ldquo;expect&rdquo; to find in
+an offer is more difficult when multiple frameworks can be making reservations
+for the same role concurrently. In general, whenever multiple frameworks are
+allowed to register in the same role, the operator should ensure that those
+frameworks are configured to collaborate with one another when using
+role-specific resources. For more information, see the discussion of
+<a href="roles.md#roles-multiple-frameworks">multiple frameworks in the same role</a>.</p></li>
+</ul>
 
-<h3><code>/destroy</code> (<em>Coming Soon</em>)</h3>
 
 	</div>
 </div>

Modified: mesos/site/publish/documentation/latest/powered-by-mesos/index.html
URL: http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/powered-by-mesos/index.html?rev=1727886&r1=1727885&r2=1727886&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/powered-by-mesos/index.html (original)
+++ mesos/site/publish/documentation/latest/powered-by-mesos/index.html Mon Feb  1 02:49:25 2016
@@ -94,6 +94,7 @@
 <li><a href="http://www.atigeo.com">Atigeo</a></li>
 <li><a href="http://www.atlassian.com">Atlassian</a></li>
 <li><a href="http://www.auchan.fr">Auchan Ecommerce France</a></li>
+<li><a href="http://www.blue-yonder.com">Blue Yonder</a></li>
 <li><a href="http://www.bol.com">Bol.com</a></li>
 <li><a href="http://www.brandingbrand.com">Branding Brand</a></li>
 <li><a href="http://www.brigade.com">Brigade</a></li>
@@ -113,8 +114,10 @@
 <li><a href="http://www.ebay.com">eBay</a></li>
 <li><a href="http://www.ericsson.com/">Ericsson</a></li>
 <li><a href="http://www.foursquare.com">Foursquare</a></li>
+<li><a href="http://www.genouest.org">GenOuest</a></li>
 <li><a href="http://www.gocardless.com">GoCardless</a></li>
 <li><a href="http://www.groupon.com">Groupon</a></li>
+<li><a href="http://www.gsshop.com">GSShop</a></li>
 <li><a href="http://www.gutefrage.net">Gutefrage.net</a></li>
 <li><a href="https://hootsuite.com">Hootsuite</a></li>
 <li><a href="http://www.hubspot.com">HubSpot</a></li>
@@ -134,6 +137,7 @@
 <li><a href="http://www.motus.com">Motus</a></li>
 <li><a href="http://www.netflix.com">Netflix</a></li>
 <li><a href="http://www.oakmorelabs.com">Oakmore Labs</a></li>
+<li><a href="http://www.orbitz.com/">Orbitz Worldwide</a></li>
 <li><a href="http://www.opencredo.com/">OpenCredo</a></li>
 <li><a href="http://www.opentable.com">OpenTable</a></li>
 <li><a href="https://www.hioscar.com/">Oscar Insurance</a></li>
@@ -141,6 +145,7 @@
 <li><a href="http://www.pinkbike.com">Pinkbike</a></li>
 <li><a href="http://www.profitstars.com">ProfitStars</a></li>
 <li><a href="http://www.qubitproducts.com">Qubit</a></li>
+<li><a href="http://www.qunar.com">Qunar</a></li>
 <li><a href="http://www.relateiq.com">RelateIQ</a></li>
 <li><a href="http://revise.ly">Revisely</a></li>
 <li><a href="http://www.sabre.com">Sabre Labs</a></li>