<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.3.0/javadoc/deprecated-list.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">

<!-- Generated by javadoc (version 1.7.0_80) on Sat Oct 28 06:25:59 UTC 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Deprecated List (Ignite 2.3.0)</title>
<meta name="date" content="2017-10-28">
<link rel="stylesheet" type="text/css" href="javadoc.css" title="Style">

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="Deprecated List (Ignite 2.3.0)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.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>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Deprecated API" class="title">Deprecated API</h1>
<h2 title="Contents">Contents</h2>
<ul>
<li><a href="#interface">Deprecated Interfaces</a></li>
<li><a href="#class">Deprecated Classes</a></li>
<li><a href="#annotation_type">Deprecated Annotation Types</a></li>
<li><a href="#field">Deprecated Fields</a></li>
<li><a href="#method">Deprecated Methods</a></li>
<li><a href="#constructor">Deprecated Constructors</a></li>
<li><a href="#annotation_type_member">Deprecated Annotation Type Elements</a></li>
</ul>
</div>
<div class="contentContainer"><a name="interface">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Interfaces table, listing deprecated interfaces, and an explanation">
<caption><span>Deprecated Interfaces</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Interface and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/cache/affinity/AffinityKeyMapper.html" title="interface in org.apache.ignite.cache.affinity">org.apache.ignite.cache.affinity.AffinityKeyMapper</a>
<div class="block"><i>Use <a href="org/apache/ignite/cache/affinity/AffinityKeyMapped.html" title="annotation in org.apache.ignite.cache.affinity"><code>AffinityKeyMapped</code></a> or <a href="org/apache/ignite/cache/CacheKeyConfiguration.html#setAffinityKeyFieldName(java.lang.String)"><code>CacheKeyConfiguration.setAffinityKeyFieldName(String)</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/lang/IgniteAsyncSupport.html" title="interface in org.apache.ignite.lang">org.apache.ignite.lang.IgniteAsyncSupport</a>
<div class="block"><i>since 2.0. Please use specialized asynchronous methods.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/MemoryMetrics.html" title="interface in org.apache.ignite">org.apache.ignite.MemoryMetrics</a>
<div class="block"><i>Use <a href="org/apache/ignite/DataRegionMetrics.html" title="interface in org.apache.ignite"><code>DataRegionMetrics</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/mxbean/MemoryMetricsMXBean.html" title="interface in org.apache.ignite.mxbean">org.apache.ignite.mxbean.MemoryMetricsMXBean</a>
<div class="block"><i>Part of old API. Metrics are accessible through <a href="org/apache/ignite/mxbean/DataRegionMetricsMXBean.html" title="interface in org.apache.ignite.mxbean"><code>DataRegionMetricsMXBean</code></a>.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/PersistenceMetrics.html" title="interface in org.apache.ignite">org.apache.ignite.PersistenceMetrics</a>
<div class="block"><i>Use <a href="org/apache/ignite/DataStorageMetrics.html" title="interface in org.apache.ignite"><code>DataStorageMetrics</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/mxbean/PersistenceMetricsMXBean.html" title="interface in org.apache.ignite.mxbean">org.apache.ignite.mxbean.PersistenceMetricsMXBean</a>
<div class="block"><i>Part of old API. Metrics are accessible through <a href="org/apache/ignite/mxbean/DataStorageMetricsMXBean.html" title="interface in org.apache.ignite.mxbean"><code>DataStorageMetricsMXBean</code></a>.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/stream/StreamTupleExtractor.html" title="interface in org.apache.ignite.stream">org.apache.ignite.stream.StreamTupleExtractor</a>
<div class="block"><i>Will be removed in 2.0.0.</i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="class">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Classes table, listing deprecated classes, and an explanation">
<caption><span>Deprecated Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Class and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/MemoryConfiguration.html" title="class in org.apache.ignite.configuration">org.apache.ignite.configuration.MemoryConfiguration</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/DataStorageConfiguration.html" title="class in org.apache.ignite.configuration"><code>DataStorageConfiguration</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/MemoryPolicyConfiguration.html" title="class in org.apache.ignite.configuration">org.apache.ignite.configuration.MemoryPolicyConfiguration</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/DataRegionConfiguration.html" title="class in org.apache.ignite.configuration"><code>DataRegionConfiguration</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/OdbcConfiguration.html" title="class in org.apache.ignite.configuration">org.apache.ignite.configuration.OdbcConfiguration</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/PersistentStoreConfiguration.html" title="class in org.apache.ignite.configuration">org.apache.ignite.configuration.PersistentStoreConfiguration</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/DataStorageConfiguration.html" title="class in org.apache.ignite.configuration"><code>DataStorageConfiguration</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/SqlConnectorConfiguration.html" title="class in org.apache.ignite.configuration">org.apache.ignite.configuration.SqlConnectorConfiguration</a></td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="annotation_type">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Annotation Types table, listing deprecated annotation types, and an explanation">
<caption><span>Deprecated Annotation Types</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Annotation Type and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/lang/IgniteAsyncSupported.html" title="annotation in org.apache.ignite.lang">org.apache.ignite.lang.IgniteAsyncSupported</a>
<div class="block"><i>since 2.0. Please use specialized asynchronous methods.</i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="field">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Fields table, listing deprecated fields, and an explanation">
<caption><span>Deprecated Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Field and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#DFLT_LATE_AFF_ASSIGNMENT">org.apache.ignite.configuration.IgniteConfiguration.DFLT_LATE_AFF_ASSIGNMENT</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#DFLT_LONG_QRY_WARN_TIMEOUT">org.apache.ignite.configuration.CacheConfiguration.DFLT_LONG_QRY_WARN_TIMEOUT</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/IgniteDataStreamer.html#DFLT_MAX_PARALLEL_OPS">org.apache.ignite.IgniteDataStreamer.DFLT_MAX_PARALLEL_OPS</a>
<div class="block"><i>Is not used anymore.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#DFLT_REBALANCE_THREAD_POOL_SIZE">org.apache.ignite.configuration.CacheConfiguration.DFLT_REBALANCE_THREAD_POOL_SIZE</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/cache/hibernate/HibernateAccessStrategyFactory.html#GRID_NAME_PROPERTY">org.apache.ignite.cache.hibernate.HibernateAccessStrategyFactory.GRID_NAME_PROPERTY</a>
<div class="block"><i>Use <a href="org/apache/ignite/cache/hibernate/HibernateAccessStrategyFactory.html#IGNITE_INSTANCE_NAME_PROPERTY"><code>HibernateAccessStrategyFactory.IGNITE_INSTANCE_NAME_PROPERTY</code></a>.
      If <a href="org/apache/ignite/cache/hibernate/HibernateAccessStrategyFactory.html#IGNITE_INSTANCE_NAME_PROPERTY"><code>HibernateAccessStrategyFactory.IGNITE_INSTANCE_NAME_PROPERTY</code></a> is specified it takes precedence.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/IgniteSystemProperties.html#IGNITE_BINARY_DONT_WRAP_TREE_STRUCTURES">org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_DONT_WRAP_TREE_STRUCTURES</a>
