blob: ebb4e2bc1a5249587cc17d0fb9b1d21dea7f300b [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_261) on Mon Dec 20 14:15:51 MSK 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>FifoQueueCollisionSpi (Ignite 2.11.1)</title>
<meta name="date" content="2021-12-20">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<link rel='shortcut icon' href='https://ignite.apache.org/favicon.ico'/>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="FifoQueueCollisionSpi (Ignite 2.11.1)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<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/FifoQueueCollisionSpi.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>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.fifoqueue"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html" target="_top">Frames</a></li>
<li><a href="FifoQueueCollisionSpi.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;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.fifoqueue</div>
<h2 title="Class FifoQueueCollisionSpi" class="title">Class FifoQueueCollisionSpi</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/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.fifoqueue.FifoQueueCollisionSpi</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/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</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)
public class <span class="typeNameLabel">FifoQueueCollisionSpi</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></pre>
<div class="block">This class provides implementation for Collision SPI based on FIFO queue. Jobs are ordered
as they arrived and only <a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#getParallelJobsNumber--"><code>getParallelJobsNumber()</code></a> number of jobs is allowed to
execute in parallel. Other jobs will be buffered in the passive queue.
<h1 class="header">Configuration</h1>
<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>
Number of jobs that can execute in parallel (see <a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setParallelJobsNumber-int-"><code>setParallelJobsNumber(int)</code></a>).
This number should usually be set to the number of threads in the execution thread pool.
</li>
</ul>
<h2 class="header">Java Example</h2>
<code>FifoQueueCollisionSpi</code> can be configured as follows:
<pre name="code" class="java">
FifoQueueCollisionSpi colSpi = new FifoQueueCollisionSpi();
// Execute all jobs sequentially by setting parallel job number to 1.
colSpi.setParallelJobsNumber(1);
IgniteConfiguration cfg = new IgniteConfiguration();
// Override default collision SPI.
cfg.setCollisionSpi(colSpi);
// Starts grid.
G.start(cfg);
</pre>
<h2 class="header">Spring Example</h2>
<code>FifoQueueCollisionSpi</code> can be configured from Spring XML configuration file:
<pre name="code" class="xml">
&lt;bean id="grid.custom.cfg" class="org.apache.ignite.configuration.IgniteConfiguration" singleton="true"&gt;
...
&lt;property name="collisionSpi"&gt;
&lt;bean class="org.apache.ignite.spi.collision.fifoqueue.FifoQueueCollisionSpi"&gt;
&lt;property name="parallelJobsNumber" value="1"/&gt;
&lt;/bean&gt;
&lt;/property&gt;
...
&lt;/bean&gt;
</pre></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="memberSummary" 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><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#DFLT_PARALLEL_JOBS_NUM">DFLT_PARALLEL_JOBS_NUM</a></span></code>
<div class="block">Default number of parallel jobs allowed (set to number of cores times 2).</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#DFLT_WAIT_JOBS_NUM">DFLT_WAIT_JOBS_NUM</a></span></code>
<div class="block">Default waiting jobs number.</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>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#igniteInstanceName">igniteInstanceName</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="memberSummary" 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><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#FifoQueueCollisionSpi--">FifoQueueCollisionSpi</a></span>()</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="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#getCurrentActiveJobsNumber--">getCurrentActiveJobsNumber</a></span>()</code>
<div class="block">Gets current number of jobs that are active, i.e.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#getCurrentHeldJobsNumber--">getCurrentHeldJobsNumber</a></span>()</code>
<div class="block">Gets number of currently <code>'held'</code> jobs.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#getCurrentRunningJobsNumber--">getCurrentRunningJobsNumber</a></span>()</code>
<div class="block">Gets number of currently running (not <code>'held</code>) jobs.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#getCurrentWaitJobsNumber--">getCurrentWaitJobsNumber</a></span>()</code>
<div class="block">Gets current number of jobs that wait for the execution.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#getParallelJobsNumber--">getParallelJobsNumber</a></span>()</code>
<div class="block">See <a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setParallelJobsNumber-int-"><code>setParallelJobsNumber(int)</code></a></div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#getWaitingJobsNumber--">getWaitingJobsNumber</a></span>()</code>
<div class="block">See <a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setWaitingJobsNumber-int-"><code>setWaitingJobsNumber(int)</code></a></div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#onCollision-org.apache.ignite.spi.collision.CollisionContext-">onCollision</a></span>(<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:
new grid job arrived
executing job finished its execution
topology changed
periodically (on <a href="../../../../../../org/apache/ignite/events/EventType.html#EVT_NODE_METRICS_UPDATED"><code>EventType.EVT_NODE_METRICS_UPDATED</code></a>)
When new job arrives it is added to the end of the wait list and this
method is called.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setExternalCollisionListener-org.apache.ignite.spi.collision.CollisionExternalListener-">setExternalCollisionListener</a></span>(<a href="../../../../../../org/apache/ignite/spi/collision/CollisionExternalListener.html" title="interface in org.apache.ignite.spi.collision">CollisionExternalListener</a>&nbsp;lsnr)</code>
<div class="block">Listener to be set for notification of external collision events (e.g. job stealing).</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html" title="class in org.apache.ignite.spi.collision.fifoqueue">FifoQueueCollisionSpi</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setName-java.lang.String-">setName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Sets SPI name.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html" title="class in org.apache.ignite.spi.collision.fifoqueue">FifoQueueCollisionSpi</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setParallelJobsNumber-int-">setParallelJobsNumber</a></span>(int&nbsp;parallelJobsNum)</code>
<div class="block">Sets number of jobs that can be executed in parallel.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html" title="class in org.apache.ignite.spi.collision.fifoqueue">FifoQueueCollisionSpi</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setWaitingJobsNumber-int-">setWaitingJobsNumber</a></span>(int&nbsp;waitJobsNum)</code>
<div class="block">Sets maximum number of jobs that are allowed to wait in waiting queue.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#spiStart-java.lang.String-">spiStart</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;igniteInstanceName)</code>
<div class="block">This method is called to start SPI.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#spiStop--">spiStop</a></span>()</code>
<div class="block">This method is called to stop SPI.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#toString--">toString</a></span>()</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#addTimeoutObject-org.apache.ignite.spi.IgniteSpiTimeoutObject-">addTimeoutObject</a>, <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#clientFailureDetectionTimeout--">clientFailureDetectionTimeout</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#failureDetectionTimeout--">failureDetectionTimeout</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#failureDetectionTimeoutEnabled--">failureDetectionTimeoutEnabled</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#failureDetectionTimeoutEnabled-boolean-">failureDetectionTimeoutEnabled</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getConsistentAttributeNames--">getConsistentAttributeNames</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getExceptionRegistry--">getExceptionRegistry</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getLocalNode--">getLocalNode</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getName--">getName</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getNodeAttributes--">getNodeAttributes</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#getSpiContext--">getSpiContext</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#ignite--">ignite</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#initFailureDetectionTimeout--">initFailureDetectionTimeout</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#injectables--">injectables</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#injectResources-org.apache.ignite.Ignite-">injectResources</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#isNodeStopping--">isNodeStopping</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onBeforeStart--">onBeforeStart</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onClientDisconnected-org.apache.ignite.lang.IgniteFuture-">onClientDisconnected</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#onClientReconnected-boolean-">onClientReconnected</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#removeTimeoutObject-org.apache.ignite.spi.IgniteSpiTimeoutObject-">removeTimeoutObject</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#started--">started</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="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/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#getNodeAttributes--">getNodeAttributes</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#onClientDisconnected-org.apache.ignite.lang.IgniteFuture-">onClientDisconnected</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#onClientReconnected-boolean-">onClientReconnected</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#onContextDestroyed--">onContextDestroyed</a>, <a href="../../../../../../org/apache/ignite/spi/IgniteSpi.html#onContextInitialized-org.apache.ignite.spi.IgniteSpiContext-">onContextInitialized</a></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_PARALLEL_JOBS_NUM">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DFLT_PARALLEL_JOBS_NUM</h4>
<pre>public static final&nbsp;int DFLT_PARALLEL_JOBS_NUM</pre>
<div class="block">Default number of parallel jobs allowed (set to number of cores times 2).</div>
</li>
</ul>
<a name="DFLT_WAIT_JOBS_NUM">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DFLT_WAIT_JOBS_NUM</h4>
<pre>public static final&nbsp;int DFLT_WAIT_JOBS_NUM</pre>
<div class="block">Default waiting jobs number. If number of waiting jobs exceeds this number,
jobs will be rejected. Default value is <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true#MAX_VALUE" title="class or interface in java.lang"><code>Integer.MAX_VALUE</code></a>.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../constant-values.html#org.apache.ignite.spi.collision.fifoqueue.FifoQueueCollisionSpi.DFLT_WAIT_JOBS_NUM">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="FifoQueueCollisionSpi--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>FifoQueueCollisionSpi</h4>
<pre>public&nbsp;FifoQueueCollisionSpi()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getParallelJobsNumber--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParallelJobsNumber</h4>
<pre>public&nbsp;int&nbsp;getParallelJobsNumber()</pre>
<div class="block">See <a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setParallelJobsNumber-int-"><code>setParallelJobsNumber(int)</code></a></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Number of jobs that can be executed in parallel.</dd>
</dl>
</li>
</ul>
<a name="setParallelJobsNumber-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setParallelJobsNumber</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;<a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html" title="class in org.apache.ignite.spi.collision.fifoqueue">FifoQueueCollisionSpi</a>&nbsp;setParallelJobsNumber(int&nbsp;parallelJobsNum)</pre>
<div class="block">Sets number of jobs that can be executed in parallel.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>parallelJobsNum</code> - Parallel jobs number.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>this</code> for chaining.</dd>
</dl>
</li>
</ul>
<a name="getWaitingJobsNumber--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getWaitingJobsNumber</h4>
<pre>public&nbsp;int&nbsp;getWaitingJobsNumber()</pre>
<div class="block">See <a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html#setWaitingJobsNumber-int-"><code>setWaitingJobsNumber(int)</code></a></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Maximum allowed number of waiting jobs.</dd>
</dl>
</li>
</ul>
<a name="setWaitingJobsNumber-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setWaitingJobsNumber</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;<a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html" title="class in org.apache.ignite.spi.collision.fifoqueue">FifoQueueCollisionSpi</a>&nbsp;setWaitingJobsNumber(int&nbsp;waitJobsNum)</pre>
<div class="block">Sets maximum number of jobs that are allowed to wait in waiting queue. If number
of waiting jobs ever exceeds this number, excessive jobs will be rejected.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>waitJobsNum</code> - Waiting jobs number.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>this</code> for chaining.</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><span class="returnLabel">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 active, i.e. <code>'running + held'</code> jobs.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Number of active jobs.</dd>
</dl>
</li>
</ul>
<a name="getCurrentRunningJobsNumber--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentRunningJobsNumber</h4>
<pre>public&nbsp;int&nbsp;getCurrentRunningJobsNumber()</pre>
<div class="block">Gets number of currently running (not <code>'held</code>) jobs.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Number of currently running (not <code>'held</code>) jobs.</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><span class="returnLabel">Returns:</span></dt>
<dd>Number of currently <code>'held'</code> jobs.</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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;igniteInstanceName)
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><span class="overrideSpecifyLabel">Specified by:</span></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="paramLabel">Parameters:</span></dt>
<dd><code>igniteInstanceName</code> - Name of Ignite instance this SPI is being started for
(<code>null</code> for default Ignite instance).</dd>
<dt><span class="throwsLabel">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><span class="overrideSpecifyLabel">Specified by:</span></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="throwsLabel">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;lsnr)</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><span class="overrideSpecifyLabel">Specified by:</span></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="paramLabel">Parameters:</span></dt>
<dd><code>lsnr</code> - Listener for external collision events.</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:
<ul>
<li>new grid job arrived</li>
<li>executing job finished its execution</li>
<li>topology changed</li>
<li>periodically (on <a href="../../../../../../org/apache/ignite/events/EventType.html#EVT_NODE_METRICS_UPDATED"><code>EventType.EVT_NODE_METRICS_UPDATED</code></a>)</li>
</ul>
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><span class="overrideSpecifyLabel">Specified by:</span></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="paramLabel">Parameters:</span></dt>
<dd><code>ctx</code> - Collision context which contains all collision lists.</dd>
</dl>
</li>
</ul>
<a name="setName-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setName</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html" title="class in org.apache.ignite.spi.collision.fifoqueue">FifoQueueCollisionSpi</a>&nbsp;setName(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
<div class="block">Sets SPI name.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/ignite/spi/IgniteSpiAdapter.html#setName-java.lang.String-">setName</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="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - SPI name.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>this</code> for chaining.</dd>
</dl>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/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>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<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/FifoQueueCollisionSpi.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>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../../org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpiMBean.html" title="interface in org.apache.ignite.spi.collision.fifoqueue"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/ignite/spi/collision/fifoqueue/FifoQueueCollisionSpi.html" target="_top">Frames</a></li>
<li><a href="FifoQueueCollisionSpi.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;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://ignite.apache.org"><nobr>2021 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> </td> </tr> <tr> <td colspan="2" valign="top" align="left"> <table style="padding-left: 0; margin: 0"> <tbody style="padding: 0; margin: 0"> <tr style="padding: 0; margin: 0"> <td> <b>Ignite Database and Caching Platform</b> </td> <td>:&nbsp;&nbsp; ver. <strong>2.11.1</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; December 20 2021 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
</body>
</html>