blob: 4a3ca664cfb46dd180bca77cc392863d3d3e6cd9 [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/collision/jobstealing/JobStealingCollisionSpi.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>JobStealingCollisionSpi (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="JobStealingCollisionSpi (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/JobStealingCollisionSpi.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/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html" target="_top">Frames</a></li>
<li><a href="JobStealingCollisionSpi.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.collision.jobstealing</div>
<h2 title="Class JobStealingCollisionSpi" class="title">Class JobStealingCollisionSpi</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.collision.jobstealing.JobStealingCollisionSpi</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/collision/CollisionSpi.html" title="interface in org.apache.ignite.spi.collision">CollisionSpi</a>, <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</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">JobStealingCollisionSpi</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/collision/CollisionSpi.html" title="interface in org.apache.ignite.spi.collision">CollisionSpi</a>, <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></pre>
<div class="block">Collision SPI that supports job stealing from over-utilized nodes to
under-utilized nodes. This SPI is especially useful if you have
some jobs within task complete fast, and others sitting in the waiting
queue on slower nodes. In such case, the waiting jobs will be <b>stolen</b>
from slower node and moved to the fast under-utilized node.
<p>
The design and ideas for this SPI are significantly influenced by
<a href="http://gee.cs.oswego.edu/dl/papers/fj.pdf">Java Fork/Join Framework</a>
authored by Doug Lea and planned for Java 7. <code>GridJobStealingCollisionSpi</code> took
similar concepts and applied them to the grid (as opposed to within VM support planned
in Java 7).
<p>
Quite often grids are deployed across many computers some of which will
always be more powerful than others. This SPI helps you avoid jobs being
stuck at a slower node, as they will be stolen by a faster node. In the following picture
when Node<sub>3</sub> becomes free, it steals Job<sub>13</sub> and Job<sub>23</sub>
from Node<sub>1</sub> and Node<sub>2</sub> respectively.
<p>
<center><img src="http://http://ignite.incubator.apache.org/images/job_stealing_white.gif"></center>
<p>
<i>
Note that this SPI must always be used in conjunction with
<a href="../../../../../../org/apache/ignite/spi/failover/jobstealing/JobStealingFailoverSpi.html" title="class in org.apache.ignite.spi.failover.jobstealing"><code>JobStealingFailoverSpi</code></a>.
Also note that job metrics update should be enabled in order for this SPI
to work properly (i.e. <a href="../../../../../../org/apache/ignite/configuration/IgniteConfiguration.html#getMetricsUpdateFrequency()"><code>IgniteConfiguration.getMetricsUpdateFrequency()</code></a>
should be set to <code>0</code> or greater value).
The responsibility of Job Stealing Failover SPI is to properly route <b>stolen</b>
jobs to the nodes that initially requested (<b>stole</b>) these jobs. The
SPI maintains a counter of how many times a jobs was stolen and
hence traveled to another node. <code>GridJobStealingCollisionSpi</code>
checks this counter and will not allow a job to be stolen if this counter
exceeds a certain threshold <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setMaximumStealingAttempts(int)"><code>setMaximumStealingAttempts(int)</code></a>.
</i>
<p>
<h1 class="header">Configuration</h1>
In order to use this SPI, you should configure your grid instance
to use <code>GridJobStealingCollisionSpi</code> either from Spring XML file or
directly. The following configuration parameters are supported:
<h2 class="header">Mandatory</h2>
This SPI has no mandatory configuration parameters.
<h2 class="header">Optional</h2>
The following configuration parameters are optional:
<ul>
<li>
Maximum number of active jobs that will be allowed by this SPI
to execute concurrently (see <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setActiveJobsThreshold(int)"><code>setActiveJobsThreshold(int)</code></a>).
</li>
<li>
Maximum number of waiting jobs. Once waiting queue size goes below
this number, this SPI will attempt to steal jobs from over-utilized
nodes by sending <b>"steal"</b> requests (see <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setWaitJobsThreshold(int)"><code>setWaitJobsThreshold(int)</code></a>).
</li>
<li>
Steal message expire time. If no response was received from a node
to which <b>steal</b> request was sent, then request will be considered
lost and will be resent, potentially to another node (see <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setMessageExpireTime(long)"><code>setMessageExpireTime(long)</code></a>).
</li>
<li>
Maximum number of stealing attempts for the job (see <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setMaximumStealingAttempts(int)"><code>setMaximumStealingAttempts(int)</code></a>).
</li>
<li>
Whether stealing enabled or not (see <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setStealingEnabled(boolean)"><code>setStealingEnabled(boolean)</code></a>).
</li>
<li>
Enables stealing to/from only nodes that have these attributes set
(see <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setStealingAttributes(java.util.Map)"><code>setStealingAttributes(Map)</code></a>).
</li>
</ul>
Below is example of configuring this SPI from Java code:
<pre name="code" class="java">
GridJobStealingCollisionSpi spi = new GridJobStealingCollisionSpi();
// Configure number of waiting jobs
// in the queue for job stealing.
spi.setWaitJobsThreshold(10);
// Configure message expire time (in milliseconds).
spi.setMessageExpireTime(500);
// Configure stealing attempts number.
spi.setMaximumStealingAttempts(10);
// Configure number of active jobs that are allowed to execute
// in parallel. This number should usually be equal to the number
// of threads in the pool (default is 100).
spi.setActiveJobsThreshold(50);
// Enable stealing.
spi.setStealingEnabled(true);
// Set stealing attribute to steal from/to nodes that have it.
spi.setStealingAttributes(Collections.singletonMap("node.segment", "foobar"));
GridConfiguration cfg = new GridConfiguration();
// Override default Collision SPI.
cfg.setCollisionSpi(spi);
</pre>
Here is an example of how this SPI can be configured from Spring XML configuration:
<pre name="code" class="xml">
&lt;property name="collisionSpi"&gt;
&lt;bean class="org.apache.ignite.spi.collision.jobstealing.GridJobStealingCollisionSpi"&gt;
&lt;property name="activeJobsThreshold" value="100"/&gt;
&lt;property name="waitJobsThreshold" value="0"/&gt;
&lt;property name="messageExpireTime" value="1000"/&gt;
&lt;property name="maximumStealingAttempts" value="10"/&gt;
&lt;property name="stealingEnabled" value="true"/&gt;
&lt;property name="stealingAttributes"&gt;
&lt;map&gt;
&lt;entry key="node.segment" value="foobar"/&gt;
&lt;/map&gt;
&lt;/property&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>
</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 <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/collision/jobstealing/JobStealingCollisionSpi.html#ACTIVE_JOBS_THRESHOLD_NODE_ATTR">ACTIVE_JOBS_THRESHOLD_NODE_ATTR</a></strong></code>
<div class="block">Threshold of maximum jobs executing concurrently.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#DFLT_ACTIVE_JOBS_THRESHOLD">DFLT_ACTIVE_JOBS_THRESHOLD</a></strong></code>
<div class="block">Default number of parallel jobs allowed (value is <code>95</code> which is
slightly less same as default value of threads in the execution thread pool
to allow some extra threads for system processing).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#DFLT_JOB_PRIORITY">DFLT_JOB_PRIORITY</a></strong></code>
<div class="block">Default start value for job priority (value is <code>0</code>).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#DFLT_MAX_STEALING_ATTEMPTS">DFLT_MAX_STEALING_ATTEMPTS</a></strong></code>
<div class="block">Maximum number of attempts to steal job by another node (default is <code>5</code>).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static long</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#DFLT_MSG_EXPIRE_TIME">DFLT_MSG_EXPIRE_TIME</a></strong></code>
<div class="block">Default steal message expire time in milliseconds (value is <code>1000</code>).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#DFLT_WAIT_JOBS_THRESHOLD">DFLT_WAIT_JOBS_THRESHOLD</a></strong></code>
<div class="block">Default threshold of waiting jobs.</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/collision/jobstealing/JobStealingCollisionSpi.html#MAX_STEALING_ATTEMPT_ATTR">MAX_STEALING_ATTEMPT_ATTR</a></strong></code>
<div class="block">Maximum stealing attempts attribute name.</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/collision/jobstealing/JobStealingCollisionSpi.html#MSG_EXPIRE_TIME_ATTR">MSG_EXPIRE_TIME_ATTR</a></strong></code>
<div class="block">Stealing request expiration time attribute name.</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/collision/jobstealing/JobStealingCollisionSpi.html#STEALING_ATTEMPT_COUNT_ATTR">STEALING_ATTEMPT_COUNT_ATTR</a></strong></code>
<div class="block">Name of job context attribute containing current stealing attempt count.</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/collision/jobstealing/JobStealingCollisionSpi.html#STEALING_PRIORITY_ATTR">STEALING_PRIORITY_ATTR</a></strong></code>
<div class="block">Stealing priority attribute name.</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/collision/jobstealing/JobStealingCollisionSpi.html#THIEF_NODE_ATTR">THIEF_NODE_ATTR</a></strong></code>
<div class="block">Job context attribute for storing thief node UUID (this attribute is used in job stealing failover SPI).</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/collision/jobstealing/JobStealingCollisionSpi.html#WAIT_JOBS_THRESHOLD_NODE_ATTR">WAIT_JOBS_THRESHOLD_NODE_ATTR</a></strong></code>
<div class="block">Threshold of maximum jobs on waiting queue.</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/collision/jobstealing/JobStealingCollisionSpi.html#JobStealingCollisionSpi()">JobStealingCollisionSpi</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>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getActiveJobsThreshold()">getActiveJobsThreshold</a></strong>()</code>
<div class="block">Gets number of jobs that can be executed in parallel.</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/collision/jobstealing/JobStealingCollisionSpi.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/collision/jobstealing/JobStealingCollisionSpi.html#getCurrentActiveJobsNumber()">getCurrentActiveJobsNumber</a></strong>()</code>
<div class="block">Gets current number of jobs that are being executed.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getCurrentHeldJobsNumber()">getCurrentHeldJobsNumber</a></strong>()</code>
<div class="block">Gets number of currently <code>'held'</code> jobs.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getCurrentJobsToStealNumber()">getCurrentJobsToStealNumber</a></strong>()</code>
<div class="block">Gets current number of jobs to be stolen.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getCurrentRunningJobsNumber()">getCurrentRunningJobsNumber</a></strong>()</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getCurrentWaitJobsNumber()">getCurrentWaitJobsNumber</a></strong>()</code>
<div class="block">Gets current number of jobs that wait for the execution.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getMaximumStealingAttempts()">getMaximumStealingAttempts</a></strong>()</code>
<div class="block">Gets maximum number of attempts to steal job by another node.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getMessageExpireTime()">getMessageExpireTime</a></strong>()</code>
<div class="block">Message expire time configuration parameter.</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/collision/jobstealing/JobStealingCollisionSpi.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><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>,? extends <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getStealingAttributes()">getStealingAttributes</a></strong>()</code>
<div class="block">Configuration parameter to enable stealing to/from only nodes that
have these attributes set (see <a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html#attribute(java.lang.String)"><code>ClusterNode.attribute(String)</code></a> and
<a href="../../../../../../org/apache/ignite/configuration/IgniteConfiguration.html#getUserAttributes()"><code>IgniteConfiguration.getUserAttributes()</code></a> methods).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getTotalStolenJobsNumber()">getTotalStolenJobsNumber</a></strong>()</code>
<div class="block">Gets total number of stolen jobs.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#getWaitJobsThreshold()">getWaitJobsThreshold</a></strong>()</code>
<div class="block">Gets job count threshold at which this node will
start stealing jobs from other nodes.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#isStealingEnabled()">isStealingEnabled</a></strong>()</code>
<div class="block">Gets flag indicating whether this node should attempt to steal jobs
from other nodes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#onCollision(org.apache.ignite.spi.collision.CollisionContext)">onCollision</a></strong>(<a href="../../../../../../org/apache/ignite/spi/collision/CollisionContext.html" title="interface in org.apache.ignite.spi.collision">CollisionContext</a>&nbsp;ctx)</code>
<div class="block">This is a callback called when either new grid job arrived or executing job finished its
execution.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#onContextDestroyed0()">onContextDestroyed0</a></strong>()</code>
<div class="block">Method to be called in the beginning of onContextDestroyed() method.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#onContextInitialized0(org.apache.ignite.spi.IgniteSpiContext)">onContextInitialized0</a></strong>(<a href="../../../../../../org/apache/ignite/spi/IgniteSpiContext.html" title="interface in org.apache.ignite.spi">IgniteSpiContext</a>&nbsp;spiCtx)</code>
<div class="block">Method to be called in the end of onContextInitialized method.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setActiveJobsThreshold(int)">setActiveJobsThreshold</a></strong>(int&nbsp;activeJobsThreshold)</code>
<div class="block">Sets number of jobs that can be executed in parallel.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setExternalCollisionListener(org.apache.ignite.spi.collision.CollisionExternalListener)">setExternalCollisionListener</a></strong>(<a href="../../../../../../org/apache/ignite/spi/collision/CollisionExternalListener.html" title="interface in org.apache.ignite.spi.collision">CollisionExternalListener</a>&nbsp;extLsnr)</code>
<div class="block">Listener to be set for notification of external collision events (e.g. job stealing).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setMaximumStealingAttempts(int)">setMaximumStealingAttempts</a></strong>(int&nbsp;maxStealingAttempts)</code>
<div class="block">Gets maximum number of attempts to steal job by 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/collision/jobstealing/JobStealingCollisionSpi.html#setMessageExpireTime(long)">setMessageExpireTime</a></strong>(long&nbsp;msgExpireTime)</code>
<div class="block">Message expire time configuration parameter.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setStealingAttributes(java.util.Map)">setStealingAttributes</a></strong>(<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>,? extends <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a><span class='angle_bracket'>&gt;</span>&nbsp;stealAttrs)</code>
<div class="block">Configuration parameter to enable stealing to/from only nodes that
have these attributes set (see <a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html#attribute(java.lang.String)"><code>ClusterNode.attribute(String)</code></a> and
<a href="../../../../../../org/apache/ignite/configuration/IgniteConfiguration.html#getUserAttributes()"><code>IgniteConfiguration.getUserAttributes()</code></a> methods).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setStealingEnabled(boolean)">setStealingEnabled</a></strong>(boolean&nbsp;isStealingEnabled)</code>
<div class="block">Gets flag indicating whether this node should attempt to steal jobs
from other nodes.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#setWaitJobsThreshold(int)">setWaitJobsThreshold</a></strong>(int&nbsp;waitJobsThreshold)</code>
<div class="block">Sets job count threshold at which this node will
start stealing jobs from other nodes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.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/collision/jobstealing/JobStealingCollisionSpi.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/collision/jobstealing/JobStealingCollisionSpi.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#onContextInitialized(org.apache.ignite.spi.IgniteSpiContext)">onContextInitialized</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_STEALING_ATTEMPTS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DFLT_MAX_STEALING_ATTEMPTS</h4>
<pre>public static final&nbsp;int DFLT_MAX_STEALING_ATTEMPTS</pre>
<div class="block">Maximum number of attempts to steal job by 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.collision.jobstealing.JobStealingCollisionSpi.DFLT_MAX_STEALING_ATTEMPTS">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="DFLT_ACTIVE_JOBS_THRESHOLD">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DFLT_ACTIVE_JOBS_THRESHOLD</h4>
<pre>public static final&nbsp;int DFLT_ACTIVE_JOBS_THRESHOLD</pre>
<div class="block">Default number of parallel jobs allowed (value is <code>95</code> which is
slightly less same as default value of threads in the execution thread pool
to allow some extra threads for system processing).</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.DFLT_ACTIVE_JOBS_THRESHOLD">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="DFLT_MSG_EXPIRE_TIME">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DFLT_MSG_EXPIRE_TIME</h4>
<pre>public static final&nbsp;long DFLT_MSG_EXPIRE_TIME</pre>
<div class="block">Default steal message expire time in milliseconds (value is <code>1000</code>).
Once this time is elapsed and no response for steal message is received,
the message is considered lost and another steal message will be generated,
potentially to another node.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.DFLT_MSG_EXPIRE_TIME">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="DFLT_WAIT_JOBS_THRESHOLD">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DFLT_WAIT_JOBS_THRESHOLD</h4>
<pre>public static final&nbsp;int DFLT_WAIT_JOBS_THRESHOLD</pre>
<div class="block">Default threshold of waiting jobs. If number of waiting jobs exceeds this threshold,
then waiting jobs will become available to be stolen (value is <code>0</code>).</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.DFLT_WAIT_JOBS_THRESHOLD">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="DFLT_JOB_PRIORITY">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DFLT_JOB_PRIORITY</h4>
<pre>public static final&nbsp;int DFLT_JOB_PRIORITY</pre>
<div class="block">Default start value for job priority (value is <code>0</code>).</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.DFLT_JOB_PRIORITY">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="THIEF_NODE_ATTR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>THIEF_NODE_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> THIEF_NODE_ATTR</pre>
<div class="block">Job context attribute for storing thief node UUID (this attribute is used in job stealing failover SPI).</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.THIEF_NODE_ATTR">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="WAIT_JOBS_THRESHOLD_NODE_ATTR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>WAIT_JOBS_THRESHOLD_NODE_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> WAIT_JOBS_THRESHOLD_NODE_ATTR</pre>
<div class="block">Threshold of maximum jobs on waiting queue.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.WAIT_JOBS_THRESHOLD_NODE_ATTR">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="ACTIVE_JOBS_THRESHOLD_NODE_ATTR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ACTIVE_JOBS_THRESHOLD_NODE_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> ACTIVE_JOBS_THRESHOLD_NODE_ATTR</pre>
<div class="block">Threshold of maximum jobs executing concurrently.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.ACTIVE_JOBS_THRESHOLD_NODE_ATTR">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="STEALING_ATTEMPT_COUNT_ATTR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>STEALING_ATTEMPT_COUNT_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> STEALING_ATTEMPT_COUNT_ATTR</pre>
<div class="block">Name of job context attribute containing current stealing attempt count.
This count is incremented every time the same job gets stolen for
execution.</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.collision.jobstealing.JobStealingCollisionSpi.STEALING_ATTEMPT_COUNT_ATTR">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="MAX_STEALING_ATTEMPT_ATTR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MAX_STEALING_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_STEALING_ATTEMPT_ATTR</pre>
<div class="block">Maximum stealing attempts attribute name.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.MAX_STEALING_ATTEMPT_ATTR">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="MSG_EXPIRE_TIME_ATTR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MSG_EXPIRE_TIME_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> MSG_EXPIRE_TIME_ATTR</pre>
<div class="block">Stealing request expiration time attribute name.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.MSG_EXPIRE_TIME_ATTR">Constant Field Values</a></dd></dl>
</li>
</ul>
<a name="STEALING_PRIORITY_ATTR">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>STEALING_PRIORITY_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> STEALING_PRIORITY_ATTR</pre>
<div class="block">Stealing priority attribute name.</div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpi.STEALING_PRIORITY_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="JobStealingCollisionSpi()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>JobStealingCollisionSpi</h4>
<pre>public&nbsp;JobStealingCollisionSpi()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="setActiveJobsThreshold(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setActiveJobsThreshold</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;setActiveJobsThreshold(int&nbsp;activeJobsThreshold)</pre>
<div class="block">Sets number of jobs that can be executed in parallel.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#setActiveJobsThreshold(int)">setActiveJobsThreshold</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>activeJobsThreshold</code> - Number of jobs that can be executed in parallel.</dd></dl>
</li>
</ul>
<a name="getActiveJobsThreshold()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getActiveJobsThreshold</h4>
<pre>public&nbsp;int&nbsp;getActiveJobsThreshold()</pre>
<div class="block">Gets number of jobs that can be executed in parallel.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getActiveJobsThreshold()">getActiveJobsThreshold</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Number of jobs that can be executed in parallel.</dd></dl>
</li>
</ul>
<a name="setWaitJobsThreshold(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setWaitJobsThreshold</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;setWaitJobsThreshold(int&nbsp;waitJobsThreshold)</pre>
<div class="block">Sets job count threshold at which this node will
start stealing jobs from other nodes.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#setWaitJobsThreshold(int)">setWaitJobsThreshold</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>waitJobsThreshold</code> - Job count threshold.</dd></dl>
</li>
</ul>
<a name="getWaitJobsThreshold()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWaitJobsThreshold</h4>
<pre>public&nbsp;int&nbsp;getWaitJobsThreshold()</pre>
<div class="block">Gets job count threshold at which this node will
start stealing jobs from other nodes.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getWaitJobsThreshold()">getWaitJobsThreshold</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Job count threshold.</dd></dl>
</li>
</ul>
<a name="setMessageExpireTime(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMessageExpireTime</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;setMessageExpireTime(long&nbsp;msgExpireTime)</pre>
<div class="block">Message expire time configuration parameter. If no response is received
from a busy node to a job stealing message, then implementation will
assume that message never got there, or that remote node does not have
this node included into topology of any of the jobs it has.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#setMessageExpireTime(long)">setMessageExpireTime</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>msgExpireTime</code> - Message expire time.</dd></dl>
</li>
</ul>
<a name="getMessageExpireTime()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMessageExpireTime</h4>
<pre>public&nbsp;long&nbsp;getMessageExpireTime()</pre>
<div class="block">Message expire time configuration parameter. If no response is received
from a busy node to a job stealing message, then implementation will
assume that message never got there, or that remote node does not have
this node included into topology of any of the jobs it has.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getMessageExpireTime()">getMessageExpireTime</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Message expire time.</dd></dl>
</li>
</ul>
<a name="setStealingEnabled(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setStealingEnabled</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;setStealingEnabled(boolean&nbsp;isStealingEnabled)</pre>
<div class="block">Gets flag indicating whether this node should attempt to steal jobs
from other nodes. If <code>false</code>, then this node will steal allow
jobs to be stolen from it, but won't attempt to steal any jobs from
other nodes.
<p>
Default value is <code>true</code>.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#setStealingEnabled(boolean)">setStealingEnabled</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>isStealingEnabled</code> - Flag indicating whether this node should attempt to steal jobs
from other nodes.</dd></dl>
</li>
</ul>
<a name="isStealingEnabled()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isStealingEnabled</h4>
<pre>public&nbsp;boolean&nbsp;isStealingEnabled()</pre>
<div class="block">Gets flag indicating whether this node should attempt to steal jobs
from other nodes. If <code>false</code>, then this node will steal allow
jobs to be stolen from it, but won't attempt to steal any jobs from
other nodes.
<p>
Default value is <code>true</code>.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#isStealingEnabled()">isStealingEnabled</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Flag indicating whether this node should attempt to steal jobs
from other nodes.</dd></dl>
</li>
</ul>
<a name="setMaximumStealingAttempts(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMaximumStealingAttempts</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;setMaximumStealingAttempts(int&nbsp;maxStealingAttempts)</pre>
<div class="block">Gets maximum number of attempts to steal job by another node.
If not specified, <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#DFLT_MAX_STEALING_ATTEMPTS"><code>DFLT_MAX_STEALING_ATTEMPTS</code></a>
value will be used.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#setMaximumStealingAttempts(int)">setMaximumStealingAttempts</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>maxStealingAttempts</code> - Maximum number of attempts to steal job by another node.</dd></dl>
</li>
</ul>
<a name="getMaximumStealingAttempts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMaximumStealingAttempts</h4>
<pre>public&nbsp;int&nbsp;getMaximumStealingAttempts()</pre>
<div class="block">Gets maximum number of attempts to steal job by another node.
If not specified, <a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html#DFLT_MAX_STEALING_ATTEMPTS"><code>DFLT_MAX_STEALING_ATTEMPTS</code></a>
value will be used.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getMaximumStealingAttempts()">getMaximumStealingAttempts</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Maximum number of attempts to steal job by another node.</dd></dl>
</li>
</ul>
<a name="setStealingAttributes(java.util.Map)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setStealingAttributes</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;setStealingAttributes(<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>,? extends <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a><span class='angle_bracket'>&gt;</span>&nbsp;stealAttrs)</pre>
<div class="block">Configuration parameter to enable stealing to/from only nodes that
have these attributes set (see <a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html#attribute(java.lang.String)"><code>ClusterNode.attribute(String)</code></a> and
<a href="../../../../../../org/apache/ignite/configuration/IgniteConfiguration.html#getUserAttributes()"><code>IgniteConfiguration.getUserAttributes()</code></a> methods).</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>stealAttrs</code> - Node attributes to enable job stealing for.</dd></dl>
</li>
</ul>
<a name="getStealingAttributes()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStealingAttributes</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>,? extends <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a><span class='angle_bracket'>&gt;</span>&nbsp;getStealingAttributes()</pre>
<div class="block">Configuration parameter to enable stealing to/from only nodes that
have these attributes set (see <a href="../../../../../../org/apache/ignite/cluster/ClusterNode.html#attribute(java.lang.String)"><code>ClusterNode.attribute(String)</code></a> and
<a href="../../../../../../org/apache/ignite/configuration/IgniteConfiguration.html#getUserAttributes()"><code>IgniteConfiguration.getUserAttributes()</code></a> methods).</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getStealingAttributes()">getStealingAttributes</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Node attributes to enable job stealing for.</dd></dl>
</li>
</ul>
<a name="getCurrentRunningJobsNumber()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentRunningJobsNumber</h4>
<pre>public&nbsp;int&nbsp;getCurrentRunningJobsNumber()</pre>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getCurrentRunningJobsNumber()">getCurrentRunningJobsNumber</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
</dl>
</li>
</ul>
<a name="getCurrentHeldJobsNumber()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentHeldJobsNumber</h4>
<pre>public&nbsp;int&nbsp;getCurrentHeldJobsNumber()</pre>
<div class="block">Gets number of currently <code>'held'</code> jobs.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getCurrentHeldJobsNumber()">getCurrentHeldJobsNumber</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Number of currently <code>'held'</code> jobs.</dd></dl>
</li>
</ul>
<a name="getCurrentWaitJobsNumber()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentWaitJobsNumber</h4>
<pre>public&nbsp;int&nbsp;getCurrentWaitJobsNumber()</pre>
<div class="block">Gets current number of jobs that wait for the execution.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getCurrentWaitJobsNumber()">getCurrentWaitJobsNumber</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Number of jobs that wait for execution.</dd></dl>
</li>
</ul>
<a name="getCurrentActiveJobsNumber()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentActiveJobsNumber</h4>
<pre>public&nbsp;int&nbsp;getCurrentActiveJobsNumber()</pre>
<div class="block">Gets current number of jobs that are being executed.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getCurrentActiveJobsNumber()">getCurrentActiveJobsNumber</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Number of active jobs.</dd></dl>
</li>
</ul>
<a name="getTotalStolenJobsNumber()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTotalStolenJobsNumber</h4>
<pre>public&nbsp;int&nbsp;getTotalStolenJobsNumber()</pre>
<div class="block">Gets total number of stolen jobs.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getTotalStolenJobsNumber()">getTotalStolenJobsNumber</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Number of stolen jobs.</dd></dl>
</li>
</ul>
<a name="getCurrentJobsToStealNumber()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentJobsToStealNumber</h4>
<pre>public&nbsp;int&nbsp;getCurrentJobsToStealNumber()</pre>
<div class="block">Gets current number of jobs to be stolen. This is outstanding
requests number.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html#getCurrentJobsToStealNumber()">getCurrentJobsToStealNumber</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing">JobStealingCollisionSpiMBean</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>Number of jobs to be stolen.</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="setExternalCollisionListener(org.apache.ignite.spi.collision.CollisionExternalListener)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setExternalCollisionListener</h4>
<pre>public&nbsp;void&nbsp;setExternalCollisionListener(<a href="../../../../../../org/apache/ignite/spi/collision/CollisionExternalListener.html" title="interface in org.apache.ignite.spi.collision">CollisionExternalListener</a>&nbsp;extLsnr)</pre>
<div class="block">Listener to be set for notification of external collision events (e.g. job stealing).
Once grid receives such notification, it will immediately invoke collision SPI.
<p>
Ignite uses this listener to enable job stealing from overloaded to underloaded nodes.
However, you can also utilize it, for instance, to provide time based collision
resolution. To achieve this, you most likely would mark some job by setting a certain
attribute in job context (see <a href="../../../../../../org/apache/ignite/compute/ComputeJobContext.html" title="interface in org.apache.ignite.compute"><code>ComputeJobContext</code></a>) for a job that requires
time-based scheduling and set some timer in your SPI implementation that would wake up
after a certain period of time. Once this period is reached, you would notify this
listener that a collision resolution should take place. Then inside of your collision
resolution logic, you would find the marked waiting job and activate it.
<p>
Note that most collision SPI's might not have external collisions. In that case,
they should simply ignore this method and do nothing when listener is set.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/CollisionSpi.html#setExternalCollisionListener(org.apache.ignite.spi.collision.CollisionExternalListener)">setExternalCollisionListener</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/CollisionSpi.html" title="interface in org.apache.ignite.spi.collision">CollisionSpi</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>extLsnr</code> - Listener for external collision events.</dd></dl>
</li>
</ul>
<a name="onContextInitialized0(org.apache.ignite.spi.IgniteSpiContext)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onContextInitialized0</h4>
<pre>protected&nbsp;void&nbsp;onContextInitialized0(<a href="../../../../../../org/apache/ignite/spi/IgniteSpiContext.html" title="interface in org.apache.ignite.spi">IgniteSpiContext</a>&nbsp;spiCtx)
throws <a href="../../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></pre>
<div class="block">Method to be called in the end of onContextInitialized method.</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onContextInitialized0(org.apache.ignite.spi.IgniteSpiContext)">onContextInitialized0</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">Parameters:</span></dt><dd><code>spiCtx</code> - SPI context.</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> - In case of errors.</dd></dl>
</li>
</ul>
<a name="onContextDestroyed0()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onContextDestroyed0</h4>
<pre>public&nbsp;void&nbsp;onContextDestroyed0()</pre>
<div class="block">Method to be called in the beginning of onContextDestroyed() method.</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onContextDestroyed0()">onContextDestroyed0</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>
</dl>
</li>
</ul>
<a name="onCollision(org.apache.ignite.spi.collision.CollisionContext)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onCollision</h4>
<pre>public&nbsp;void&nbsp;onCollision(<a href="../../../../../../org/apache/ignite/spi/collision/CollisionContext.html" title="interface in org.apache.ignite.spi.collision">CollisionContext</a>&nbsp;ctx)</pre>
<div class="block">This is a callback called when either new grid job arrived or executing job finished its
execution. When new job arrives it is added to the end of the wait list and this
method is called. When job finished its execution, it is removed from the active list and
this method is called (i.e., when grid job is finished it will not appear in any list
in collision resolution).
<p>
Implementation of this method should act on all lists, each of which contains collision
job contexts that define a set of operations available during collision resolution. Refer
to <a href="../../../../../../org/apache/ignite/spi/collision/CollisionContext.html" title="interface in org.apache.ignite.spi.collision"><code>CollisionContext</code></a> and <a href="../../../../../../org/apache/ignite/spi/collision/CollisionJobContext.html" title="interface in org.apache.ignite.spi.collision"><code>CollisionJobContext</code></a> documentation for
more information.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/collision/CollisionSpi.html#onCollision(org.apache.ignite.spi.collision.CollisionContext)">onCollision</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/ignite/spi/collision/CollisionSpi.html" title="interface in org.apache.ignite.spi.collision">CollisionSpi</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>ctx</code> - Collision context which contains all collision lists.</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/JobStealingCollisionSpi.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/collision/jobstealing/JobStealingCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.jobstealing"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/spi/collision/jobstealing/JobStealingCollisionSpi.html" target="_top">Frames</a></li>
<li><a href="JobStealingCollisionSpi.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>