<div class="block"><i>Should be removed in Apache Ignite 2.0.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/IgniteSystemProperties.html#IGNITE_BINARY_SORT_OBJECT_FIELDS">org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_SORT_OBJECT_FIELDS</a>
<div class="block"><i>Should be removed in Apache Ignite 2.0.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/IgniteSystemProperties.html#IGNITE_LOG_GRID_NAME">org.apache.ignite.IgniteSystemProperties.IGNITE_LOG_GRID_NAME</a>
<div class="block"><i>Use <a href="org/apache/ignite/IgniteSystemProperties.html#IGNITE_LOG_INSTANCE_NAME"><code>IgniteSystemProperties.IGNITE_LOG_INSTANCE_NAME</code></a>.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/IgniteSystemProperties.html#IGNITE_MIN_BUFFERED_COMMUNICATION_MSG_CNT">org.apache.ignite.IgniteSystemProperties.IGNITE_MIN_BUFFERED_COMMUNICATION_MSG_CNT</a>
<div class="block"><i>Not used anymore.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/IgniteSystemProperties.html#IGNITE_UNWRAP_BINARY_FOR_INDEXING_SPI">org.apache.ignite.IgniteSystemProperties.IGNITE_UNWRAP_BINARY_FOR_INDEXING_SPI</a>
<div class="block"><i>Should be removed in Apache Ignite 2.0.</i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="method">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Methods table, listing deprecated methods, and an explanation">
<caption><span>Deprecated Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Method and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/spi/IgniteSpiContext.html#addMessageListener(org.apache.ignite.internal.managers.communication.GridMessageListener,%20java.lang.String)">org.apache.ignite.spi.IgniteSpiContext.addMessageListener(GridMessageListener, String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/spi/IgniteSpiContext.html#addLocalMessageListener(java.lang.Object,%20org.apache.ignite.lang.IgniteBiPredicate)"><code>IgniteSpiContext.addLocalMessageListener(Object, IgniteBiPredicate)</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/cache/CacheMetrics.html#estimateRebalancingFinishTime()">org.apache.ignite.cache.CacheMetrics.estimateRebalancingFinishTime()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/IgniteCompute.html#future()">org.apache.ignite.IgniteCompute.future()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/lang/IgniteAsyncSupport.html#future()">org.apache.ignite.lang.IgniteAsyncSupport.future()</a>
<div class="block"><i>since 2.0. Please use new specialized async method
 e.g.
 <pre>
     IgniteFuture f = cache.getAsync();
 </pre>
 instead of old-style async API:
 <pre>
     IgniteCache asyncCache = cache.withAsync();
     asyncCache.get(key);
     IgniteFuture fut = asyncCache.future();
 </pre></i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/yarn/ApplicationMaster.html#getContainers()">org.apache.ignite.yarn.ApplicationMaster.getContainers()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#getDiscoveryStartupDelay()">org.apache.ignite.configuration.IgniteConfiguration.getDiscoveryStartupDelay()</a>
