blob: a263702337328655148a76252128d86664e27ab4 [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>
<META NAME="ROBOTS" CONTENT="NOINDEX">
<link rel="canonical" href="https://ignite.apache.org/releases/1.7.0/javadoc/org/apache/ignite/spi/failover/FailoverSpi.html" />
<!-- Generated by javadoc (version 1.7.0_80) on Mon Aug 01 20:32:32 MSK 2016 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FailoverSpi (Ignite 1.7.0)</title>
<meta name="date" content="2016-08-01">
<link rel="stylesheet" type="text/css" href="../../../../../javadoc.css" title="Style">
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</script></head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="FailoverSpi (Ignite 1.7.0)";
}
//-->
</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="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FailoverSpi.html">Use</a></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 class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/ignite/spi/failover/FailoverContext.html" title="interface in org.apache.ignite.spi.failover"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/ignite/spi/failover/FailoverSpi.html" target="_top">Frames</a></li>
<li><a href="FailoverSpi.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.ignite.spi.failover</div>
<h2 title="Interface FailoverSpi" class="title">Interface FailoverSpi</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html" title="class in org.apache.ignite.spi.failover.always">AlwaysFailoverSpi</a>, <a href="../../../../../org/apache/ignite/spi/failover/jobstealing/JobStealingFailoverSpi.html" title="class in org.apache.ignite.spi.failover.jobstealing">JobStealingFailoverSpi</a>, <a href="../../../../../org/apache/ignite/spi/failover/never/NeverFailoverSpi.html" title="class in org.apache.ignite.spi.failover.never">NeverFailoverSpi</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">FailoverSpi</span>
extends <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a></pre>
<div class="block">Failover SPI provides developer with ability to supply custom logic for handling
failed execution of a grid job. Job execution can fail for a number of reasons:
<ul>
<li>Job execution threw an exception (runtime, assertion or error)</li>
<li>Node on which job was execution left topology (crashed or stopped)</li>
<li>Collision SPI on remote node cancelled a job before it got a chance to execute (job rejection).</li>
</ul>
In all cases failover SPI takes failed job (as failover context) and list of all
grid nodes and provides another node on which the job execution will be retried.
It is up to failover SPI to make sure that job is not mapped to the node it
failed on. The failed node can be retrieved from
<a href="../../../../../org/apache/ignite/compute/ComputeJobResult.html#getNode()"><code>GridFailoverContext.getJobResult().node()</code></a>
method.
<p>
Ignite comes with the following built-in failover SPI implementations:
<ul>
<li><a href="../../../../../org/apache/ignite/spi/failover/never/NeverFailoverSpi.html" title="class in org.apache.ignite.spi.failover.never"><code>NeverFailoverSpi</code></a></li>
<li><a href="../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html" title="class in org.apache.ignite.spi.failover.always"><code>AlwaysFailoverSpi</code></a></li>
<li><a href="../../../../../org/apache/ignite/spi/failover/jobstealing/JobStealingFailoverSpi.html" title="class in org.apache.ignite.spi.failover.jobstealing"><code>JobStealingFailoverSpi</code></a></li>
</ul>
<b>NOTE:</b> this SPI (i.e. methods in this interface) should never be used directly. SPIs provide
internal view on the subsystem and is used internally by Ignite kernal. In rare use cases when
access to a specific implementation of this SPI is required - an instance of this SPI can be obtained
via <a href="../../../../../org/apache/ignite/Ignite.html#configuration()"><code>Ignite.configuration()</code></a> method to check its configuration properties or call other non-SPI
methods. Note again that calling methods from this interface on the obtained instance can lead
to undefined behavior and explicitly not supported.</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><a href="../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/ignite/spi/failover/FailoverSpi.html#failover(org.apache.ignite.spi.failover.FailoverContext,%20java.util.List)">failover</a></strong>(<a href="../../../../../org/apache/ignite/spi/failover/FailoverContext.html" title="interface in org.apache.ignite.spi.failover">FailoverContext</a>&nbsp;ctx,
<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a>&gt;&nbsp;top)</code>
<div class="block">This method is called when method <a href="../../../../../org/apache/ignite/compute/ComputeTask.html#result(org.apache.ignite.compute.ComputeJobResult,%20java.util.List)"><code>ComputeTask.result(org.apache.ignite.compute.ComputeJobResult, List)</code></a> returns
value <a href="../../../../../org/apache/ignite/compute/ComputeJobResultPolicy.html#FAILOVER"><code>ComputeJobResultPolicy.FAILOVER</code></a> policy indicating that the result of
job execution must be failed over.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.ignite.spi.IgniteSpi">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.ignite.spi.<a href="../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a></h3>
<code><a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#getName()">getName</a>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#getNodeAttributes()">getNodeAttributes</a>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#onClientDisconnected(org.apache.ignite.lang.IgniteFuture)">onClientDisconnected</a>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#onClientReconnected(boolean)">onClientReconnected</a>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#onContextDestroyed()">onContextDestroyed</a>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#onContextInitialized(org.apache.ignite.spi.IgniteSpiContext)">onContextInitialized</a>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#spiStart(java.lang.String)">spiStart</a>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#spiStop()">spiStop</a></code></li>
</ul>
</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="failover(org.apache.ignite.spi.failover.FailoverContext, java.util.List)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>failover</h4>
<pre><a href="../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a>&nbsp;failover(<a href="../../../../../org/apache/ignite/spi/failover/FailoverContext.html" title="interface in org.apache.ignite.spi.failover">FailoverContext</a>&nbsp;ctx,
<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a>&gt;&nbsp;top)</pre>
<div class="block">This method is called when method <a href="../../../../../org/apache/ignite/compute/ComputeTask.html#result(org.apache.ignite.compute.ComputeJobResult,%20java.util.List)"><code>ComputeTask.result(org.apache.ignite.compute.ComputeJobResult, List)</code></a> returns
value <a href="../../../../../org/apache/ignite/compute/ComputeJobResultPolicy.html#FAILOVER"><code>ComputeJobResultPolicy.FAILOVER</code></a> policy indicating that the result of
job execution must be failed over. Implementation of this method should examine failover
context and choose one of the grid nodes from supplied <code>topology</code> to retry job execution
on it. For best performance it is advised that <a href="../../../../../org/apache/ignite/spi/failover/FailoverContext.html#getBalancedNode(java.util.List)"><code>FailoverContext.getBalancedNode(List)</code></a>
method is used to select node for execution of failed job.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>ctx</code> - Failover context.</dd><dd><code>top</code> - Collection of all grid nodes within task topology (may include failed node).</dd>
<dt><span class="strong">Returns:</span></dt><dd>New node to route this job to or <code>null</code> if new node cannot be picked.
If job failover fails (returns <code>null</code>) the whole task will be failed.</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="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FailoverSpi.html">Use</a></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 class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/ignite/spi/failover/FailoverContext.html" title="interface in org.apache.ignite.spi.failover"><span class="strong">Prev Class</span></a></li>
<li>Next Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/ignite/spi/failover/FailoverSpi.html" target="_top">Frames</a></li>
<li><a href="FailoverSpi.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 ======= -->
<p class="legalCopy"><small><table width="100%" border="0" cellspacing=0 cellpadding=0 style="padding: 5px"> <tr> <td> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <a target=_blank href="https://ignite.apache.org"><nobr>2015 Copyright &#169; Apache Software Foundation</nobr></a> </td> </tr> </tbody> </table> </td> <td width="100%" align="right" valign="center"> <a href="https://twitter.com/ApacheIgnite" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @ApacheIgnite</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> </td> </tr> <tr> <td colspan="2" valign="top" align="left"> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <b>Ignite Fabric</b> </td> <td>:&nbsp;&nbsp; ver. <strong>1.7.0</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; August 1 2016 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
</body>
</html>