blob: 7a1363424ab40e6d288bd5f9c45a45fb76ee7c4b [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 Sat Sep 11 21:20:05 MSK 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>DatasetAffinityFunctionWrapper (Ignite 2.11.0)</title>
<meta name="date" content="2021-09-11">
<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="DatasetAffinityFunctionWrapper (Ignite 2.11.0)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":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/DatasetAffinityFunctionWrapper.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><a href="../../../../../../../../org/apache/ignite/ml/dataset/impl/cache/util/ComputeUtils.html" title="class in org.apache.ignite.ml.dataset.impl.cache.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../../org/apache/ignite/ml/dataset/impl/cache/util/IteratorWithConcurrentModificationChecker.html" title="class in org.apache.ignite.ml.dataset.impl.cache.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../index.html?org/apache/ignite/ml/dataset/impl/cache/util/DatasetAffinityFunctionWrapper.html" target="_top">Frames</a></li>
<li><a href="DatasetAffinityFunctionWrapper.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>Field&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>Field&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.ml.dataset.impl.cache.util</div>
<h2 title="Class DatasetAffinityFunctionWrapper" class="title">Class DatasetAffinityFunctionWrapper</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>org.apache.ignite.ml.dataset.impl.cache.util.DatasetAffinityFunctionWrapper</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">DatasetAffinityFunctionWrapper</span>
extends <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>
implements <a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a></pre>
<div class="block">Affinity function wrapper that uses key as a partition index and delegates all other functions to specified
delegate.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../../serialized-form.html#org.apache.ignite.ml.dataset.impl.cache.util.DatasetAffinityFunctionWrapper">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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/ml/dataset/impl/cache/util/DatasetAffinityFunctionWrapper.html#DatasetAffinityFunctionWrapper-org.apache.ignite.cache.affinity.AffinityFunction-">DatasetAffinityFunctionWrapper</a></span>(<a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a>&nbsp;delegate)</code>
<div class="block">Constructs a new instance of affinity function wrapper.</div>
</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><a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><span class='angle_bracket'>&lt;</span><a href="../../../../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a><span class='angle_bracket'>&gt;</span><span class='angle_bracket'>&gt;</span></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/ignite/ml/dataset/impl/cache/util/DatasetAffinityFunctionWrapper.html#assignPartitions-org.apache.ignite.cache.affinity.AffinityFunctionContext-">assignPartitions</a></span>(<a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunctionContext.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunctionContext</a>&nbsp;affCtx)</code>
<div class="block">Gets affinity nodes for a partition.</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/ml/dataset/impl/cache/util/DatasetAffinityFunctionWrapper.html#partition-java.lang.Object-">partition</a></span>(<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>&nbsp;key)</code>
<div class="block">Returns key as a partition index.</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/ml/dataset/impl/cache/util/DatasetAffinityFunctionWrapper.html#partitions--">partitions</a></span>()</code>
<div class="block">Gets total number of partitions available.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/ignite/ml/dataset/impl/cache/util/DatasetAffinityFunctionWrapper.html#removeNode-java.util.UUID-">removeNode</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&nbsp;nodeId)</code>
<div class="block">Removes node from affinity.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../org/apache/ignite/ml/dataset/impl/cache/util/DatasetAffinityFunctionWrapper.html#reset--">reset</a></span>()</code>
<div class="block">Resets cache affinity to its initial state.</div>
</td>
</tr>
</table>
<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#toString--" title="class or interface in java.lang">toString</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>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="DatasetAffinityFunctionWrapper-org.apache.ignite.cache.affinity.AffinityFunction-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DatasetAffinityFunctionWrapper</h4>
<pre>public&nbsp;DatasetAffinityFunctionWrapper(<a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a>&nbsp;delegate)</pre>
<div class="block">Constructs a new instance of affinity function wrapper.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>delegate</code> - Affinity function which actually performs all methods except <code>partition()</code>.</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="reset--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reset</h4>
<pre>public&nbsp;void&nbsp;reset()</pre>
<div class="block">Resets cache affinity to its initial state. This method will be called by
the system any time the affinity has been sent to remote node where
it has to be reinitialized. If your implementation of affinity function
has no initialization logic, leave this method empty.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html#reset--">reset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a></code></dd>
</dl>
</li>
</ul>
<a name="partitions--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>partitions</h4>
<pre>public&nbsp;int&nbsp;partitions()</pre>
<div class="block">Gets total number of partitions available. All caches should always provide
correct partition count which should be the same on all participating nodes.
Note that partitions should always be numbered from <code>0</code> inclusively to
<code>N</code> exclusively without any gaps.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html#partitions--">partitions</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Total partition count.</dd>
</dl>
</li>
</ul>
<a name="partition-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>partition</h4>
<pre>public&nbsp;int&nbsp;partition(<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>&nbsp;key)</pre>
<div class="block">Returns key as a partition index.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html#partition-java.lang.Object-">partition</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - Partition index.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Partition index.</dd>
</dl>
</li>
</ul>
<a name="assignPartitions-org.apache.ignite.cache.affinity.AffinityFunctionContext-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>assignPartitions</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/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="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><span class='angle_bracket'>&lt;</span><a href="../../../../../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a><span class='angle_bracket'>&gt;</span><span class='angle_bracket'>&gt;</span>&nbsp;assignPartitions(<a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunctionContext.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunctionContext</a>&nbsp;affCtx)</pre>
<div class="block">Gets affinity nodes for a partition. In case of replicated cache, all returned
nodes are updated in the same manner. In case of partitioned cache, the returned
list should contain only the primary and back up nodes with primary node being
always first.
<p>
Note that partitioned affinity must obey the following contract: given that node
<code>N</code> is primary for some key <code>K</code>, if any other node(s) leave
grid and no node joins grid, node <code>N</code> will remain primary for key <code>K</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html#assignPartitions-org.apache.ignite.cache.affinity.AffinityFunctionContext-">assignPartitions</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>affCtx</code> - Affinity function context. Will provide all required information to calculate
new partition assignments.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Unmodifiable list indexed by partition number. Each element of array is a collection in which
first node is a primary node and other nodes are backup nodes.</dd>
</dl>
</li>
</ul>
<a name="removeNode-java.util.UUID-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>removeNode</h4>
<pre>public&nbsp;void&nbsp;removeNode(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&nbsp;nodeId)</pre>
<div class="block">Removes node from affinity. This method is called when it is safe to remove left node from
affinity mapping.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html#removeNode-java.util.UUID-">removeNode</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../org/apache/ignite/cache/affinity/AffinityFunction.html" title="interface in org.apache.ignite.cache.affinity">AffinityFunction</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>nodeId</code> - ID of node to remove.</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/DatasetAffinityFunctionWrapper.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><a href="../../../../../../../../org/apache/ignite/ml/dataset/impl/cache/util/ComputeUtils.html" title="class in org.apache.ignite.ml.dataset.impl.cache.util"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../../../org/apache/ignite/ml/dataset/impl/cache/util/IteratorWithConcurrentModificationChecker.html" title="class in org.apache.ignite.ml.dataset.impl.cache.util"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../index.html?org/apache/ignite/ml/dataset/impl/cache/util/DatasetAffinityFunctionWrapper.html" target="_top">Frames</a></li>
<li><a href="DatasetAffinityFunctionWrapper.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>Field&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>Field&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.0</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; September 11 2021 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
</body>
</html>