<div class="block"><i>Not used any more.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#getGridName()">org.apache.ignite.configuration.IgniteConfiguration.getGridName()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#getIgniteInstanceName()"><code>IgniteConfiguration.getIgniteInstanceName()</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/transactions/spring/SpringTransactionManager.html#getGridName()">org.apache.ignite.transactions.spring.SpringTransactionManager.getGridName()</a>
<div class="block"><i>Use <a href="org/apache/ignite/transactions/spring/SpringTransactionManager.html#getIgniteInstanceName()"><code>SpringTransactionManager.getIgniteInstanceName()</code></a>.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/cache/spring/SpringCacheManager.html#getGridName()">org.apache.ignite.cache.spring.SpringCacheManager.getGridName()</a>
<div class="block"><i>Use <a href="org/apache/ignite/cache/spring/SpringCacheManager.html#getIgniteInstanceName()"><code>SpringCacheManager.getIgniteInstanceName()</code></a>.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#getLongQueryWarningTimeout()">org.apache.ignite.configuration.CacheConfiguration.getLongQueryWarningTimeout()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#getLongQueryWarningTimeout()"><code>IgniteConfiguration.getLongQueryWarningTimeout()</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#getMarshaller()">org.apache.ignite.configuration.IgniteConfiguration.getMarshaller()</a>
<div class="block"><i>Since 2.1. Some Ignite features will not work if non-null marshaller is set
     (IgniteCache.withKeepBinary(), .NET, CPP, ODBC)</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#getMemoryConfiguration()">org.apache.ignite.configuration.IgniteConfiguration.getMemoryConfiguration()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/DataStorageConfiguration.html" title="class in org.apache.ignite.configuration"><code>DataStorageConfiguration</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#getMemoryPolicyName()">org.apache.ignite.configuration.CacheConfiguration.getMemoryPolicyName()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/CacheConfiguration.html#getDataRegionName()"><code>CacheConfiguration.getDataRegionName()</code></a> (String)} instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#getNodeId()">org.apache.ignite.configuration.IgniteConfiguration.getNodeId()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#getOdbcConfiguration()">org.apache.ignite.configuration.IgniteConfiguration.getOdbcConfiguration()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#getClientConnectorConfiguration()"><code>IgniteConfiguration.getClientConnectorConfiguration()</code></a> ()} instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#getPersistentStoreConfiguration()">org.apache.ignite.configuration.IgniteConfiguration.getPersistentStoreConfiguration()</a>
