blob: 15e93fb307dd4d6ce6f4bc896153b0ad18298bb8 [file] [log] [blame]
<!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>