Author: dlester
Date: Wed Jul  1 18:55:31 2015
New Revision: 1688707

URL: http://svn.apache.org/r1688707
Log:
Updates Mesos documentation.

Added:
    mesos/site/publish/documentation/latest/mesos-documentation-guide/
    mesos/site/publish/documentation/latest/mesos-documentation-guide/index.html
    mesos/site/publish/documentation/latest/mesos-markdown-style-guide/
    
mesos/site/publish/documentation/latest/mesos-markdown-style-guide/index.html
    mesos/site/publish/documentation/latest/mesos-ssl/
    mesos/site/publish/documentation/latest/mesos-ssl/index.html
    mesos/site/publish/documentation/latest/monitoring/
    mesos/site/publish/documentation/latest/monitoring/index.html
    mesos/site/publish/documentation/latest/reservation/
    mesos/site/publish/documentation/latest/reservation/index.html
    mesos/site/publish/documentation/mesos-documentation-guide/
    mesos/site/publish/documentation/mesos-documentation-guide/index.html
    mesos/site/publish/documentation/mesos-markdown-style-guide/
    mesos/site/publish/documentation/mesos-markdown-style-guide/index.html
    mesos/site/publish/documentation/mesos-ssl/
    mesos/site/publish/documentation/mesos-ssl/index.html
    mesos/site/publish/documentation/monitoring/
    mesos/site/publish/documentation/monitoring/index.html
    mesos/site/publish/documentation/reservation/
    mesos/site/publish/documentation/reservation/index.html
    mesos/site/source/documentation/latest/mesos-documentation-guide.md
    mesos/site/source/documentation/latest/mesos-markdown-style-guide.md
    mesos/site/source/documentation/latest/mesos-ssl.md
    mesos/site/source/documentation/latest/monitoring.md
    mesos/site/source/documentation/latest/reservation.md
Modified:
    mesos/site/publish/documentation/allocation-module/index.html
    mesos/site/publish/documentation/app-framework-development-guide/index.html
    mesos/site/publish/documentation/clang-format/index.html
    mesos/site/publish/documentation/configuration/index.html
    mesos/site/publish/documentation/docker-containerizer/index.html
    mesos/site/publish/documentation/getting-started/index.html
    mesos/site/publish/documentation/index.html
    mesos/site/publish/documentation/latest/allocation-module/index.html
    
mesos/site/publish/documentation/latest/app-framework-development-guide/index.html
    mesos/site/publish/documentation/latest/clang-format/index.html
    mesos/site/publish/documentation/latest/configuration/index.html
    mesos/site/publish/documentation/latest/docker-containerizer/index.html
    mesos/site/publish/documentation/latest/getting-started/index.html
    mesos/site/publish/documentation/latest/index.html
    mesos/site/publish/documentation/latest/mesos-c++-style-guide/index.html
    mesos/site/publish/documentation/latest/mesos-doxygen-style-guide/index.html
    mesos/site/publish/documentation/latest/mesos-testing-patterns/index.html
    mesos/site/publish/documentation/latest/modules/index.html
    mesos/site/publish/documentation/latest/network-monitoring/index.html
    mesos/site/publish/documentation/latest/reconciliation/index.html
    mesos/site/publish/documentation/latest/release-guide/index.html
    mesos/site/publish/documentation/latest/upgrades/index.html
    mesos/site/publish/documentation/mesos-c++-style-guide/index.html
    mesos/site/publish/documentation/mesos-doxygen-style-guide/index.html
    mesos/site/publish/documentation/mesos-testing-patterns/index.html
    mesos/site/publish/documentation/modules/index.html
    mesos/site/publish/documentation/network-monitoring/index.html
    mesos/site/publish/documentation/reconciliation/index.html
    mesos/site/publish/documentation/release-guide/index.html
    mesos/site/publish/documentation/upgrades/index.html
    mesos/site/publish/gettingstarted/index.html
    mesos/site/publish/sitemap.xml
    mesos/site/source/documentation/latest.html.md
    mesos/site/source/documentation/latest/allocation-module.md
    mesos/site/source/documentation/latest/app-framework-development-guide.md
    mesos/site/source/documentation/latest/clang-format.md
    mesos/site/source/documentation/latest/committers.md
    mesos/site/source/documentation/latest/configuration.md
    mesos/site/source/documentation/latest/docker-containerizer.md
    mesos/site/source/documentation/latest/getting-started.md
    mesos/site/source/documentation/latest/mesos-c++-style-guide.md
    mesos/site/source/documentation/latest/mesos-doxygen-style-guide.md
    mesos/site/source/documentation/latest/mesos-testing-patterns.md
    mesos/site/source/documentation/latest/modules.md
    mesos/site/source/documentation/latest/network-monitoring.md
    mesos/site/source/documentation/latest/reconciliation.md
    mesos/site/source/documentation/latest/release-guide.md
    mesos/site/source/documentation/latest/upgrades.md

Modified: mesos/site/publish/documentation/allocation-module/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/allocation-module/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/allocation-module/index.html (original)
+++ mesos/site/publish/documentation/allocation-module/index.html Wed Jul  1 
18:55:31 2015
@@ -115,7 +115,7 @@
 
 <p>An allocator module is a factory function and a module description, as 
defined in <code>mesos/module/allocator.hpp</code>. Assuming the allocation 
logic is implemented by the <code>ExternalAllocator</code> class declared in 
<code>external_allocator.hpp</code>, the following snippet describes the 
implementation of an allocator module named 
<code>ExternalAllocatorModule</code>:</p>
 
-<pre><code>#include &lt;mesos/master/allocator.hpp&gt;
+<pre><code class="{.cpp}">#include &lt;mesos/master/allocator.hpp&gt;
 #include &lt;mesos/module/allocator.hpp&gt;
 #include &lt;stout/try.hpp&gt;
 

Modified: 
mesos/site/publish/documentation/app-framework-development-guide/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/app-framework-development-guide/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/app-framework-development-guide/index.html 
(original)
+++ mesos/site/publish/documentation/app-framework-development-guide/index.html 
Wed Jul  1 18:55:31 2015
@@ -85,126 +85,126 @@
 
 <p>In this document we refer to Mesos applications as 
&ldquo;frameworks&rdquo;.</p>
 
-<p>See one of the example framework schedulers in 
<code>MESOS_HOME/src/examples/</code> to get an idea of what a Mesos framework 
scheduler and executor in the language of your choice looks like.</p>
+<p>See one of the example framework schedulers in 
<code>MESOS_HOME/src/examples/</code> to get an idea of what a Mesos framework 
scheduler and executor in the language of your choice looks like. <a 
href="https://github.com/mesosphere/RENDLER";>RENDLER</a> provides example 
framework implementations in C++, Go, Haskell, Java, Python and Scala.</p>
 
 <h2>Create your Framework Scheduler</h2>
 
-<p>You can write a framework scheduler in C, C++, Java/Scala, or Python. Your 
framework scheduler should inherit from the <code>Scheduler</code> class (see 
API below). Your scheduler should create a SchedulerDriver (which will mediate 
communication between your scheduler and the Mesos master) and then call 
<code>SchedulerDriver.run()</code></p>
+<p>You can write a framework scheduler in C, C++, Java/Scala, or Python. Your 
framework scheduler should inherit from the <code>Scheduler</code> class (see 
API below). Your scheduler should create a SchedulerDriver (which will mediate 
communication between your scheduler and the Mesos master) and then call 
<code>SchedulerDriver.run()</code>.</p>
 
 <h3>Scheduler API</h3>
 