<div class="block"><i>Part of old API. Use <a href="org/apache/ignite/configuration/DataStorageConfiguration.html" title="class in org.apache.ignite.configuration"><code>DataStorageConfiguration</code></a> for configuring persistence instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#getRebalanceThreadPoolSize()">org.apache.ignite.configuration.CacheConfiguration.getRebalanceThreadPoolSize()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#getSqlConnectorConfiguration()">org.apache.ignite.configuration.IgniteConfiguration.getSqlConnectorConfiguration()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#getClientConnectorConfiguration()"><code>IgniteConfiguration.getClientConnectorConfiguration()</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/ConnectorConfiguration.html#getSslContextFactory()">org.apache.ignite.configuration.ConnectorConfiguration.getSslContextFactory()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/ConnectorConfiguration.html#getSslFactory()"><code>ConnectorConfiguration.getSslFactory()</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#getTransactionManagerLookupClassName()">org.apache.ignite.configuration.CacheConfiguration.getTransactionManagerLookupClassName()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/TransactionConfiguration.html#getTxManagerFactory()"><code>TransactionConfiguration.getTxManagerFactory()</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/stream/StreamAdapter.html#getTupleExtractor()">org.apache.ignite.stream.StreamAdapter.getTupleExtractor()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/TransactionConfiguration.html#getTxManagerLookupClassName()">org.apache.ignite.configuration.TransactionConfiguration.getTxManagerLookupClassName()</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/TransactionConfiguration.html#getTxManagerFactory()"><code>TransactionConfiguration.getTxManagerFactory()</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/lang/IgniteAsyncSupport.html#isAsync()">org.apache.ignite.lang.IgniteAsyncSupport.isAsync()</a>
<div class="block"><i>since 2.0. Please use new specialized async method
 e.g.
 <pre>
     IgniteFuture f = cache.getAsync();
 </pre>
 instead of old-style async API:
 <pre>
     IgniteCache asyncCache = cache.withAsync();
     asyncCache.get(key);
     IgniteFuture fut = asyncCache.future();
 </pre></i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/platform/dotnet/PlatformDotNetBinaryTypeConfiguration.html#isKeepDeserialized()">org.apache.ignite.platform.dotnet.PlatformDotNetBinaryTypeConfiguration.isKeepDeserialized()</a>
