<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.7.0_131) on Wed Mar 29 10:23:48 UTC 2017 -->
<title>Executor</title>
<meta name="date" content="2017-03-29">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Executor";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../org/apache/mesos/package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/mesos/Executor.html" target="_top">Frames</a></li>
<li><a href="Executor.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.mesos</div>
<h2 title="Interface Executor" class="title">Interface Executor</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public interface <span class="strong">Executor</span></pre>
<div class="block">Callback interface to be implemented by frameworks' executors.
 Note that only one callback will be invoked at a time, so it is not
 recommended that you block within a callback because it may cause a
 deadlock.
 <p>
 Each callback includes a reference to the executor driver that was
 used to run this executor. The reference will not change for the
 duration of an executor (i.e., from the point you do
 <a href="../../../org/apache/mesos/ExecutorDriver.html#start()"><code>ExecutorDriver.start()</code></a> to the point that
 <a href="../../../org/apache/mesos/ExecutorDriver.html#join()"><code>ExecutorDriver.join()</code></a>  returns).
 This is intended for convenience so that an executor
 doesn't need to store a reference to the driver itself.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Executor.html#disconnected(org.apache.mesos.ExecutorDriver)">disconnected</a></strong>(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver)</code>
<div class="block">Invoked when the executor becomes "disconnected" from the slave
 (e.g., the slave is being restarted due to an upgrade).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Executor.html#error(org.apache.mesos.ExecutorDriver,%20java.lang.String)">error</a></strong>(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
     java.lang.String&nbsp;message)</code>
<div class="block">Invoked when a fatal error has occurred with the executor and/or
 executor driver.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Executor.html#frameworkMessage(org.apache.mesos.ExecutorDriver,%20byte[])">frameworkMessage</a></strong>(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
                byte[]&nbsp;data)</code>
<div class="block">Invoked when a framework message has arrived for this
 executor.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Executor.html#killTask(org.apache.mesos.ExecutorDriver,%20org.apache.mesos.Protos.TaskID)">killTask</a></strong>(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
        <a href="../../../org/apache/mesos/Protos.TaskID.html" title="class in org.apache.mesos">Protos.TaskID</a>&nbsp;taskId)</code>
<div class="block">Invoked when a task running within this executor has been killed
 (via <a href="../../../org/apache/mesos/SchedulerDriver.html#killTask(org.apache.mesos.Protos.TaskID)"><code>SchedulerDriver.killTask(org.apache.mesos.Protos.TaskID)</code></a>).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Executor.html#launchTask(org.apache.mesos.ExecutorDriver,%20org.apache.mesos.Protos.TaskInfo)">launchTask</a></strong>(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
          <a href="../../../org/apache/mesos/Protos.TaskInfo.html" title="class in org.apache.mesos">Protos.TaskInfo</a>&nbsp;task)</code>
<div class="block">Invoked when a task has been launched on this executor (initiated
 via <a href="../../../org/apache/mesos/SchedulerDriver.html#launchTasks(java.util.Collection,%20java.util.Collection,%20org.apache.mesos.Protos.Filters)"><code>SchedulerDriver.launchTasks(java.util.Collection&lt;org.apache.mesos.Protos.OfferID&gt;, java.util.Collection&lt;org.apache.mesos.Protos.TaskInfo&gt;, org.apache.mesos.Protos.Filters)</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Executor.html#registered(org.apache.mesos.ExecutorDriver,%20org.apache.mesos.Protos.ExecutorInfo,%20org.apache.mesos.Protos.FrameworkInfo,%20org.apache.mesos.Protos.SlaveInfo)">registered</a></strong>(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
          <a href="../../../org/apache/mesos/Protos.ExecutorInfo.html" title="class in org.apache.mesos">Protos.ExecutorInfo</a>&nbsp;executorInfo,
          <a href="../../../org/apache/mesos/Protos.FrameworkInfo.html" title="class in org.apache.mesos">Protos.FrameworkInfo</a>&nbsp;frameworkInfo,
          <a href="../../../org/apache/mesos/Protos.SlaveInfo.html" title="class in org.apache.mesos">Protos.SlaveInfo</a>&nbsp;slaveInfo)</code>