-<p>Declared in <code>MESOS_HOME/include/mesos/scheduler.hpp</code></p>
-
-<pre><code>  /**
-   * Empty virtual destructor (necessary to instantiate subclasses).
-   */
-  virtual ~Scheduler() {}
-
-  /**
-   * Invoked when the scheduler successfully registers with a Mesos
-   * master. A unique ID (generated by the master) used for
-   * distinguishing this framework from others and MasterInfo
-   * with the ip and port of the current master are provided as arguments.
-   */
-  virtual void registered(SchedulerDriver* driver,
-                          const FrameworkID&amp; frameworkId,
-                          const MasterInfo&amp; masterInfo) = 0;
-
-  /**
-   * Invoked when the scheduler re-registers with a newly elected Mesos master.
-   * This is only called when the scheduler has previously been registered.
-   * MasterInfo containing the updated information about the elected master
-   * is provided as an argument.
-   */
-  virtual void reregistered(SchedulerDriver* driver,
-                            const MasterInfo&amp; masterInfo) = 0;
-
-  /**
-   * Invoked when the scheduler becomes "disconnected" from the master
-   * (e.g., the master fails and another is taking over).
-   */
-  virtual void disconnected(SchedulerDriver* driver) = 0;
-
-  /**
-   * Invoked when resources have been offered to this framework. A
-   * single offer will only contain resources from a single slave.
-   * Resources associated with an offer will not be re-offered to
-   * _this_ framework until either (a) this framework has rejected
-   * those resources (see SchedulerDriver::launchTasks) or (b) those
-   * resources have been rescinded (see Scheduler::offerRescinded).
-   * Note that resources may be concurrently offered to more than one
-   * framework at a time (depending on the allocator being used). In
-   * that case, the first framework to launch tasks using those
-   * resources will be able to use them while the other frameworks
-   * will have those resources rescinded (or if a framework has
-   * already launched tasks with those resources then those tasks will
-   * fail with a TASK_LOST status and a message saying as much).
-   */
-  virtual void resourceOffers(SchedulerDriver* driver,
-                              const std::vector&lt;Offer&gt;&amp; offers) = 0;
-
-  /**
-   * Invoked when an offer is no longer valid (e.g., the slave was
-   * lost or another framework used resources in the offer). If for
-   * whatever reason an offer is never rescinded (e.g., dropped
-   * message, failing over framework, etc.), a framwork that attempts
-   * to launch tasks using an invalid offer will receive TASK_LOST
-   * status updats for those tasks (see Scheduler::resourceOffers).
-   */
-  virtual void offerRescinded(SchedulerDriver* driver,
-                              const OfferID&amp; offerId) = 0;
-
-  /**
-   * Invoked when the status of a task has changed (e.g., a slave is
-   * lost and so the task is lost, a task finishes and an executor
-   * sends a status update saying so, etc). If implicit
-   * acknowledgements are being used, then returning from this
-   * callback _acknowledges_ receipt of this status update! If for
-   * whatever reason the scheduler aborts during this callback (or
-   * the process exits) another status update will be delivered (note,
-   * however, that this is currently not true if the slave sending the
-   * status update is lost/fails during that time). If explicit
-   * acknowledgements are in use, the scheduler must acknowledge this
-   * status on the driver.
-   */
-  virtual void statusUpdate(SchedulerDriver* driver,
-                            const TaskStatus&amp; status) = 0;
-
-  /**
-   * Invoked when an executor sends a message. These messages are best
-   * effort; do not expect a framework message to be retransmitted in
-   * any reliable fashion.
-   */
-  virtual void frameworkMessage(SchedulerDriver* driver,
-                                const ExecutorID&amp; executorId,
-                                const SlaveID&amp; slaveId,
-                                const std::string&amp; data) = 0;
-
-  /**
-   * Invoked when a slave has been determined unreachable (e.g.,
-   * machine failure, network partition). Most frameworks will need to
-   * reschedule any tasks launched on this slave on a new slave.
-   */
-  virtual void slaveLost(SchedulerDriver* driver,
-                         const SlaveID&amp; slaveId) = 0;
-
-  /**
-   * Invoked when an executor has exited/terminated. Note that any
-   * tasks running will have TASK_LOST status updates automagically
-   * generated.
-   */
-  virtual void executorLost(SchedulerDriver* driver,
-                            const ExecutorID&amp; executorId,
-                            const SlaveID&amp; slaveId,
-                            int status) = 0;
-
-  /**
-   * Invoked when there is an unrecoverable error in the scheduler or
-   * scheduler driver. The driver will be aborted BEFORE invoking this
-   * callback.
-   */
-  virtual void error(SchedulerDriver* driver, const std::string&amp; message) 
= 0;
-</code></pre>
+<p>Declared in <code>MESOS_HOME/include/mesos/scheduler.hpp</code>
+<del>~~{.cpp}
+/<em>
+ * Empty virtual destructor (necessary to instantiate subclasses).
+ </em>/
+virtual </del>Scheduler() {}</p>
+
+<p>/<em>
+ * Invoked when the scheduler successfully registers with a Mesos
+ * master. A unique ID (generated by the master) used for
+ * distinguishing this framework from others and MasterInfo
+ * with the ip and port of the current master are provided as arguments.
+ </em>/
+virtual void registered(SchedulerDriver* driver,
+                        const FrameworkID&amp; frameworkId,
+                        const MasterInfo&amp; masterInfo) = 0;</p>
+
+<p>/<em>
+ * Invoked when the scheduler re-registers with a newly elected Mesos master.
+ * This is only called when the scheduler has previously been registered.
+ * MasterInfo containing the updated information about the elected master
+ * is provided as an argument.
+ </em>/
+virtual void reregistered(SchedulerDriver* driver,
+                          const MasterInfo&amp; masterInfo) = 0;</p>
+
+<p>/<em>
+ * Invoked when the scheduler becomes &ldquo;disconnected&rdquo; from the 
master
+ * (e.g., the master fails and another is taking over).
+ </em>/
+virtual void disconnected(SchedulerDriver* driver) = 0;</p>
+
+<p>/<em>
+ * Invoked when resources have been offered to this framework. A
+ * single offer will only contain resources from a single slave.
+ * Resources associated with an offer will not be re-offered to
+ * <em>this</em> framework until either (a) this framework has rejected
+ * those resources (see SchedulerDriver::launchTasks) or (b) those
+ * resources have been rescinded (see Scheduler::offerRescinded).
+ * Note that resources may be concurrently offered to more than one
+ * framework at a time (depending on the allocator being used). In
+ * that case, the first framework to launch tasks using those
+ * resources will be able to use them while the other frameworks
+ * will have those resources rescinded (or if a framework has
+ * already launched tasks with those resources then those tasks will
+ * fail with a TASK_LOST status and a message saying as much).
+ </em>/
+virtual void resourceOffers(SchedulerDriver* driver,
+                            const std::vector<Offer>&amp; offers) = 0;</p>
+
+<p>/<em>
+ * Invoked when an offer is no longer valid (e.g., the slave was
+ * lost or another framework used resources in the offer). If for
+ * whatever reason an offer is never rescinded (e.g., dropped
+ * message, failing over framework, etc.), a framwork that attempts
+ * to launch tasks using an invalid offer will receive TASK_LOST
+ * status updats for those tasks (see Scheduler::resourceOffers).
+ </em>/
+virtual void offerRescinded(SchedulerDriver* driver,
+                            const OfferID&amp; offerId) = 0;</p>
+
+<p>/<em>
+ * Invoked when the status of a task has changed (e.g., a slave is
+ * lost and so the task is lost, a task finishes and an executor
+ * sends a status update saying so, etc). If implicit
+ * acknowledgements are being used, then returning from this
+ * callback <em>acknowledges</em> receipt of this status update! If for
+ * whatever reason the scheduler aborts during this callback (or
+ * the process exits) another status update will be delivered (note,
+ * however, that this is currently not true if the slave sending the
+ * status update is lost/fails during that time). If explicit
+ * acknowledgements are in use, the scheduler must acknowledge this
+ * status on the driver.
+ </em>/
+virtual void statusUpdate(SchedulerDriver* driver,
+                          const TaskStatus&amp; status) = 0;</p>
+
+<p>/<em>
+ * Invoked when an executor sends a message. These messages are best
+ * effort; do not expect a framework message to be retransmitted in
+ * any reliable fashion.
+ </em>/
+virtual void frameworkMessage(SchedulerDriver* driver,
+                              const ExecutorID&amp; executorId,
+                              const SlaveID&amp; slaveId,
+                              const std::string&amp; data) = 0;</p>
+
+<p>/<em>
+ * Invoked when a slave has been determined unreachable (e.g.,
+ * machine failure, network partition). Most frameworks will need to
+ * reschedule any tasks launched on this slave on a new slave.
+ </em>/
+virtual void slaveLost(SchedulerDriver* driver,
+                       const SlaveID&amp; slaveId) = 0;</p>
+
+<p>/<em>
+ * Invoked when an executor has exited/terminated. Note that any
+ * tasks running will have TASK_LOST status updates automagically
+ * generated.
+ </em>/
+virtual void executorLost(SchedulerDriver* driver,
+                          const ExecutorID&amp; executorId,
+                          const SlaveID&amp; slaveId,
+                          int status) = 0;</p>
+
+<p>/<em>
+ * Invoked when there is an unrecoverable error in the scheduler or
+ * scheduler driver. The driver will be aborted BEFORE invoking this
+ * callback.
+ </em>/
+virtual void error(SchedulerDriver* driver, const std::string&amp; message) = 
0;
+~~~</p>
 
 <h2>Create your Framework Executor</h2>
 
@@ -214,71 +214,71 @@
 
 <p>Declared in <code>MESOS_HOME/include/mesos/executor.hpp</code></p>
 
