blob: e82e63683a37d20aa7e268ba96e549e1cdd3c934 [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.0.0-rc3/javadoc/org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html" />
<!-- Generated by javadoc (version 1.7.0_21) on Tue Mar 24 10:27:32 MSK 2015 -->
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>AlwaysFailoverSpi (Ignite 1.0.0-RC3)</title>
<meta name="date" content="2015-03-24">
<link rel="stylesheet" type="text/css" href="../../../../../../javadoc.css" title="Style">
<link rel='shortcut icon' href='http://gridgain.com/wp-content/uploads/2014/09/favicon.ico'/>
<link type='text/css' rel='stylesheet' href='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css'/>
<link type='text/css' rel='stylesheet' href='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css'/>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shLegacy.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJava.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushPlain.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushBash.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushXml.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushScala.js'></script>
<script type='text/javascript' src='http://gridgain.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushGroovy.js'></script>
<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="AlwaysFailoverSpi (Ignite 1.0.0-RC3)";
}
//-->
</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/AlwaysFailoverSpi.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>Apache Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpiMBean.html" title="interface in org.apache.ignite.spi.failover.always"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html" target="_top">Frames</a></li>
<li><a href="AlwaysFailoverSpi.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><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&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.always</div>
<h2 title="Class AlwaysFailoverSpi" class="title">Class AlwaysFailoverSpi</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html" title="class in org.apache.ignite.spi">org.apache.ignite.spi.IgniteSpiAdapter</a></li>
<li>
<ul class="inheritance">
<li>org.apache.ignite.spi.failover.always.AlwaysFailoverSpi</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpiMBean.html" title="interface in org.apache.ignite.spi.failover.always">AlwaysFailoverSpiMBean</a>, <a href="../../../../../../org/apache/ignite/spi/failover/FailoverSpi.html" title="interface in org.apache.ignite.spi.failover">FailoverSpi</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html" title="interface in org.apache.ignite.spi">IgniteSpiManagementMBean</a></dd>
</dl>
<hr>
<br>
<pre><a href="../../../../../../org/apache/ignite/spi/IgniteSpiMultipleInstancesSupport.html" title="annotation in org.apache.ignite.spi">@IgniteSpiMultipleInstancesSupport</a>(<a href="../../../../../../org/apache/ignite/spi/IgniteSpiMultipleInstancesSupport.html#value()">value</a>=true)
<a href="../../../../../../org/apache/ignite/spi/IgniteSpiConsistencyChecked.html" title="annotation in org.apache.ignite.spi">@IgniteSpiConsistencyChecked</a>(<a href="../../../../../../org/apache/ignite/spi/IgniteSpiConsistencyChecked.html#optional()">optional</a>=true)
public class <span class="strong">AlwaysFailoverSpi</span>
extends <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html" title="class in org.apache.ignite.spi">IgniteSpiAdapter</a>
implements <a href="../../../../../../org/apache/ignite/spi/failover/FailoverSpi.html" title="interface in org.apache.ignite.spi.failover">FailoverSpi</a>, <a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpiMBean.html" title="interface in org.apache.ignite.spi.failover.always">AlwaysFailoverSpiMBean</a></pre>
<div class="block">Failover SPI that always reroutes a failed job to another node.
Note, that at first an attempt will be made to reroute the failed job
to a node that was not part of initial split for a better chance of
success. If no such nodes are available, then an attempt will be made to
reroute the failed job to the nodes in the initial split minus the node
the job is failed on. If none of the above attempts succeeded, then the
job will not be failed over and <code>null</code> will be returned.
<p>
<h1 class="header">Configuration</h1>
This SPI is default failover SPI and does not have to be explicitly
configured unless configuration parameters need to be changed.
<h2 class="header">Mandatory</h2>
This SPI has no mandatory configuration parameters.
<h2 class="header">Optional</h2>
This SPI has following optional configuration parameters:
<ul>
<li>
Maximum failover attempts for a single job (see <a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#setMaximumFailoverAttempts(int)"><code>setMaximumFailoverAttempts(int)</code></a>).
If maximum failover attempts is reached, then job will not be failed-over and,
hence, will fail.
</li>
</ul>
Here is a Java example how to configure grid with <code>GridAlwaysFailoverSpi</code> failover SPI.
<pre name="code" class="java">
GridAlwaysFailoverSpi spi = new GridAlwaysFailoverSpi();
// Override maximum failover attempts.
spi.setMaximumFailoverAttempts(5);
GridConfiguration cfg = new GridConfiguration();
// Override default failover SPI.
cfg.setFailoverSpiSpi(spi);
// Starts grid.
G.start(cfg);
</pre>
Here is an example of how to configure <code>GridAlwaysFailoverSpi</code> from Spring XML configuration file.
<pre name="code" class="xml">
&lt;property name="failoverSpi"&gt;
&lt;bean class="org.apache.ignite.spi.failover.always.GridAlwaysFailoverSpi"&gt;
&lt;property name="maximumFailoverAttempts" value="5"/&gt;
&lt;/bean&gt;
&lt;/property&gt;
</pre>
<p>
<img src="http://ignite.incubator.apache.org/images/spring-small.png">
<br>
For information about Spring framework visit <a href="http://www.springframework.org/">www.springframework.org</a></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../org/apache/ignite/spi/failover/FailoverSpi.html" title="interface in org.apache.ignite.spi.failover"><code>FailoverSpi</code></a></dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#DFLT_MAX_FAILOVER_ATTEMPTS">DFLT_MAX_FAILOVER_ATTEMPTS</a></strong></code>
<div class="block">Maximum number of attempts to execute a failed job on another node (default is <code>5</code>).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#FAILED_NODE_LIST_ATTR">FAILED_NODE_LIST_ATTR</a></strong></code>
<div class="block">Name of job context attribute containing all nodes a job failed on.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#MAX_FAILOVER_ATTEMPT_ATTR">MAX_FAILOVER_ATTEMPT_ATTR</a></strong></code>
<div class="block">Maximum attempts attribute key should be the same on all nodes.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_org.apache.ignite.spi.IgniteSpiAdapter">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.ignite.spi.<a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html" title="class in org.apache.ignite.spi">IgniteSpiAdapter</a></h3>
<code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#ignite">ignite</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#AlwaysFailoverSpi()">AlwaysFailoverSpi</a></strong>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== 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/always/AlwaysFailoverSpi.html#failover(org.apache.ignite.spi.failover.FailoverContext, java.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><span class='angle_bracket'>&lt;</span><a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a><span class='angle_bracket'>&gt;</span>&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, java.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>
<tr class="rowColor">
<td class="colFirst"><code>protected <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><span class='angle_bracket'>&lt;</span><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#getConsistentAttributeNames()">getConsistentAttributeNames</a></strong>()</code>
<div class="block">Returns back a list of attributes that should be consistent
for this SPI.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#getMaximumFailoverAttempts()">getMaximumFailoverAttempts</a></strong>()</code>
<div class="block">Gets maximum number of attempts to execute a failed job on another node.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><span class='angle_bracket'>&lt;</span><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#getNodeAttributes()">getNodeAttributes</a></strong>()</code>
<div class="block">This method is called before SPI starts (before method <a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#spiStart(java.lang.String)"><code>IgniteSpi.spiStart(String)</code></a>
is called).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#getTotalFailoverJobsCount()">getTotalFailoverJobsCount</a></strong>()</code>
<div class="block">Get total number of jobs that were failed over.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#setMaximumFailoverAttempts(int)">setMaximumFailoverAttempts</a></strong>(int&nbsp;maxFailoverAttempts)</code>
<div class="block">Sets maximum number of attempts to execute a failed job on another node.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#spiStart(java.lang.String)">spiStart</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gridName)</code>
<div class="block">This method is called to start SPI.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#spiStop()">spiStop</a></strong>()</code>
<div class="block">This method is called to stop SPI.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#toString()">toString</a></strong>()</code></td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.ignite.spi.IgniteSpiAdapter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.ignite.spi.<a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html" title="class in org.apache.ignite.spi">IgniteSpiAdapter</a></h3>
<code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#assertParameter(boolean, java.lang.String)">assertParameter</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#checkConfigurationConsistency0(org.apache.ignite.spi.IgniteSpiContext, org.apache.ignite.cluster.ClusterNode, boolean)">checkConfigurationConsistency0</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#configInfo(java.lang.String, java.lang.Object)">configInfo</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#createSpiAttributeName(java.lang.String)">createSpiAttributeName</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getExceptionRegistry()">getExceptionRegistry</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getIgniteHome()">getIgniteHome</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getLocalNodeId()">getLocalNodeId</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getName()">getName</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getSpiContext()">getSpiContext</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getStartTimestamp()">getStartTimestamp</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getStartTimestampFormatted()">getStartTimestampFormatted</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getUpTime()">getUpTime</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getUpTimeFormatted()">getUpTimeFormatted</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#injectables()">injectables</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onContextDestroyed()">onContextDestroyed</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onContextDestroyed0()">onContextDestroyed0</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onContextInitialized(org.apache.ignite.spi.IgniteSpiContext)">onContextInitialized</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onContextInitialized0(org.apache.ignite.spi.IgniteSpiContext)">onContextInitialized0</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#registerMBean(java.lang.String, T, java.lang.Class)">registerMBean</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#setName(java.lang.String)">setName</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#startInfo()">startInfo</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#startStopwatch()">startStopwatch</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#stopInfo()">stopInfo</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#unregisterMBean()">unregisterMBean</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
<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#onContextDestroyed()">onContextDestroyed</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#onContextInitialized(org.apache.ignite.spi.IgniteSpiContext)">onContextInitialized</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_org.apache.ignite.spi.IgniteSpiManagementMBean">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.ignite.spi.<a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html" title="interface in org.apache.ignite.spi">IgniteSpiManagementMBean</a></h3>
<code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html#getIgniteHome()">getIgniteHome</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html#getLocalNodeId()">getLocalNodeId</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html#getName()">getName</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html#getStartTimestamp()">getStartTimestamp</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html#getStartTimestampFormatted()">getStartTimestampFormatted</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html#getUpTime()">getUpTime</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiManagementMBean.html#getUpTimeFormatted()">getUpTimeFormatted</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="DFLT_MAX_FAILOVER_ATTEMPTS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DFLT_MAX_FAILOVER_ATTEMPTS</h4>
<pre>public static final&nbsp;int DFLT_MAX_FAILOVER_ATTEMPTS</pre>
<div class="block">Maximum number of attempts to execute a failed job on another node (default is <code>5</code>).</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.failover.always.AlwaysFailoverSpi.DFLT_MAX_FAILOVER_ATTEMPTS">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="FAILED_NODE_LIST_ATTR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FAILED_NODE_LIST_ATTR</h4>
<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> FAILED_NODE_LIST_ATTR</pre>
<div class="block">Name of job context attribute containing all nodes a job failed on.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../org/apache/ignite/compute/ComputeJobContext.html" title="interface in org.apache.ignite.compute"><code>ComputeJobContext</code></a>,
<a href="../../../../../../constant-values.html#org.apache.ignite.spi.failover.always.AlwaysFailoverSpi.FAILED_NODE_LIST_ATTR">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="MAX_FAILOVER_ATTEMPT_ATTR">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MAX_FAILOVER_ATTEMPT_ATTR</h4>
<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> MAX_FAILOVER_ATTEMPT_ATTR</pre>
<div class="block">Maximum attempts attribute key should be the same on all nodes.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.failover.always.AlwaysFailoverSpi.MAX_FAILOVER_ATTEMPT_ATTR">Constant Field Values</a></dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="AlwaysFailoverSpi()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AlwaysFailoverSpi</h4>
<pre>public&nbsp;AlwaysFailoverSpi()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getMaximumFailoverAttempts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaximumFailoverAttempts</h4>
<pre>public&nbsp;int&nbsp;getMaximumFailoverAttempts()</pre>
<div class="block">Gets maximum number of attempts to execute a failed job on another node.
If not specified, <a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#DFLT_MAX_FAILOVER_ATTEMPTS"><code>DFLT_MAX_FAILOVER_ATTEMPTS</code></a> value will be used.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpiMBean.html#getMaximumFailoverAttempts()">getMaximumFailoverAttempts</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpiMBean.html" title="interface in org.apache.ignite.spi.failover.always">AlwaysFailoverSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Maximum number of attempts to execute a failed job on another node.</dd></dl>
</li>
</ul>
<a name="setMaximumFailoverAttempts(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMaximumFailoverAttempts</h4>
<pre><a href="../../../../../../org/apache/ignite/spi/IgniteSpiConfiguration.html" title="annotation in org.apache.ignite.spi">@IgniteSpiConfiguration</a>(<a href="../../../../../../org/apache/ignite/spi/IgniteSpiConfiguration.html#optional()">optional</a>=true)
public&nbsp;void&nbsp;setMaximumFailoverAttempts(int&nbsp;maxFailoverAttempts)</pre>
<div class="block">Sets maximum number of attempts to execute a failed job on another node.
If not specified, <a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html#DFLT_MAX_FAILOVER_ATTEMPTS"><code>DFLT_MAX_FAILOVER_ATTEMPTS</code></a> value will be used.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>maxFailoverAttempts</code> - Maximum number of attempts to execute a failed job on another node.</dd></dl>
</li>
</ul>
<a name="getTotalFailoverJobsCount()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTotalFailoverJobsCount</h4>
<pre>public&nbsp;int&nbsp;getTotalFailoverJobsCount()</pre>
<div class="block">Get total number of jobs that were failed over.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpiMBean.html#getTotalFailoverJobsCount()">getTotalFailoverJobsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpiMBean.html" title="interface in org.apache.ignite.spi.failover.always">AlwaysFailoverSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Total number of failed over jobs.</dd></dl>
</li>
</ul>
<a name="getNodeAttributes()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNodeAttributes</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a><span class='angle_bracket'>&lt;</span><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a><span class='angle_bracket'>&gt;</span>&nbsp;getNodeAttributes()
throws <a href="../../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></pre>
<div class="block">This method is called before SPI starts (before method <a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#spiStart(java.lang.String)"><code>IgniteSpi.spiStart(String)</code></a>
is called). It allows SPI implementation to add attributes to a local
node. Kernal collects these attributes from all SPI implementations
loaded up and then passes it to discovery SPI so that they can be
exchanged with other nodes.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#getNodeAttributes()">getNodeAttributes</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a></code></dd>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getNodeAttributes()">getNodeAttributes</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html" title="class in org.apache.ignite.spi">IgniteSpiAdapter</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Map of local node attributes this SPI wants to add.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></code> - Throws in case of any error.</dd></dl>
</li>
</ul>
<a name="spiStart(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>spiStart</h4>
<pre>public&nbsp;void&nbsp;spiStart(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;gridName)
throws <a href="../../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></pre>
<div class="block">This method is called to start SPI. After this method returns
successfully kernel assumes that SPI is fully operational.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#spiStart(java.lang.String)">spiStart</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>gridName</code> - Name of grid instance this SPI is being started for
(<code>null</code> for default grid).</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></code> - Throws in case of any error during SPI start.</dd></dl>
</li>
</ul>
<a name="spiStop()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>spiStop</h4>
<pre>public&nbsp;void&nbsp;spiStop()
throws <a href="../../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></pre>
<div class="block">This method is called to stop SPI. After this method returns kernel
assumes that this SPI is finished and all resources acquired by it
are released.
<p>
<b>
Note that this method can be called at any point including during
recovery of failed start. It should make no assumptions on what state SPI
will be in when this method is called.
</b></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#spiStop()">spiStop</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a></code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></code> - Thrown in case of any error during SPI stop.</dd></dl>
</li>
</ul>
<a name="failover(org.apache.ignite.spi.failover.FailoverContext, java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>failover</h4>
<pre>public&nbsp;<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><span class='angle_bracket'>&lt;</span><a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a><span class='angle_bracket'>&gt;</span>&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, java.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><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/failover/FailoverSpi.html#failover(org.apache.ignite.spi.failover.FailoverContext, java.util.List)">failover</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/failover/FailoverSpi.html" title="interface in org.apache.ignite.spi.failover">FailoverSpi</a></code></dd>
<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>
<a name="getConsistentAttributeNames()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConsistentAttributeNames</h4>
<pre>protected&nbsp;<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><span class='angle_bracket'>&lt;</span><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a><span class='angle_bracket'>&gt;</span>&nbsp;getConsistentAttributeNames()</pre>
<div class="block">Returns back a list of attributes that should be consistent
for this SPI. Consistency means that remote node has to
have the same attribute with the same value.</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getConsistentAttributeNames()">getConsistentAttributeNames</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html" title="class in org.apache.ignite.spi">IgniteSpiAdapter</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>List or attribute names.</dd></dl>
</li>
</ul>
<a name="toString()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></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/AlwaysFailoverSpi.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>Apache Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../../../../org/apache/ignite/spi/failover/always/AlwaysFailoverSpiMBean.html" title="interface in org.apache.ignite.spi.failover.always"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/spi/failover/always/AlwaysFailoverSpi.html" target="_top">Frames</a></li>
<li><a href="AlwaysFailoverSpi.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><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&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://incubator.apache.org/projects/ignite.html"><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>Apache Ignite Fabric</b> </td> <td>:&nbsp;&nbsp; ver. <strong>1.0.0-RC3</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; March 24 2015 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
<!--FOOTER--><script type='text/javascript'>SyntaxHighlighter.all();dp.SyntaxHighlighter.HighlightAll('code');</script>
</body>
</html>