<div class="block">Invoked once the executor driver has been able to successfully
 connect with Mesos.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Executor.html#reregistered(org.apache.mesos.ExecutorDriver,%20org.apache.mesos.Protos.SlaveInfo)">reregistered</a></strong>(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
            <a href="../../../org/apache/mesos/Protos.SlaveInfo.html" title="class in org.apache.mesos">Protos.SlaveInfo</a>&nbsp;slaveInfo)</code>
<div class="block">Invoked when the executor re-registers with a restarted slave.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../org/apache/mesos/Executor.html#shutdown(org.apache.mesos.ExecutorDriver)">shutdown</a></strong>(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver)</code>
<div class="block">Invoked when the executor should terminate all of its currently
 running tasks.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="registered(org.apache.mesos.ExecutorDriver, org.apache.mesos.Protos.ExecutorInfo, org.apache.mesos.Protos.FrameworkInfo, org.apache.mesos.Protos.SlaveInfo)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registered</h4>
<pre>void&nbsp;registered(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
              <a href="../../../org/apache/mesos/Protos.ExecutorInfo.html" title="class in org.apache.mesos">Protos.ExecutorInfo</a>&nbsp;executorInfo,
              <a href="../../../org/apache/mesos/Protos.FrameworkInfo.html" title="class in org.apache.mesos">Protos.FrameworkInfo</a>&nbsp;frameworkInfo,
              <a href="../../../org/apache/mesos/Protos.SlaveInfo.html" title="class in org.apache.mesos">Protos.SlaveInfo</a>&nbsp;slaveInfo)</pre>
<div class="block">Invoked once the executor driver has been able to successfully
 connect with Mesos. In particular, a scheduler can pass some
 data to its executors through the <a href="../../../org/apache/mesos/Protos.ExecutorInfo.html#getData()"><code>Protos.ExecutorInfo.getData()</code></a>
 field.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>driver</code> - The executor driver that was registered and connected
                      to the Mesos cluster.</dd><dd><code>executorInfo</code> - Describes information about the executor that was
                      registered.</dd><dd><code>frameworkInfo</code> - Describes the framework that was registered.</dd><dd><code>slaveInfo</code> - Describes the slave that will be used to launch
                      the tasks for this executor.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><code>ExecutorDriver</code></a>, 
<a href="../../../org/apache/mesos/MesosSchedulerDriver.html" title="class in org.apache.mesos"><code>MesosSchedulerDriver</code></a></dd></dl>
</li>
</ul>
<a name="reregistered(org.apache.mesos.ExecutorDriver, org.apache.mesos.Protos.SlaveInfo)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reregistered</h4>
<pre>void&nbsp;reregistered(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
                <a href="../../../org/apache/mesos/Protos.SlaveInfo.html" title="class in org.apache.mesos">Protos.SlaveInfo</a>&nbsp;slaveInfo)</pre>
<div class="block">Invoked when the executor re-registers with a restarted slave.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>driver</code> - The executor driver that was re-registered with the
                    Mesos master.</dd><dd><code>slaveInfo</code> - Describes the slave that will be used to launch
                    the tasks for this executor.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><code>ExecutorDriver</code></a></dd></dl>
</li>
</ul>
<a name="disconnected(org.apache.mesos.ExecutorDriver)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>disconnected</h4>
<pre>void&nbsp;disconnected(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver)</pre>
<div class="block">Invoked when the executor becomes "disconnected" from the slave
 (e.g., the slave is being restarted due to an upgrade).</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>driver</code> - The executor driver that was disconnected.</dd></dl>