-<pre><code>  /**
-   * Invoked once the executor driver has been able to successfully
-   * connect with Mesos. In particular, a scheduler can pass some
-   * data to it's executors through the FrameworkInfo.ExecutorInfo's
-   * data field.
-   */
-  virtual void registered(ExecutorDriver* driver,
-                          const ExecutorInfo&amp; executorInfo,
-                          const FrameworkInfo&amp; frameworkInfo,
+<pre><code class="{.cpp}">/*
+ * Invoked once the executor driver has been able to successfully
+ * connect with Mesos. In particular, a scheduler can pass some
+ * data to it's executors through the FrameworkInfo.ExecutorInfo's
+ * data field.
+ */
+virtual void registered(ExecutorDriver* driver,
+                        const ExecutorInfo&amp; executorInfo,
+                        const FrameworkInfo&amp; frameworkInfo,
+                        const SlaveInfo&amp; slaveInfo) = 0;
+
+/*
+ * Invoked when the executor re-registers with a restarted slave.
+ */
+virtual void reregistered(ExecutorDriver* driver,
                           const SlaveInfo&amp; slaveInfo) = 0;
 
-  /**
-   * Invoked when the executor re-registers with a restarted slave.
-   */
-  virtual void reregistered(ExecutorDriver* driver,
-                            const SlaveInfo&amp; slaveInfo) = 0;
-
-  /**
-   * Invoked when the executor becomes "disconnected" from the slave
-   * (e.g., the slave is being restarted due to an upgrade).
-   */
-  virtual void disconnected(ExecutorDriver* driver) = 0;
-
-  /**
-   * Invoked when a task has been launched on this executor (initiated
-   * via Scheduler::launchTasks). Note that this task can be realized
-   * with a thread, a process, or some simple computation, however, no
-   * other callbacks will be invoked on this executor until this
-   * callback has returned.
-   */
-  virtual void launchTask(ExecutorDriver* driver,
-                          const TaskInfo&amp; task) = 0;
-
-  /**
-   * Invoked when a task running within this executor has been killed
-   * (via SchedulerDriver::killTask). Note that no status update will
-   * be sent on behalf of the executor, the executor is responsible
-   * for creating a new TaskStatus (i.e., with TASK_KILLED) and
-   * invoking ExecutorDriver::sendStatusUpdate.
-   */
-  virtual void killTask(ExecutorDriver* driver, const TaskID&amp; taskId) = 0;
-
-  /**
-   * Invoked when a framework message has arrived for this
-   * executor. These messages are best effort; do not expect a
-   * framework message to be retransmitted in any reliable fashion.
-   */
-    virtual void frameworkMessage(ExecutorDriver* driver,
-                                  const std::string&amp; data) = 0;
-
-  /**
-   * Invoked when the executor should terminate all of it's currently
-   * running tasks. Note that after a Mesos has determined that an
-   * executor has terminated any tasks that the executor did not send
-   * terminal status updates for (e.g., TASK_KILLED, TASK_FINISHED,
-   * TASK_FAILED, etc) a TASK_LOST status update will be created.
-   */
-  virtual void shutdown(ExecutorDriver* driver) = 0;
-
-  /**
-   * Invoked when a fatal error has occurred with the executor and/or
-   * executor driver. The driver will be aborted BEFORE invoking this
-   * callback.
-   */
-  virtual void error(ExecutorDriver* driver, const std::string&amp; message) = 
0;
+/*
+ * Invoked when the executor becomes "disconnected" from the slave
+ * (e.g., the slave is being restarted due to an upgrade).
+ */
+virtual void disconnected(ExecutorDriver* driver) = 0;
+
+/*
+ * Invoked when a task has been launched on this executor (initiated
+ * via Scheduler::launchTasks). Note that this task can be realized
+ * with a thread, a process, or some simple computation, however, no
+ * other callbacks will be invoked on this executor until this
+ * callback has returned.
+ */
+virtual void launchTask(ExecutorDriver* driver,
+                        const TaskInfo&amp; task) = 0;
+
+/*
+ * Invoked when a task running within this executor has been killed
+ * (via SchedulerDriver::killTask). Note that no status update will
+ * be sent on behalf of the executor, the executor is responsible
+ * for creating a new TaskStatus (i.e., with TASK_KILLED) and
+ * invoking ExecutorDriver::sendStatusUpdate.
+ */
+virtual void killTask(ExecutorDriver* driver, const TaskID&amp; taskId) = 0;
+
+/*
+ * Invoked when a framework message has arrived for this
+ * executor. These messages are best effort; do not expect a
+ * framework message to be retransmitted in any reliable fashion.
+ */
+virtual void frameworkMessage(ExecutorDriver* driver,
+                              const std::string&amp; data) = 0;
+
+/*
+ * Invoked when the executor should terminate all of it's currently
+ * running tasks. Note that after a Mesos has determined that an
+ * executor has terminated any tasks that the executor did not send
+ * terminal status updates for (e.g., TASK_KILLED, TASK_FINISHED,
+ * TASK_FAILED, etc) a TASK_LOST status update will be created.
+ */
+virtual void shutdown(ExecutorDriver* driver) = 0;
+
+/*
+ * Invoked when a fatal error has occurred with the executor and/or
+ * executor driver. The driver will be aborted BEFORE invoking this
+ * callback.
+ */
+virtual void error(ExecutorDriver* driver, const std::string&amp; message) = 0;
 </code></pre>
 
 <h2>Install your Framework</h2>

Modified: mesos/site/publish/documentation/clang-format/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/clang-format/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/clang-format/index.html (original)
+++ mesos/site/publish/documentation/clang-format/index.html Wed Jul  1 
18:55:31 2015
@@ -93,7 +93,7 @@
 
 <h4>Ubuntu 14.04</h4>
 
-<pre><code class="bash"># Ensure apt-get is up to date.
+<pre><code># Ensure apt-get is up to date.
 sudo apt-get update
 
 # Install clang-format-3.5
@@ -102,7 +102,7 @@ sudo apt-get install clang-format-3.5
 
 <h4>OS X Yosemite</h4>
 
-<pre><code class="bash"># Install clang-3.5. The binaries are suffixed with 
'-3.5', e.g. 'clang++-3.5'.
+<pre><code># Install clang-3.5. The binaries are suffixed with '-3.5', e.g. 
'clang++-3.5'.
 $ brew install llvm35 --with-clang
 
 # Download and install the clang-format scripts.

Modified: mesos/site/publish/documentation/configuration/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/configuration/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/configuration/index.html (original)
+++ mesos/site/publish/documentation/configuration/index.html Wed Jul  1 
18:55:31 2015
@@ -448,6 +448,17 @@ file:///path/to/file (where file contain
   </tr>
   <tr>
     <td>
+      --max_slave_ping_timeouts=VALUE
+    </td>
+    <td>
+      The number of times a slave can fail to respond to a
+      ping from the master. Slaves that incur more than
+      `max_slave_ping_timeouts` timeouts will be removed.
+      (default: 5)
+    </td>
+  </tr>
+  <tr>
+    <td>
       --modules=VALUE
     </td>
     <td>
@@ -561,18 +572,6 @@ file:///path/to/file (where file contain
   </tr>
   <tr>
     <td>
-      --slave_removal_rate_limit=VALUE
-    </td>
-    <td>
-      The maximum rate (e.g., 1/10mins, 2/3hrs, etc) at which slaves will
-      be removed from the master when they fail health checks. By default
-      slaves will be removed as soon as they fail the health checks.
-      <p/>
-      The value is of the form 'Number of slaves'/'Duration'
-    </td>
-  </tr>
-  <tr>
-    <td>
       --registry=VALUE
     </td>
     <td>
@@ -633,6 +632,29 @@ file:///path/to/file (where file contain
     </td>
   </tr>
   <tr>
+    <td>
+      --slave_ping_timeout=VALUE
+    </td>
+    <td>
+      The timeout within which each slave is expected to respond to a
+      ping from the master. Slaves that do not respond within
+      `max_slave_ping_timeouts` ping retries will be removed.
+      (default: 15secs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --slave_removal_rate_limit=VALUE
+    </td>
+    <td>
+      The maximum rate (e.g., 1/10mins, 2/3hrs, etc) at which slaves will
+      be removed from the master when they fail health checks. By default
+      slaves will be removed as soon as they fail the health checks.
+      <p/>
+      The value is of the form 'Number of slaves'/'Duration'
+    </td>
+  </tr>
+  <tr>
     <td>
       --slave_reregister_timeout=VALUE
     </td>

Modified: mesos/site/publish/documentation/docker-containerizer/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/docker-containerizer/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/docker-containerizer/index.html (original)
+++ mesos/site/publish/documentation/docker-containerizer/index.html Wed Jul  1 
18:55:31 2015
@@ -137,7 +137,7 @@ set the HOME environment variable pointi
 
 <h2>CommandInfo to run Docker images</h2>
 
-<p>A docker image currently supports having a entrypoint and/or a default 
command.</p>
+<p>A docker image currently supports having an entrypoint and/or a default 
command.</p>
 
 <p>To run a docker image with the default command (ie: docker run image), the 
CommandInfo&rsquo;s value must not be set. If the value is set then it will 
override the default command.</p>
 

Modified: mesos/site/publish/documentation/getting-started/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/getting-started/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/getting-started/index.html (original)
+++ mesos/site/publish/documentation/getting-started/index.html Wed Jul  1 
18:55:31 2015
@@ -180,34 +180,31 @@
 
 <h3>CentOS 7.1</h3>
 
-<ul>
-<li><p>Following are the instructions for stock CentOS 7.1. If you are using a 
different OS, please install the packages accordingly.</p>
+<p>Following are the instructions for stock CentOS 7.1. If you are using a 
different OS, please install the packages accordingly.</p>
 
-<pre><code>  # Install a few utility tools
-  $ sudo yum install -y tar wget
+<pre><code>    # Install a few utility tools
+    $ sudo yum install -y tar wget
 
-  # Fetch the Apache Maven repo file.
-  $ sudo wget 
http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo 
-O /etc/yum.repos.d/epel-apache-maven.repo
+    # Fetch the Apache Maven repo file.
+    $ sudo wget 
http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo 
-O /etc/yum.repos.d/epel-apache-maven.repo
 
-  # 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which is
-  # not available in the default repositories.
-  # Add the WANdisco SVN repo file: '/etc/yum.repos.d/wandisco-svn.repo' with 
content:
-
-    [WANdiscoSVN]
-    name=WANdisco SVN Repo 1.9
-    enabled=1
-    baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
-    gpgcheck=1
-    gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
-
-  # Install essential development tools.
-  $ sudo yum groupinstall -y "Development Tools"
-
-  # Install other Mesos dependencies.
-  $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel 
zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 
apr-devel subversion-devel apr-util-devel
-</code></pre></li>
-</ul>
+    # 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which 
is
+    # not available in the default repositories.
+    # Add the WANdisco SVN repo file: '/etc/yum.repos.d/wandisco-svn.repo' 
with content:
+
+      [WANdiscoSVN]
+      name=WANdisco SVN Repo 1.9
+      enabled=1
+      baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
+      gpgcheck=1
+      gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
 
+    # Install essential development tools.
+    $ sudo yum groupinstall -y "Development Tools"
+
+    # Install other Mesos dependencies.
+    $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel 
zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 
apr-devel subversion-devel apr-util-devel
+</code></pre>
 
 <h2>Building Mesos</h2>
 
@@ -224,7 +221,7 @@
     $ make
 </code></pre>
 
-<p>In order to speed up the build and reduce verbosity of the logs, you can 
append <code>-j=&lt;number of cores&gt; V=0</code> to <code>make</code>.</p>
+<p>In order to speed up the build and reduce verbosity of the logs, you can 
append <code>-j &lt;number of cores&gt; V=0</code> to <code>make</code>.</p>
 
 <pre><code>    # Run test suite.
     $ make check

Modified: mesos/site/publish/documentation/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/index.html (original)
+++ mesos/site/publish/documentation/index.html Wed Jul  1 18:55:31 2015
@@ -103,6 +103,7 @@
 <li><a href="/documentation/latest/logging-and-debugging/">Logging and 
Debugging</a> for viewing Mesos and framework logs.</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>
 <li><a href="/documentation/latest/network-monitoring/">Network 
Monitoring</a></li>
 <li><a href="/documentation/latest/slave-recovery/">Slave Recovery</a> for 
doing seamless upgrades.</li>
 <li><a href="/documentation/latest/tools/">Tools</a> for setting up and 
running a Mesos cluster.</li>
@@ -145,8 +146,14 @@
 <li><a href="/documentation/latest/committing/">Committing</a> guidelines for 
committing changes.</li>
 <li><a href="/documentation/latest/committers/">Committers and Maintainers</a> 
a listing of project committers and component maintainers; useful when seeking 
feedback.</li>
 <li><a href="/api/latest/c++/">Doxygen</a> documents the internal Mesos 
APIs.</li>
+<li><a href="/documentation/latest/mesos-documentation-guide/">Documentation 
Guide</a>
+
+<ul>
 <li><a href="/documentation/latest/mesos-c++-style-guide/">C++ Style 
Guide</a></li>
 <li><a href="/documentation/latest/mesos-doxygen-style-guide/">Doxygen Style 
Guide</a></li>
+<li><a href="/documentation/latest/mesos-markdown-style-guide/">Markdown Style 
Guide</a></li>
+</ul>
+</li>
 <li><a href="/documentation/latest/mesos-roadmap/">Development Roadmap</a></li>
 <li><a href="/documentation/latest/release-guide/">Release Guide</a></li>
 </ul>

Modified: mesos/site/publish/documentation/latest/allocation-module/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/allocation-module/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/allocation-module/index.html 
(original)
+++ mesos/site/publish/documentation/latest/allocation-module/index.html Wed 
Jul  1 18:55:31 2015
@@ -115,7 +115,7 @@
 
 <p>An allocator module is a factory function and a module description, as 
defined in <code>mesos/module/allocator.hpp</code>. Assuming the allocation 
logic is implemented by the <code>ExternalAllocator</code> class declared in 
<code>external_allocator.hpp</code>, the following snippet describes the 
implementation of an allocator module named 
<code>ExternalAllocatorModule</code>:</p>
 
-<pre><code>#include &lt;mesos/master/allocator.hpp&gt;
+<pre><code class="{.cpp}">#include &lt;mesos/master/allocator.hpp&gt;
 #include &lt;mesos/module/allocator.hpp&gt;
 #include &lt;stout/try.hpp&gt;
 

Modified: 
mesos/site/publish/documentation/latest/app-framework-development-guide/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/app-framework-development-guide/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- 
mesos/site/publish/documentation/latest/app-framework-development-guide/index.html
 (original)
+++ 
mesos/site/publish/documentation/latest/app-framework-development-guide/index.html
 Wed Jul  1 18:55:31 2015
@@ -85,126 +85,126 @@
 
 <p>In this document we refer to Mesos applications as 
&ldquo;frameworks&rdquo;.</p>
 
-<p>See one of the example framework schedulers in 
<code>MESOS_HOME/src/examples/</code> to get an idea of what a Mesos framework 
scheduler and executor in the language of your choice looks like.</p>
+<p>See one of the example framework schedulers in 
<code>MESOS_HOME/src/examples/</code> to get an idea of what a Mesos framework 
scheduler and executor in the language of your choice looks like. <a 
href="https://github.com/mesosphere/RENDLER";>RENDLER</a> provides example 
framework implementations in C++, Go, Haskell, Java, Python and Scala.</p>
 
 <h2>Create your Framework Scheduler</h2>
 
-<p>You can write a framework scheduler in C, C++, Java/Scala, or Python. Your 
framework scheduler should inherit from the <code>Scheduler</code> class (see 
API below). Your scheduler should create a SchedulerDriver (which will mediate 
communication between your scheduler and the Mesos master) and then call 
<code>SchedulerDriver.run()</code></p>
+<p>You can write a framework scheduler in C, C++, Java/Scala, or Python. Your 
framework scheduler should inherit from the <code>Scheduler</code> class (see 
API below). Your scheduler should create a SchedulerDriver (which will mediate 
communication between your scheduler and the Mesos master) and then call 
<code>SchedulerDriver.run()</code>.</p>
 
 <h3>Scheduler API</h3>
 
-<p>Declared in <code>MESOS_HOME/include/mesos/scheduler.hpp</code></p>
-
-<pre><code>  /**
-   * Empty virtual destructor (necessary to instantiate subclasses).
-   */
-  virtual ~Scheduler() {}
-
-  /**
-   * Invoked when the scheduler successfully registers with a Mesos
-   * master. A unique ID (generated by the master) used for
-   * distinguishing this framework from others and MasterInfo
-   * with the ip and port of the current master are provided as arguments.
-   */
-  virtual void registered(SchedulerDriver* driver,
-                          const FrameworkID&amp; frameworkId,
-                          const MasterInfo&amp; masterInfo) = 0;
-
-  /**
-   * Invoked when the scheduler re-registers with a newly elected Mesos master.
-   * This is only called when the scheduler has previously been registered.
-   * MasterInfo containing the updated information about the elected master
-   * is provided as an argument.
-   */
-  virtual void reregistered(SchedulerDriver* driver,
-                            const MasterInfo&amp; masterInfo) = 0;
-
-  /**
-   * Invoked when the scheduler becomes "disconnected" from the master
-   * (e.g., the master fails and another is taking over).
-   */
-  virtual void disconnected(SchedulerDriver* driver) = 0;
-
-  /**
-   * Invoked when resources have been offered to this framework. A
-   * single offer will only contain resources from a single slave.
-   * Resources associated with an offer will not be re-offered to
-   * _this_ framework until either (a) this framework has rejected
-   * those resources (see SchedulerDriver::launchTasks) or (b) those
-   * resources have been rescinded (see Scheduler::offerRescinded).
-   * Note that resources may be concurrently offered to more than one
-   * framework at a time (depending on the allocator being used). In
-   * that case, the first framework to launch tasks using those
-   * resources will be able to use them while the other frameworks
-   * will have those resources rescinded (or if a framework has
-   * already launched tasks with those resources then those tasks will
-   * fail with a TASK_LOST status and a message saying as much).
-   */
-  virtual void resourceOffers(SchedulerDriver* driver,
-                              const std::vector&lt;Offer&gt;&amp; offers) = 0;
-
-  /**
-   * Invoked when an offer is no longer valid (e.g., the slave was
-   * lost or another framework used resources in the offer). If for
-   * whatever reason an offer is never rescinded (e.g., dropped
-   * message, failing over framework, etc.), a framwork that attempts
-   * to launch tasks using an invalid offer will receive TASK_LOST
-   * status updats for those tasks (see Scheduler::resourceOffers).
-   */
-  virtual void offerRescinded(SchedulerDriver* driver,
-                              const OfferID&amp; offerId) = 0;
-
-  /**
-   * Invoked when the status of a task has changed (e.g., a slave is
-   * lost and so the task is lost, a task finishes and an executor
-   * sends a status update saying so, etc). If implicit
-   * acknowledgements are being used, then returning from this
-   * callback _acknowledges_ receipt of this status update! If for
-   * whatever reason the scheduler aborts during this callback (or
-   * the process exits) another status update will be delivered (note,
-   * however, that this is currently not true if the slave sending the
-   * status update is lost/fails during that time). If explicit
-   * acknowledgements are in use, the scheduler must acknowledge this
-   * status on the driver.
-   */
-  virtual void statusUpdate(SchedulerDriver* driver,
-                            const TaskStatus&amp; status) = 0;
-
-  /**
-   * Invoked when an executor sends a message. These messages are best
-   * effort; do not expect a framework message to be retransmitted in
-   * any reliable fashion.
-   */
-  virtual void frameworkMessage(SchedulerDriver* driver,
-                                const ExecutorID&amp; executorId,
-                                const SlaveID&amp; slaveId,
-                                const std::string&amp; data) = 0;
-
-  /**
-   * Invoked when a slave has been determined unreachable (e.g.,
-   * machine failure, network partition). Most frameworks will need to
-   * reschedule any tasks launched on this slave on a new slave.
-   */
-  virtual void slaveLost(SchedulerDriver* driver,
-                         const SlaveID&amp; slaveId) = 0;
-
-  /**
-   * Invoked when an executor has exited/terminated. Note that any
-   * tasks running will have TASK_LOST status updates automagically
-   * generated.
-   */
-  virtual void executorLost(SchedulerDriver* driver,
-                            const ExecutorID&amp; executorId,
-                            const SlaveID&amp; slaveId,
-                            int status) = 0;
-
-  /**
-   * Invoked when there is an unrecoverable error in the scheduler or
-   * scheduler driver. The driver will be aborted BEFORE invoking this
-   * callback.
-   */
-  virtual void error(SchedulerDriver* driver, const std::string&amp; message) 
= 0;
-</code></pre>
+<p>Declared in <code>MESOS_HOME/include/mesos/scheduler.hpp</code>
+<del>~~{.cpp}
+/<em>
+ * Empty virtual destructor (necessary to instantiate subclasses).
+ </em>/
+virtual </del>Scheduler() {}</p>
+
+<p>/<em>
+ * Invoked when the scheduler successfully registers with a Mesos
+ * master. A unique ID (generated by the master) used for
+ * distinguishing this framework from others and MasterInfo
+ * with the ip and port of the current master are provided as arguments.
+ </em>/
+virtual void registered(SchedulerDriver* driver,
+                        const FrameworkID&amp; frameworkId,
+                        const MasterInfo&amp; masterInfo) = 0;</p>
+
+<p>/<em>
+ * Invoked when the scheduler re-registers with a newly elected Mesos master.
+ * This is only called when the scheduler has previously been registered.
+ * MasterInfo containing the updated information about the elected master
+ * is provided as an argument.
+ </em>/
+virtual void reregistered(SchedulerDriver* driver,
+                          const MasterInfo&amp; masterInfo) = 0;</p>
+
+<p>/<em>
+ * Invoked when the scheduler becomes &ldquo;disconnected&rdquo; from the 
master
+ * (e.g., the master fails and another is taking over).
+ </em>/
+virtual void disconnected(SchedulerDriver* driver) = 0;</p>
+
+<p>/<em>
+ * Invoked when resources have been offered to this framework. A
+ * single offer will only contain resources from a single slave.
+ * Resources associated with an offer will not be re-offered to
+ * <em>this</em> framework until either (a) this framework has rejected
+ * those resources (see SchedulerDriver::launchTasks) or (b) those
+ * resources have been rescinded (see Scheduler::offerRescinded).
+ * Note that resources may be concurrently offered to more than one
+ * framework at a time (depending on the allocator being used). In
+ * that case, the first framework to launch tasks using those
+ * resources will be able to use them while the other frameworks
+ * will have those resources rescinded (or if a framework has
+ * already launched tasks with those resources then those tasks will
+ * fail with a TASK_LOST status and a message saying as much).
+ </em>/
+virtual void resourceOffers(SchedulerDriver* driver,
+                            const std::vector<Offer>&amp; offers) = 0;</p>
+
+<p>/<em>
+ * Invoked when an offer is no longer valid (e.g., the slave was
+ * lost or another framework used resources in the offer). If for
+ * whatever reason an offer is never rescinded (e.g., dropped
+ * message, failing over framework, etc.), a framwork that attempts
+ * to launch tasks using an invalid offer will receive TASK_LOST
+ * status updats for those tasks (see Scheduler::resourceOffers).
+ </em>/
+virtual void offerRescinded(SchedulerDriver* driver,
+                            const OfferID&amp; offerId) = 0;</p>
+
+<p>/<em>
+ * Invoked when the status of a task has changed (e.g., a slave is
+ * lost and so the task is lost, a task finishes and an executor
+ * sends a status update saying so, etc). If implicit
+ * acknowledgements are being used, then returning from this
+ * callback <em>acknowledges</em> receipt of this status update! If for
+ * whatever reason the scheduler aborts during this callback (or
+ * the process exits) another status update will be delivered (note,
+ * however, that this is currently not true if the slave sending the
+ * status update is lost/fails during that time). If explicit
+ * acknowledgements are in use, the scheduler must acknowledge this
+ * status on the driver.
+ </em>/
+virtual void statusUpdate(SchedulerDriver* driver,
+                          const TaskStatus&amp; status) = 0;</p>
+
+<p>/<em>
+ * Invoked when an executor sends a message. These messages are best
+ * effort; do not expect a framework message to be retransmitted in
+ * any reliable fashion.
+ </em>/
+virtual void frameworkMessage(SchedulerDriver* driver,
+                              const ExecutorID&amp; executorId,
+                              const SlaveID&amp; slaveId,
+                              const std::string&amp; data) = 0;</p>
+
+<p>/<em>
+ * Invoked when a slave has been determined unreachable (e.g.,
+ * machine failure, network partition). Most frameworks will need to
+ * reschedule any tasks launched on this slave on a new slave.
+ </em>/
+virtual void slaveLost(SchedulerDriver* driver,
+                       const SlaveID&amp; slaveId) = 0;</p>
+
+<p>/<em>
+ * Invoked when an executor has exited/terminated. Note that any
+ * tasks running will have TASK_LOST status updates automagically
+ * generated.
+ </em>/
+virtual void executorLost(SchedulerDriver* driver,
+                          const ExecutorID&amp; executorId,
+                          const SlaveID&amp; slaveId,
+                          int status) = 0;</p>
+
+<p>/<em>
+ * Invoked when there is an unrecoverable error in the scheduler or
+ * scheduler driver. The driver will be aborted BEFORE invoking this
+ * callback.
+ </em>/
+virtual void error(SchedulerDriver* driver, const std::string&amp; message) = 
0;
+~~~</p>
 
 <h2>Create your Framework Executor</h2>
 
@@ -214,71 +214,71 @@
 
 <p>Declared in <code>MESOS_HOME/include/mesos/executor.hpp</code></p>
 
-<pre><code>  /**
-   * Invoked once the executor driver has been able to successfully
-   * connect with Mesos. In particular, a scheduler can pass some
-   * data to it's executors through the FrameworkInfo.ExecutorInfo's
-   * data field.
-   */
-  virtual void registered(ExecutorDriver* driver,
-                          const ExecutorInfo&amp; executorInfo,
-                          const FrameworkInfo&amp; frameworkInfo,
+<pre><code class="{.cpp}">/*
+ * Invoked once the executor driver has been able to successfully
+ * connect with Mesos. In particular, a scheduler can pass some
+ * data to it's executors through the FrameworkInfo.ExecutorInfo's
+ * data field.
+ */
+virtual void registered(ExecutorDriver* driver,
+                        const ExecutorInfo&amp; executorInfo,
+                        const FrameworkInfo&amp; frameworkInfo,
+                        const SlaveInfo&amp; slaveInfo) = 0;
+
+/*
+ * Invoked when the executor re-registers with a restarted slave.
+ */
+virtual void reregistered(ExecutorDriver* driver,
                           const SlaveInfo&amp; slaveInfo) = 0;
 
-  /**
-   * Invoked when the executor re-registers with a restarted slave.
-   */
-  virtual void reregistered(ExecutorDriver* driver,
-                            const SlaveInfo&amp; slaveInfo) = 0;
-
-  /**
-   * Invoked when the executor becomes "disconnected" from the slave
-   * (e.g., the slave is being restarted due to an upgrade).
-   */
-  virtual void disconnected(ExecutorDriver* driver) = 0;
-
-  /**
-   * Invoked when a task has been launched on this executor (initiated
-   * via Scheduler::launchTasks). Note that this task can be realized
-   * with a thread, a process, or some simple computation, however, no
-   * other callbacks will be invoked on this executor until this
-   * callback has returned.
-   */
-  virtual void launchTask(ExecutorDriver* driver,
-                          const TaskInfo&amp; task) = 0;
-
-  /**
-   * Invoked when a task running within this executor has been killed
-   * (via SchedulerDriver::killTask). Note that no status update will
-   * be sent on behalf of the executor, the executor is responsible
-   * for creating a new TaskStatus (i.e., with TASK_KILLED) and
-   * invoking ExecutorDriver::sendStatusUpdate.
-   */
-  virtual void killTask(ExecutorDriver* driver, const TaskID&amp; taskId) = 0;
-
-  /**
-   * Invoked when a framework message has arrived for this
-   * executor. These messages are best effort; do not expect a
-   * framework message to be retransmitted in any reliable fashion.
-   */
-    virtual void frameworkMessage(ExecutorDriver* driver,
-                                  const std::string&amp; data) = 0;
-
-  /**
-   * Invoked when the executor should terminate all of it's currently
-   * running tasks. Note that after a Mesos has determined that an
-   * executor has terminated any tasks that the executor did not send
-   * terminal status updates for (e.g., TASK_KILLED, TASK_FINISHED,
-   * TASK_FAILED, etc) a TASK_LOST status update will be created.
-   */
-  virtual void shutdown(ExecutorDriver* driver) = 0;
-
-  /**
-   * Invoked when a fatal error has occurred with the executor and/or
-   * executor driver. The driver will be aborted BEFORE invoking this
-   * callback.
-   */
-  virtual void error(ExecutorDriver* driver, const std::string&amp; message) = 
0;
+/*
+ * Invoked when the executor becomes "disconnected" from the slave
+ * (e.g., the slave is being restarted due to an upgrade).
+ */
+virtual void disconnected(ExecutorDriver* driver) = 0;
+
+/*
+ * Invoked when a task has been launched on this executor (initiated
+ * via Scheduler::launchTasks). Note that this task can be realized
+ * with a thread, a process, or some simple computation, however, no
+ * other callbacks will be invoked on this executor until this
+ * callback has returned.
+ */
+virtual void launchTask(ExecutorDriver* driver,
+                        const TaskInfo&amp; task) = 0;
+
+/*
+ * Invoked when a task running within this executor has been killed
+ * (via SchedulerDriver::killTask). Note that no status update will
+ * be sent on behalf of the executor, the executor is responsible
+ * for creating a new TaskStatus (i.e., with TASK_KILLED) and
+ * invoking ExecutorDriver::sendStatusUpdate.
+ */
+virtual void killTask(ExecutorDriver* driver, const TaskID&amp; taskId) = 0;
+
+/*
+ * Invoked when a framework message has arrived for this
+ * executor. These messages are best effort; do not expect a
+ * framework message to be retransmitted in any reliable fashion.
+ */
+virtual void frameworkMessage(ExecutorDriver* driver,
+                              const std::string&amp; data) = 0;
+
+/*
+ * Invoked when the executor should terminate all of it's currently
+ * running tasks. Note that after a Mesos has determined that an
+ * executor has terminated any tasks that the executor did not send
+ * terminal status updates for (e.g., TASK_KILLED, TASK_FINISHED,
+ * TASK_FAILED, etc) a TASK_LOST status update will be created.
+ */
+virtual void shutdown(ExecutorDriver* driver) = 0;
+
+/*
+ * Invoked when a fatal error has occurred with the executor and/or
+ * executor driver. The driver will be aborted BEFORE invoking this
+ * callback.
+ */
+virtual void error(ExecutorDriver* driver, const std::string&amp; message) = 0;
 </code></pre>
 
 <h2>Install your Framework</h2>

Modified: mesos/site/publish/documentation/latest/clang-format/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/clang-format/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/clang-format/index.html (original)
+++ mesos/site/publish/documentation/latest/clang-format/index.html Wed Jul  1 
18:55:31 2015
@@ -93,7 +93,7 @@
 
 <h4>Ubuntu 14.04</h4>
 
-<pre><code class="bash"># Ensure apt-get is up to date.
+<pre><code># Ensure apt-get is up to date.
 sudo apt-get update
 
 # Install clang-format-3.5
@@ -102,7 +102,7 @@ sudo apt-get install clang-format-3.5
 
 <h4>OS X Yosemite</h4>
 
-<pre><code class="bash"># Install clang-3.5. The binaries are suffixed with 
'-3.5', e.g. 'clang++-3.5'.
+<pre><code># Install clang-3.5. The binaries are suffixed with '-3.5', e.g. 
'clang++-3.5'.
 $ brew install llvm35 --with-clang
 
 # Download and install the clang-format scripts.

Modified: mesos/site/publish/documentation/latest/configuration/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/configuration/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/configuration/index.html (original)
+++ mesos/site/publish/documentation/latest/configuration/index.html Wed Jul  1 
18:55:31 2015
@@ -448,6 +448,17 @@ file:///path/to/file (where file contain
   </tr>
   <tr>
     <td>
+      --max_slave_ping_timeouts=VALUE
+    </td>
+    <td>
+      The number of times a slave can fail to respond to a
+      ping from the master. Slaves that incur more than
+      `max_slave_ping_timeouts` timeouts will be removed.
+      (default: 5)
+    </td>
+  </tr>
+  <tr>
+    <td>
       --modules=VALUE
     </td>
     <td>
@@ -561,18 +572,6 @@ file:///path/to/file (where file contain
   </tr>
   <tr>
     <td>
-      --slave_removal_rate_limit=VALUE
-    </td>
-    <td>
-      The maximum rate (e.g., 1/10mins, 2/3hrs, etc) at which slaves will
-      be removed from the master when they fail health checks. By default
-      slaves will be removed as soon as they fail the health checks.
-      <p/>
-      The value is of the form 'Number of slaves'/'Duration'
-    </td>
-  </tr>
-  <tr>
-    <td>
       --registry=VALUE
     </td>
     <td>
@@ -633,6 +632,29 @@ file:///path/to/file (where file contain
     </td>
   </tr>
   <tr>
+    <td>
+      --slave_ping_timeout=VALUE
+    </td>
+    <td>
+      The timeout within which each slave is expected to respond to a
+      ping from the master. Slaves that do not respond within
+      `max_slave_ping_timeouts` ping retries will be removed.
+      (default: 15secs)
+    </td>
+  </tr>
+  <tr>
+    <td>
+      --slave_removal_rate_limit=VALUE
+    </td>
+    <td>
+      The maximum rate (e.g., 1/10mins, 2/3hrs, etc) at which slaves will
+      be removed from the master when they fail health checks. By default
+      slaves will be removed as soon as they fail the health checks.
+      <p/>
+      The value is of the form 'Number of slaves'/'Duration'
+    </td>
+  </tr>
+  <tr>
     <td>
       --slave_reregister_timeout=VALUE
     </td>

Modified: 
mesos/site/publish/documentation/latest/docker-containerizer/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/docker-containerizer/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/docker-containerizer/index.html 
(original)
+++ mesos/site/publish/documentation/latest/docker-containerizer/index.html Wed 
Jul  1 18:55:31 2015
@@ -137,7 +137,7 @@ set the HOME environment variable pointi
 
 <h2>CommandInfo to run Docker images</h2>
 
-<p>A docker image currently supports having a entrypoint and/or a default 
command.</p>
+<p>A docker image currently supports having an entrypoint and/or a default 
command.</p>
 
 <p>To run a docker image with the default command (ie: docker run image), the 
CommandInfo&rsquo;s value must not be set. If the value is set then it will 
override the default command.</p>
 

Modified: mesos/site/publish/documentation/latest/getting-started/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/getting-started/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/getting-started/index.html 
(original)
+++ mesos/site/publish/documentation/latest/getting-started/index.html Wed Jul  
1 18:55:31 2015
@@ -180,34 +180,31 @@
 
 <h3>CentOS 7.1</h3>
 
-<ul>
-<li><p>Following are the instructions for stock CentOS 7.1. If you are using a 
different OS, please install the packages accordingly.</p>
+<p>Following are the instructions for stock CentOS 7.1. If you are using a 
different OS, please install the packages accordingly.</p>
 
-<pre><code>  # Install a few utility tools
-  $ sudo yum install -y tar wget
+<pre><code>    # Install a few utility tools
+    $ sudo yum install -y tar wget
 
-  # Fetch the Apache Maven repo file.
-  $ sudo wget 
http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo 
-O /etc/yum.repos.d/epel-apache-maven.repo
+    # Fetch the Apache Maven repo file.
+    $ sudo wget 
http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo 
-O /etc/yum.repos.d/epel-apache-maven.repo
 
-  # 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which is
-  # not available in the default repositories.
-  # Add the WANdisco SVN repo file: '/etc/yum.repos.d/wandisco-svn.repo' with 
content:
-
-    [WANdiscoSVN]
-    name=WANdisco SVN Repo 1.9
-    enabled=1
-    baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
-    gpgcheck=1
-    gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
-
-  # Install essential development tools.
-  $ sudo yum groupinstall -y "Development Tools"
-
-  # Install other Mesos dependencies.
-  $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel 
zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 
apr-devel subversion-devel apr-util-devel
-</code></pre></li>
-</ul>
+    # 'Mesos &gt; 0.21.0' requires 'subversion &gt; 1.8' devel package, which 
is
+    # not available in the default repositories.
+    # Add the WANdisco SVN repo file: '/etc/yum.repos.d/wandisco-svn.repo' 
with content:
+
+      [WANdiscoSVN]
+      name=WANdisco SVN Repo 1.9
+      enabled=1
+      baseurl=http://opensource.wandisco.com/centos/7/svn-1.9/RPMS/$basearch/
+      gpgcheck=1
+      gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
 
+    # Install essential development tools.
+    $ sudo yum groupinstall -y "Development Tools"
+
+    # Install other Mesos dependencies.
+    $ sudo yum install -y apache-maven python-devel java-1.7.0-openjdk-devel 
zlib-devel libcurl-devel openssl-devel cyrus-sasl-devel cyrus-sasl-md5 
apr-devel subversion-devel apr-util-devel
+</code></pre>
 
 <h2>Building Mesos</h2>
 
@@ -224,7 +221,7 @@
     $ make
 </code></pre>
 
-<p>In order to speed up the build and reduce verbosity of the logs, you can 
append <code>-j=&lt;number of cores&gt; V=0</code> to <code>make</code>.</p>
+<p>In order to speed up the build and reduce verbosity of the logs, you can 
append <code>-j &lt;number of cores&gt; V=0</code> to <code>make</code>.</p>
 
 <pre><code>    # Run test suite.
     $ make check

Modified: mesos/site/publish/documentation/latest/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/index.html?rev=1688707&r1=1688706&r2=1688707&view=diff
==============================================================================
--- mesos/site/publish/documentation/latest/index.html (original)
+++ mesos/site/publish/documentation/latest/index.html Wed Jul  1 18:55:31 2015
@@ -103,6 +103,7 @@
 <li><a href="/documentation/latest/logging-and-debugging/">Logging and 
Debugging</a> for viewing Mesos and framework logs.</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>
 <li><a href="/documentation/latest/network-monitoring/">Network 
Monitoring</a></li>
 <li><a href="/documentation/latest/slave-recovery/">Slave Recovery</a> for 
doing seamless upgrades.</li>
 <li><a href="/documentation/latest/tools/">Tools</a> for setting up and 
running a Mesos cluster.</li>
@@ -145,8 +146,14 @@
 <li><a href="/documentation/latest/committing/">Committing</a> guidelines for 
committing changes.</li>
 <li><a href="/documentation/latest/committers/">Committers and Maintainers</a> 
a listing of project committers and component maintainers; useful when seeking 
feedback.</li>
 <li><a href="/api/latest/c++/">Doxygen</a> documents the internal Mesos 
APIs.</li>
+<li><a href="/documentation/latest/mesos-documentation-guide/">Documentation 
Guide</a>
+
+<ul>
 <li><a href="/documentation/latest/mesos-c++-style-guide/">C++ Style 
Guide</a></li>
 <li><a href="/documentation/latest/mesos-doxygen-style-guide/">Doxygen Style 
Guide</a></li>
+<li><a href="/documentation/latest/mesos-markdown-style-guide/">Markdown Style 
Guide</a></li>
+</ul>
+</li>
 <li><a href="/documentation/latest/mesos-roadmap/">Development Roadmap</a></li>
 <li><a href="/documentation/latest/release-guide/">Release Guide</a></li>
 </ul>

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=1688707&r1=1688706&r2=1688707&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 
Wed Jul  1 18:55:31 2015
@@ -95,7 +95,7 @@
 </ul>
 
 
-<pre><code>Try(State _state, T* _t = NULL, const std::string&amp; _message = 
"")
+<pre><code class="{.cpp}">Try(State _state, T* _t = NULL, const 
std::string&amp; _message = "")
   : state(_state), t(_t), message(_message) {}
 </code></pre>
 
@@ -105,7 +105,7 @@
 </ul>
 
 
-<pre><code>// You can pass-by-value in ProtobufProcess::install() handlers.
+<pre><code class="{.cpp}">// You can pass-by-value in 
ProtobufProcess::install() handlers.
 void Slave::statusUpdate(StatusUpdate update, const UPID&amp; pid)
 {
   ...
@@ -178,7 +178,7 @@ void Slave::statusUpdate(StatusUpdate up
 </ul>
 
 
-<pre><code>// 1: OK.
+<pre><code class="{.cpp}">// 1: OK.
 allocator-&gt;resourcesRecovered(frameworkId, slaveId, resources, filters);
 
 // 2: Don't use.
@@ -215,7 +215,7 @@ allocator-&gt;resourcesRecovered(
 </ul>
 
 
-<pre><code>Try&lt;Duration&gt; failoverTimeout =
+<pre><code class="{.cpp}">Try&lt;Duration&gt; failoverTimeout =
   Duration::create(FrameworkInfo().failover_timeout());
 </code></pre>
 
@@ -232,7 +232,7 @@ allocator-&gt;resourcesRecovered(
 
 <p>We disallow capturing <strong>temporaries</strong> by reference. See <a 
href="https://issues.apache.org/jira/browse/MESOS-2629";>MESOS-2629</a> for the 
rationale.</p>
 
-<pre><code>Future&lt;Nothing&gt; f() { return Nothing(); }
+<pre><code class="{.cpp}">Future&lt;Nothing&gt; f() { return Nothing(); }
 Future&lt;bool&gt; g() { return false; }
 
 struct T
@@ -282,7 +282,7 @@ const T t = T("Hello").member();
 </ul>
 
 
-<pre><code>hashmap&lt;string, hashset&lt;int&gt;&gt; index;
+<pre><code class="{.cpp}">hashmap&lt;string, hashset&lt;int&gt;&gt; index;
 
 // 1: Ok.
 const hashset&lt;int&gt;&amp; values = index[2];
@@ -311,49 +311,45 @@ s += "world"; // THIS IS A DANGLING REFE
 <h2>File Headers</h2>
 
 <ul>
-<li>Mesos source files must contain the &ldquo;ASF&rdquo; header:</li>
-</ul>
-
+<li><p>Mesos source files must contain the &ldquo;ASF&rdquo; header:</p>
 
-<pre><code>/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-</code></pre>
+<pre><code>  /**
+   * Licensed to the Apache Software Foundation (ASF) under one
+   * or more contributor license agreements.  See the NOTICE file
+   * distributed with this work for additional information
+   * regarding copyright ownership.  The ASF licenses this file
+   * to you under the Apache License, Version 2.0 (the
+   * "License"); you may not use this file except in compliance
+   * with the License.  You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License.
+   */
+</code></pre></li>
+<li><p>Stout and libprocess source files must contain the &ldquo;Apache 
License Version 2.0&rdquo; header:</p>
 
-<ul>
-<li>Stout and libprocess source files must contain the &ldquo;Apache License 
Version 2.0&rdquo; header:</li>
+<pre><code>  /**
+   * Licensed under the Apache License, Version 2.0 (the "License");
+   * you may not use this file except in compliance with the License.
+   * You may obtain a copy of the License at
+   *
+   *     http://www.apache.org/licenses/LICENSE-2.0
+   *
+   * Unless required by applicable law or agreed to in writing, software
+   * distributed under the License is distributed on an "AS IS" BASIS,
+   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   * See the License for the specific language governing permissions and
+   * limitations under the License
+   */
+</code></pre></li>
 </ul>
 
 
-<pre><code>/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-</code></pre>
-
 <h2>C++11</h2>
 
 <p>We support C++11 and require GCC 4.8+ or Clang 3.5+ compilers. The 
whitelist of supported C++11 features is:</p>
@@ -365,7 +361,7 @@ s += "world"; // THIS IS A DANGLING REFE
 </ul>
 
 
-<pre><code>// 1: OK.
+<pre><code class="{.cpp}">// 1: OK.
 const auto&amp; i = values.find(keys.front());
 // Compare with
 const typename map::iterator&amp; i = values.find(keys.front());
@@ -401,20 +397,28 @@ Try&lt;Owned&lt;LocalAuthorizer&gt;&gt;
 <li><code>shared_from_this()</code></li>
 </ul>
 </li>
-<li><p>Lambdas!</p>
+<li>Lambdas!
 
 <ul>
-<li><p>Don&rsquo;t put a space between the capture list and the parameter 
list:</p>
+<li>Don&rsquo;t put a space between the capture list and the parameter 
list:</li>
+</ul>
+</li>
+</ul>
+
 
-<pre><code>// 1: OK.
+<pre><code class="{.cpp}">// 1: OK.
 []() { ...; };
 
 // 2: Don't use.
 [] () { ...; };
-</code></pre></li>
-<li><p>Prefer default capture by value, explicit capture by value, then 
capture by reference. To avoid dangling-pointer bugs, <em>never</em> use 
default capture by reference:</p>
+</code></pre>
 
-<pre><code>// 1: OK.
+<ul>
+<li>Prefer default capture by value, explicit capture by value, then capture 
by reference. To avoid dangling-pointer bugs, <em>never</em> use default 
capture by reference:</li>
+</ul>
+
+
+<pre><code class="{.cpp}">// 1: OK.
 [=]() { ... }; // Default capture by value.
 [n]() { ... }; // Explicit capture by value.
 [&amp;n]() { ... }; // Explicit capture by reference.
@@ -422,26 +426,42 @@ Try&lt;Owned&lt;LocalAuthorizer&gt;&gt;
 
 // 2: Don't use.
 [&amp;]() { ... }; // Default capture by reference.
-</code></pre></li>
-<li><p>Use <code>mutable</code> only when absolutely necessary.</p>
+</code></pre>
+
+<ul>
+<li>Use <code>mutable</code> only when absolutely necessary.</li>
+</ul>
+
 
-<pre><code>// 1: OK.
+<pre><code class="{.cpp}">// 1: OK.
 []() mutable { ...; };
-</code></pre></li>
-<li><p>Feel free to ignore the return type by default, adding it as necessary 
to appease the compiler or be more explicit for the reader.</p>
+</code></pre>
+
+<ul>
+<li>Feel free to ignore the return type by default, adding it as necessary to 
appease the compiler or be more explicit for the reader.</li>
+</ul>
+
 
-<pre><code>// 1: OK.
+<pre><code class="{.cpp}">// 1: OK.
 []() { return true; };
 []() -&gt; bool { return ambiguous(); };
-</code></pre></li>
-<li><p>Feel free to use <code>auto</code> when naming a lambda expression:</p>
+</code></pre>
 
-<pre><code>// 1: OK.
+<ul>
+<li>Feel free to use <code>auto</code> when naming a lambda expression:</li>
+</ul>
+
+
+<pre><code class="{.cpp}">// 1: OK.
 auto lambda = []() { ...; };
-</code></pre></li>
-<li><p>Format lambdas similar to how we format functions and methods. Feel 
free to let lambdas be one-liners:</p>
+</code></pre>
+
+<ul>
+<li>Format lambdas similar to how we format functions and methods. Feel free 
to let lambdas be one-liners:</li>
+</ul>
+
 
-<pre><code>// 1: OK.
+<pre><code class="{.cpp}">// 1: OK.
 auto lambda = []() {
   ...;
 };
@@ -450,16 +470,22 @@ auto lambda = []() {
 auto lambda = []() { ...; };
 </code></pre>
 
-<p>Feel free to inline lambdas within function arguments:</p>
+<ul>
+<li>Feel free to inline lambdas within function arguments:</li>
+</ul>
+
 
-<pre><code>instance.method([]() {
+<pre><code class="{.cpp}">instance.method([]() {
   ...;
 });
 </code></pre>
 
-<p>Chain function calls on a newline after the closing brace of the lambda and 
the closing parenthesis of function call:</p>
+<ul>
+<li>Chain function calls on a newline after the closing brace of the lambda 
and the closing parenthesis of function call:</li>
+</ul>
 
-<pre><code>// 1: OK.
+
+<pre><code class="{.cpp}">// 1: OK.
 instance
   .method([]() {
     ...;
@@ -493,9 +519,12 @@ instance.method([]() {
 });
 </code></pre>
 
-<p>Wrap capture lists indepedently of parameters, <em>use the same formatting 
as if the capture list were template parameters</em>:</p>
+<ul>
+<li>Wrap capture lists indepedently of parameters, <em>use the same formatting 
as if the capture list were template parameters</em>:</li>
+</ul>
 
-<pre><code>// 1: OK.
+
+<pre><code class="{.cpp}">// 1: OK.
 function([&amp;capture1, &amp;capture2, &amp;capture3](
     const T1&amp; p1, const T2&amp; p2, const T3&amp; p3) {
   ...;
@@ -512,7 +541,6 @@ auto lambda = [&amp;capture1, &amp;captu
   ...;
 };
 
-
 auto lambda =
   [&amp;capture1, &amp;capture2, &amp;capture3](
       const T1&amp; p1, const T2&amp; p2, const T3&amp; p3) {
@@ -568,13 +596,13 @@ auto lambda = [&amp;capture1,
                &amp;capture3,
                &amp;capture4](const T1&amp; p1, const T2&amp; p2) {
   ...;
-};
+  };
 
 // 4: Don't use.
 function([&amp;capture1,
-          &amp;capture2,
-          &amp;capture3,
-          &amp;capture4](
+           &amp;capture2,
+           &amp;capture3,
+           &amp;capture4](
     const T1&amp; p1, const T2&amp; p2, const T3&amp; p3) {
   ...;
 });
@@ -596,7 +624,7 @@ function([&amp;capture1,
     const T2&amp; p2,
     const T3&amp; p3) {
   ...;
-});
+  });
 
 auto lambda = [&amp;capture1,
                &amp;capture2,
@@ -649,12 +677,52 @@ auto lambda = [
         const T4&amp; p4) {
   ...;
 };
-</code></pre></li>
-</ul>
-</li>
+</code></pre>
+
+<ul>
 <li><p>Unrestricted Union.</p>
 
 <p>Like the pre-existing <code>union</code>, we can overlap storage allocation 
for objects that never exist simultaneously. However, with C++11 we are no 
longer <em>restricted to having only non-POD types in unions</em>. Adding 
non-POD types to unions complicates things, however, because we need to make 
sure to properly call constructors and destructors. Therefore, only use 
unrestricted unions (i.e., unions with non-POD types) when the union has only a 
single field. What does this buy us? Now we can avoid dynamic memory 
allocations for &ldquo;container&rdquo; like types, e.g., <code>Option</code>, 
<code>Try</code>, <code>Result</code>, etc. In effect, we treat the union like 
a dynamic allocation, calling <em>placement new</em>, <code>new (&amp;t) 
T(...)</code> anyplace we would have just called <code>new T(...)</code> and 
the destructor <code>t.~T()</code> anyplace we would have called <code>delete 
t</code>.</p></li>
+<li><p>Constant expressions.</p>
+
+<p>Constant expressions allow the declaration of static non-POD objects while 
eliminating the unpredictable runtime initialization and destruction issues 
normally encountered, helping eliminate macros and hard-coded literals without 
sacrificing performance and type safety.  Changes which require converting from 
<code>constexpr</code> to <code>const</code> can propagate through the 
dependency tree requiring that dependent <code>constexpr</code> uses also be 
converted to <code>const</code>, hence we avoid using <code>constexpr</code> in 
complex functions.</p>
+
+<p><code>constexpr</code> behaves as a combination of <code>inline</code> and 
<code>const</code> and hence must be defined before use in another 
<code>constexpr</code>.</p>
+
+<p>Prefer <code>constexpr to</code>const<code>for all constant POD 
declarations,</code>constexpr<code></code>char<code>arrays are preferred 
to</code>const<code></code>string` literals.
+```
+// OK
+constexpr char LITERAL[] = &ldquo;value&rdquo;;</p>
+
+<p>// Not OK - not available at compile time for optimization and
+// definition required in a separate compilation module.
+const char LITERAL[];</p>
+
+<p>// Not OK - uncertain initialization order, cannot be used in other
+// constexpr statements.
+const string LITERAL(&ldquo;value&rdquo;);</p>
+
+<pre><code>`constexpr` functions are evaluated at compile time if all their 
arguments are constant expressions. Otherwise they default to initialization at 
runtime. However `constexpr` functions are limited in that they cannot perform 
dynamic casts, memory allocation or calls to non-constexpr functions.  Prefer 
`constexpr` over const inline functions.
+</code></pre>
+
+<p>constexpr size_t MIN = 200;
+constexpr size_t MAX = 1000;
+constexpr size_t SPAN() { return MAX-MIN; }
+int array[SPAN()];
+<code>
+Const expression constructors allow object initialization at compile time 
provided that all the constructor arguments are constexpr and the constuctor 
body is empty, i.e. all initialization is performed in the initialization list. 
 Classes which provide constexpr constructors should normally also provide 
constexpr copy constructors to allow the class to be used in the return value 
from a constexpr function.
+</code>
+class C
+{
+public:
+  constexpr C(int <em>i) : i(</em>i) {};
+  constexpr C(const C&amp; c) : i(c.i) {}
+private:
+  const int i;
+};</p>
+
+<p>```
+C++11 does not provide constexpr string or containers in the STL and hence 
constexpr cannot be used for any class using stout&rsquo;s Error() 
class.</p></li>
 </ul>
 
 

Added: 
mesos/site/publish/documentation/latest/mesos-documentation-guide/index.html
URL: 
http://svn.apache.org/viewvc/mesos/site/publish/documentation/latest/mesos-documentation-guide/index.html?rev=1688707&view=auto
==============================================================================
--- 
mesos/site/publish/documentation/latest/mesos-documentation-guide/index.html 
(added)
+++ 
mesos/site/publish/documentation/latest/mesos-documentation-guide/index.html 
Wed Jul  1 18:55:31 2015
@@ -0,0 +1,143 @@
+<!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 Documentation  Guide</h1>
+
+<p>Documentation is an integral part of every good feature. It describes the 
intended usage and enables new users to start using and understanding the 
feature.</p>
+
+<p>We have three different kinds of documentation:</p>
+
+<ol>
+<li><a href="/documentation/latest/mesos-markdown-style-guide/">MarkDown User 
Guides</a></li>
+</ol>
+
+
+<p>  User guides and non-code technical documentation are stored in markdown 
files in the <code>docs/</code> folder. These files get rendered for the <a 
href="http://mesos.apache.org/documentation/latest/";>online 
documentation</a>.</p>
+
+<ol>
+<li><a href="/documentation/latest/mesos-doxygen-style-guide/">Doxygen API 
Documentation and Developer Guides as part of source code</a></li>
+</ol>
+
+
+<p>  Doxygen API documentation needs only to be applied to source code parts 
that
+  constitute an interface for which we want to generate Mesos API documentation
+  files. Implementation code that does not participate in this should still be
+  enhanced by source code comments as appropriate, but these comments should 
not follow the doxygen style.</p>
+
+<p>  Substantial libraries, components, and subcomponents of the Mesos system 
such as
+  stout, libprocess, master, slave, containerizer, allocator, and others
+  should have an overview page in markdown format that explains their
+  purpose, overall structure, and general use. This can even be a complete 
developer guide.</p>
+
+<ol>
+<li>Regular source code documentation</li>
+</ol>
+
+
+<p>  All other source code comments must follow the <a 
href="https://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Comments";>Google
 Style Guide</a>.</p>
+
+<h2>Conventions</h2>
+
+<p>We follow the <a href="https://www.ietf.org/rfc/rfc2119.txt";>IETF RFC 
2119</a>
+on how to use words such as &ldquo;must&rdquo;, &ldquo;should&rdquo;, 
&ldquo;can&rdquo;,
+and other requirement-related notions.</p>
+
+       </div>
+</div>
+
+                       
+             <hr>
+
+                               <!-- footer -->
+             <div class="footer">
+               <p>&copy; 2012-2014 <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>
\ No newline at end of file


Reply via email to