<div class="block"><i>Use <a href="org/apache/ignite/platform/dotnet/PlatformDotNetBinaryTypeConfiguration.html#getKeepDeserialized()"><code>PlatformDotNetBinaryTypeConfiguration.getKeepDeserialized()</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#isLateAffinityAssignment()">org.apache.ignite.configuration.IgniteConfiguration.isLateAffinityAssignment()</a>
<div class="block"><i>Starting from Ignite 2.1 late affinity assignment is always enabled.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#isPersistentStoreEnabled()">org.apache.ignite.configuration.IgniteConfiguration.isPersistentStoreEnabled()</a>
<div class="block"><i>Part of legacy configuration API. Doesn't work if new configuration API is used.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/TransactionConfiguration.html#isTxSerializableEnabled()">org.apache.ignite.configuration.TransactionConfiguration.isTxSerializableEnabled()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/Ignite.html#memoryMetrics()">org.apache.ignite.Ignite.memoryMetrics()</a>
<div class="block"><i>Use <a href="org/apache/ignite/Ignite.html#dataRegionMetrics()"><code>Ignite.dataRegionMetrics()</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/Ignite.html#memoryMetrics(java.lang.String)">org.apache.ignite.Ignite.memoryMetrics(String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/Ignite.html#dataRegionMetrics(java.lang.String)"><code>Ignite.dataRegionMetrics(String)</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/Ignite.html#persistentStoreMetrics()">org.apache.ignite.Ignite.persistentStoreMetrics()</a>
<div class="block"><i>Use <a href="org/apache/ignite/Ignite.html#dataStorageMetrics()"><code>Ignite.dataStorageMetrics()</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/cache/CacheMetrics.html#rebalancingStartTime()">org.apache.ignite.cache.CacheMetrics.rebalancingStartTime()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/spi/IgniteSpiContext.html#removeMessageListener(org.apache.ignite.internal.managers.communication.GridMessageListener,%20java.lang.String)">org.apache.ignite.spi.IgniteSpiContext.removeMessageListener(GridMessageListener, String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/spi/IgniteSpiContext.html#removeLocalMessageListener(java.lang.Object,%20org.apache.ignite.lang.IgniteBiPredicate)"><code>IgniteSpiContext.removeLocalMessageListener(Object, IgniteBiPredicate)</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/cache/store/CacheStore.html#sessionEnd(boolean)">org.apache.ignite.cache.store.CacheStore.sessionEnd(boolean)</a>
<div class="block"><i>Use <a href="org/apache/ignite/cache/store/CacheStoreSessionListener.html" title="interface in org.apache.ignite.cache.store"><code>CacheStoreSessionListener</code></a> instead (refer to its JavaDoc for details).</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.html#setBackupFilter(org.apache.ignite.lang.IgniteBiPredicate)">org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction.setBackupFilter(IgniteBiPredicate<ClusterNode, ClusterNode>)</a>
<div class="block"><i>Use <code>affinityBackupFilter</code> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStoreFactory.html#setDataSource(javax.sql.DataSource)">org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory.setDataSource(DataSource)</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setDiscoveryStartupDelay(long)">org.apache.ignite.configuration.IgniteConfiguration.setDiscoveryStartupDelay(long)</a>
<div class="block"><i>Not used any more.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setGridName(java.lang.String)">org.apache.ignite.configuration.IgniteConfiguration.setGridName(String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#setIgniteInstanceName(java.lang.String)"><code>IgniteConfiguration.setIgniteInstanceName(String)</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/transactions/spring/SpringTransactionManager.html#setGridName(java.lang.String)">org.apache.ignite.transactions.spring.SpringTransactionManager.setGridName(String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/transactions/spring/SpringTransactionManager.html#setIgniteInstanceName(java.lang.String)"><code>SpringTransactionManager.setIgniteInstanceName(String)</code></a>.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/cache/spring/SpringCacheManager.html#setGridName(java.lang.String)">org.apache.ignite.cache.spring.SpringCacheManager.setGridName(String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/cache/spring/SpringCacheManager.html#setIgniteInstanceName(java.lang.String)"><code>SpringCacheManager.setIgniteInstanceName(String)</code></a>.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setLateAffinityAssignment(boolean)">org.apache.ignite.configuration.IgniteConfiguration.setLateAffinityAssignment(boolean)</a>
<div class="block"><i>Starting from Ignite 2.1 late affinity assignment is always enabled.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#setLongQueryWarningTimeout(long)">org.apache.ignite.configuration.CacheConfiguration.setLongQueryWarningTimeout(long)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#setLongQueryWarningTimeout(long)"><code>IgniteConfiguration.setLongQueryWarningTimeout(long)</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setMarshaller(org.apache.ignite.marshaller.Marshaller)">org.apache.ignite.configuration.IgniteConfiguration.setMarshaller(Marshaller)</a>
<div class="block"><i>Since 2.1. Some Ignite features will not work if non-null marshaller is set
     (IgniteCache.withKeepBinary(), .NET, CPP, ODBC)</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setMemoryConfiguration(org.apache.ignite.configuration.MemoryConfiguration)">org.apache.ignite.configuration.IgniteConfiguration.setMemoryConfiguration(MemoryConfiguration)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/DataStorageConfiguration.html" title="class in org.apache.ignite.configuration"><code>DataStorageConfiguration</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#setMemoryPolicyName(java.lang.String)">org.apache.ignite.configuration.CacheConfiguration.setMemoryPolicyName(String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/CacheConfiguration.html#setDataRegionName(java.lang.String)"><code>CacheConfiguration.setDataRegionName(String)</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setNodeId(java.util.UUID)">org.apache.ignite.configuration.IgniteConfiguration.setNodeId(UUID)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#setConsistentId(java.io.Serializable)"><code>IgniteConfiguration.setConsistentId(Serializable)</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setOdbcConfiguration(org.apache.ignite.configuration.OdbcConfiguration)">org.apache.ignite.configuration.IgniteConfiguration.setOdbcConfiguration(OdbcConfiguration)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#setClientConnectorConfiguration(org.apache.ignite.configuration.ClientConnectorConfiguration)"><code>IgniteConfiguration.setClientConnectorConfiguration(ClientConnectorConfiguration)</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setPersistentStoreConfiguration(org.apache.ignite.configuration.PersistentStoreConfiguration)">org.apache.ignite.configuration.IgniteConfiguration.setPersistentStoreConfiguration(PersistentStoreConfiguration)</a>