</li>
</ul>
<a name="launchTask(org.apache.mesos.ExecutorDriver, org.apache.mesos.Protos.TaskInfo)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>launchTask</h4>
<pre>void&nbsp;launchTask(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
              <a href="../../../org/apache/mesos/Protos.TaskInfo.html" title="class in org.apache.mesos">Protos.TaskInfo</a>&nbsp;task)</pre>
<div class="block">Invoked when a task has been launched on this executor (initiated
 via <a href="../../../org/apache/mesos/SchedulerDriver.html#launchTasks(java.util.Collection,%20java.util.Collection,%20org.apache.mesos.Protos.Filters)"><code>SchedulerDriver.launchTasks(java.util.Collection&lt;org.apache.mesos.Protos.OfferID&gt;, java.util.Collection&lt;org.apache.mesos.Protos.TaskInfo&gt;, org.apache.mesos.Protos.Filters)</code></a>. 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.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>driver</code> - The executor driver that launched the task.</dd><dd><code>task</code> - Describes the task that was launched.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><code>ExecutorDriver</code></a>, 
<a href="../../../org/apache/mesos/Protos.TaskInfo.html" title="class in org.apache.mesos"><code>Protos.TaskInfo</code></a></dd></dl>
</li>
</ul>
<a name="killTask(org.apache.mesos.ExecutorDriver, org.apache.mesos.Protos.TaskID)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>killTask</h4>
<pre>void&nbsp;killTask(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
            <a href="../../../org/apache/mesos/Protos.TaskID.html" title="class in org.apache.mesos">Protos.TaskID</a>&nbsp;taskId)</pre>
<div class="block">Invoked when a task running within this executor has been killed
 (via <a href="../../../org/apache/mesos/SchedulerDriver.html#killTask(org.apache.mesos.Protos.TaskID)"><code>SchedulerDriver.killTask(org.apache.mesos.Protos.TaskID)</code></a>). 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 <a href="../../../org/apache/mesos/ExecutorDriver.html#sendStatusUpdate(org.apache.mesos.Protos.TaskStatus)"><code>ExecutorDriver.sendStatusUpdate(org.apache.mesos.Protos.TaskStatus)</code></a>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>driver</code> - The executor driver that owned the task that was killed.</dd><dd><code>taskId</code> - The ID of the task that was killed.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><code>ExecutorDriver</code></a>, 
<a href="../../../org/apache/mesos/Protos.TaskID.html" title="class in org.apache.mesos"><code>Protos.TaskID</code></a></dd></dl>
</li>
</ul>
<a name="frameworkMessage(org.apache.mesos.ExecutorDriver, byte[])">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>frameworkMessage</h4>
<pre>void&nbsp;frameworkMessage(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
                    byte[]&nbsp;data)</pre>
<div class="block">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.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>driver</code> - The executor driver that received the message.</dd><dd><code>data</code> - The message payload.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><code>ExecutorDriver</code></a></dd></dl>
</li>
</ul>
<a name="shutdown(org.apache.mesos.ExecutorDriver)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shutdown</h4>
<pre>void&nbsp;shutdown(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver)</pre>
<div class="block">Invoked when the executor should terminate all of its currently
 running tasks. Note that after 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.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>driver</code> - The executor driver that should terminate.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><code>ExecutorDriver</code></a></dd></dl>
</li>
</ul>
<a name="error(org.apache.mesos.ExecutorDriver, java.lang.String)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>error</h4>
<pre>void&nbsp;error(<a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos">ExecutorDriver</a>&nbsp;driver,
         java.lang.String&nbsp;message)</pre>
<div class="block">Invoked when a fatal error has occurred with the executor and/or
 executor driver. The driver will be aborted BEFORE invoking this
 callback.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>driver</code> - The executor driver that was aborted due this error.</dd><dd><code>message</code> - The error message.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><code>ExecutorDriver</code></a></dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../org/apache/mesos/package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../org/apache/mesos/ExecutorDriver.html" title="interface in org.apache.mesos"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../index.html?org/apache/mesos/Executor.html" target="_top">Frames</a></li>
<li><a href="Executor.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