<div class="block"><i>Part of old API. Use <a href="org/apache/ignite/configuration/DataStorageConfiguration.html" title="class in org.apache.ignite.configuration"><code>DataStorageConfiguration</code></a> for configuring persistence instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#setRebalanceThreadPoolSize(int)">org.apache.ignite.configuration.CacheConfiguration.setRebalanceThreadPoolSize(int)</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/cache/query/ContinuousQuery.html#setRemoteFilter(org.apache.ignite.cache.CacheEntryEventSerializableFilter)">org.apache.ignite.cache.query.ContinuousQuery.setRemoteFilter(CacheEntryEventSerializableFilter<K, V>)</a>
<div class="block"><i>Use <a href="org/apache/ignite/cache/query/ContinuousQuery.html#setRemoteFilterFactory(javax.cache.configuration.Factory)"><code>ContinuousQuery.setRemoteFilterFactory(Factory)</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/IgniteConfiguration.html#setSqlConnectorConfiguration(org.apache.ignite.configuration.SqlConnectorConfiguration)">org.apache.ignite.configuration.IgniteConfiguration.setSqlConnectorConfiguration(SqlConnectorConfiguration)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/IgniteConfiguration.html#setClientConnectorConfiguration(org.apache.ignite.configuration.ClientConnectorConfiguration)"><code>IgniteConfiguration.setClientConnectorConfiguration(ClientConnectorConfiguration)</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/ConnectorConfiguration.html#setSslContextFactory(org.apache.ignite.internal.client.ssl.GridSslContextFactory)">org.apache.ignite.configuration.ConnectorConfiguration.setSslContextFactory(GridSslContextFactory)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/ConnectorConfiguration.html#setSslFactory(javax.cache.configuration.Factory)"><code>ConnectorConfiguration.setSslFactory(Factory)</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/CacheConfiguration.html#setTransactionManagerLookupClassName(java.lang.String)">org.apache.ignite.configuration.CacheConfiguration.setTransactionManagerLookupClassName(String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/TransactionConfiguration.html#setTxManagerFactory(javax.cache.configuration.Factory)"><code>TransactionConfiguration.setTxManagerFactory(Factory)</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/stream/StreamAdapter.html#setTupleExtractor(org.apache.ignite.stream.StreamTupleExtractor)">org.apache.ignite.stream.StreamAdapter.setTupleExtractor(StreamTupleExtractor<T, K, V>)</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/configuration/TransactionConfiguration.html#setTxManagerLookupClassName(java.lang.String)">org.apache.ignite.configuration.TransactionConfiguration.setTxManagerLookupClassName(String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/configuration/TransactionConfiguration.html#setTxManagerFactory(javax.cache.configuration.Factory)"><code>TransactionConfiguration.setTxManagerFactory(Factory)</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/configuration/TransactionConfiguration.html#setTxSerializableEnabled(boolean)">org.apache.ignite.configuration.TransactionConfiguration.setTxSerializableEnabled(boolean)</a>
<div class="block"><i>This method has no effect, <a href="org/apache/ignite/transactions/TransactionIsolation.html#SERIALIZABLE"><code>TransactionIsolation.SERIALIZABLE</code></a> isolation is always enabled.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/IgniteFileSystem.html#withAsync()">org.apache.ignite.IgniteFileSystem.withAsync()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/IgniteCompute.html#withAsync()">org.apache.ignite.IgniteCompute.withAsync()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/IgniteServices.html#withAsync()">org.apache.ignite.IgniteServices.withAsync()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/IgniteEvents.html#withAsync()">org.apache.ignite.IgniteEvents.withAsync()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/IgniteCache.html#withAsync()">org.apache.ignite.IgniteCache.withAsync()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/IgniteMessaging.html#withAsync()">org.apache.ignite.IgniteMessaging.withAsync()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/IgniteCluster.html#withAsync()">org.apache.ignite.IgniteCluster.withAsync()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/lang/IgniteAsyncSupport.html#withAsync()">org.apache.ignite.lang.IgniteAsyncSupport.withAsync()</a>
<div class="block"><i>since 2.0. Please use new specialized async method
 e.g.
 <pre>
     IgniteFuture f = cache.getAsync();
 </pre>
 instead of old-style async API:
 <pre>
     IgniteCache asyncCache = cache.withAsync();
     asyncCache.get(key);
     IgniteFuture fut = asyncCache.future();
 </pre></i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="constructor">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Constructors table, listing deprecated constructors, and an explanation">
<caption><span>Deprecated Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/hadoop/fs/IgniteHadoopIgfsSecondaryFileSystem.html#IgniteHadoopIgfsSecondaryFileSystem(java.lang.String)">org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem(String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/hadoop/fs/IgniteHadoopIgfsSecondaryFileSystem.html#getFileSystemFactory()"><code>IgniteHadoopIgfsSecondaryFileSystem.getFileSystemFactory()</code></a> instead.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/hadoop/fs/IgniteHadoopIgfsSecondaryFileSystem.html#IgniteHadoopIgfsSecondaryFileSystem(java.lang.String,%20java.lang.String)">org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem(String, String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/hadoop/fs/IgniteHadoopIgfsSecondaryFileSystem.html#getFileSystemFactory()"><code>IgniteHadoopIgfsSecondaryFileSystem.getFileSystemFactory()</code></a> instead.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/hadoop/fs/IgniteHadoopIgfsSecondaryFileSystem.html#IgniteHadoopIgfsSecondaryFileSystem(java.lang.String,%20java.lang.String,%20java.lang.String)">org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem(String, String, String)</a>
<div class="block"><i>Use <a href="org/apache/ignite/hadoop/fs/IgniteHadoopIgfsSecondaryFileSystem.html#getFileSystemFactory()"><code>IgniteHadoopIgfsSecondaryFileSystem.getFileSystemFactory()</code></a> instead.</i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="annotation_type_member">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table border="0" cellpadding="3" cellspacing="0" summary="Deprecated Annotation Type Elements table, listing deprecated annotation type elements, and an explanation">
<caption><span>Deprecated Annotation Type Elements</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Annotation Type Element and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/compute/gridify/Gridify.html#gridName()">org.apache.ignite.compute.gridify.Gridify.gridName</a>
<div class="block"><i>Use <a href="org/apache/ignite/compute/gridify/Gridify.html#igniteInstanceName()"><code>Gridify.igniteInstanceName()</code></a>. Nonempty <a href="org/apache/ignite/compute/gridify/Gridify.html#igniteInstanceName()"><code>Gridify.igniteInstanceName()</code></a> takes precedence.</i></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/ignite/compute/gridify/GridifySetToValue.html#gridName()">org.apache.ignite.compute.gridify.GridifySetToValue.gridName</a>
<div class="block"><i>Use <a href="org/apache/ignite/compute/gridify/GridifySetToValue.html#igniteInstanceName()"><code>GridifySetToValue.igniteInstanceName()</code></a>. Nonempty <a href="org/apache/ignite/compute/gridify/GridifySetToValue.html#igniteInstanceName()"><code>GridifySetToValue.igniteInstanceName()</code></a> takes precedence.</i></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/ignite/compute/gridify/GridifySetToSet.html#gridName()">org.apache.ignite.compute.gridify.GridifySetToSet.gridName</a>
<div class="block"><i>Use <a href="org/apache/ignite/compute/gridify/GridifySetToSet.html#igniteInstanceName()"><code>GridifySetToSet.igniteInstanceName()</code></a>. Nonempty <a href="org/apache/ignite/compute/gridify/GridifySetToSet.html#igniteInstanceName()"><code>GridifySetToSet.igniteInstanceName()</code></a> takes precedence.</i></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
<!-- ======= 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>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.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>
<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>2017 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 Fabric</b>                                                         </td>                                                         <td>:&nbsp;&nbsp;                                                             ver. <strong>2.3.0</strong>                                                         </td>                                                     </tr>                                                     <tr style="padding: 0; margin: 0">                                                         <td>                                                             <b>Release Date</b>                                                         </td>                                                         <td>:&nbsp;&nbsp;                                                             October 28 2017                                                         </td>                                                     </tr>                                                 </tbody>                                             </table>                                         </td>                                     </tr>                                     </table></small></p>
</body>
</html>
