blob: 86782e6594f8c6f61752e034de79dba09d8fbe9c [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>
<link rel="canonical" href="https://ignite.apache.org/releases/2.1.0/javadoc/org/apache/ignite/events/Event.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<!-- Generated by javadoc (version 1.7.0_80) on Thu Jul 20 19:37:41 UTC 2017 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Event (Ignite 2.1.0)</title>
<meta name="date" content="2017-07-20">
<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="Event (Ignite 2.1.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><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Event.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/ignite/events/DiscoveryEvent.html" title="class in org.apache.ignite.events"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/ignite/events/EventAdapter.html" title="class in org.apache.ignite.events"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/ignite/events/Event.html" target="_top">Frames</a></li>
<li><a href="Event.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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>Constr&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.events</div>
<h2 title="Interface Event" class="title">Interface Event</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../org/apache/ignite/events/Event.html" title="interface in org.apache.ignite.events">Event</a>&gt;, <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../org/apache/ignite/events/CacheEvent.html" title="class in org.apache.ignite.events">CacheEvent</a>, <a href="../../../../org/apache/ignite/events/CacheQueryExecutedEvent.html" title="class in org.apache.ignite.events">CacheQueryExecutedEvent</a>, <a href="../../../../org/apache/ignite/events/CacheQueryReadEvent.html" title="class in org.apache.ignite.events">CacheQueryReadEvent</a>, <a href="../../../../org/apache/ignite/events/CacheRebalancingEvent.html" title="class in org.apache.ignite.events">CacheRebalancingEvent</a>, <a href="../../../../org/apache/ignite/events/CheckpointEvent.html" title="class in org.apache.ignite.events">CheckpointEvent</a>, <a href="../../../../org/apache/ignite/events/DeploymentEvent.html" title="class in org.apache.ignite.events">DeploymentEvent</a>, <a href="../../../../org/apache/ignite/events/DiscoveryEvent.html" title="class in org.apache.ignite.events">DiscoveryEvent</a>, <a href="../../../../org/apache/ignite/events/EventAdapter.html" title="class in org.apache.ignite.events">EventAdapter</a>, <a href="../../../../org/apache/ignite/events/IgfsEvent.html" title="class in org.apache.ignite.events">IgfsEvent</a>, <a href="../../../../org/apache/ignite/events/JobEvent.html" title="class in org.apache.ignite.events">JobEvent</a>, <a href="../../../../org/apache/ignite/events/TaskEvent.html" title="class in org.apache.ignite.events">TaskEvent</a>, <a href="../../../../org/apache/ignite/events/WalSegmentArchivedEvent.html" title="class in org.apache.ignite.events">WalSegmentArchivedEvent</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="strong">Event</span>
extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../org/apache/ignite/events/Event.html" title="interface in org.apache.ignite.events">Event</a>&gt;, <a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></pre>
<div class="block">Grid events are used for notification about what happens within the grid. Note that by
design Ignite keeps all events generated on the local node locally and it provides
APIs for performing a distributed queries across multiple nodes:
<ul>
<li>
<a href="../../../../org/apache/ignite/IgniteEvents.html#remoteQuery(org.apache.ignite.lang.IgnitePredicate,%20long,%20int...)"><code>IgniteEvents.remoteQuery(org.apache.ignite.lang.IgnitePredicate, long, int...)</code></a> - querying
events occurred on the nodes specified, including remote nodes.
</li>
<li>
<a href="../../../../org/apache/ignite/IgniteEvents.html#localQuery(org.apache.ignite.lang.IgnitePredicate,%20int...)"><code>IgniteEvents.localQuery(org.apache.ignite.lang.IgnitePredicate, int...)</code></a> - querying only local
events stored on this local node.
</li>
<li>
<a href="../../../../org/apache/ignite/IgniteEvents.html#localListen(org.apache.ignite.lang.IgnitePredicate,%20int...)"><code>IgniteEvents.localListen(org.apache.ignite.lang.IgnitePredicate, int...)</code></a> - listening
to local grid events (events from remote nodes not included).
</li>
</ul>
<h1 class="header">Events and Performance</h1>
Note that by default all events in Ignite are enabled and therefore generated and stored
by whatever event storage SPI is configured. Ignite can and often does generate thousands events per seconds
under the load and therefore it creates a significant additional load on the system. If these events are
not needed by the application this load is unnecessary and leads to significant performance degradation.
<p>
It is <b>highly recommended</b> to enable only those events that your application logic requires
by using either <a href="../../../../org/apache/ignite/configuration/IgniteConfiguration.html#getIncludeEventTypes()"><code>IgniteConfiguration.getIncludeEventTypes()</code></a> method in Ignite configuration. Note that certain
events are required for Ignite's internal operations and such events will still be generated but not stored by
event storage SPI if they are disabled in Ignite configuration.
<h1 class="header">Internal and Hidden Events</h1>
Also note that some events are considered to be internally used or hidden.
<p>
Internally used events are always "recordable" for notification purposes (regardless of whether they were
enabled or disabled). But won't be sent down to SPI level if user specifically excluded them.
<p>
All discovery events are internal:
<ul>
<li><a href="../../../../org/apache/ignite/events/EventType.html#EVT_NODE_FAILED"><code>EventType.EVT_NODE_FAILED</code></a></li>
<li><a href="../../../../org/apache/ignite/events/EventType.html#EVT_NODE_LEFT"><code>EventType.EVT_NODE_LEFT</code></a></li>
<li><a href="../../../../org/apache/ignite/events/EventType.html#EVT_NODE_JOINED"><code>EventType.EVT_NODE_JOINED</code></a></li>
<li><a href="../../../../org/apache/ignite/events/EventType.html#EVT_NODE_METRICS_UPDATED"><code>EventType.EVT_NODE_METRICS_UPDATED</code></a></li>
<li><a href="../../../../org/apache/ignite/events/EventType.html#EVT_NODE_SEGMENTED"><code>EventType.EVT_NODE_SEGMENTED</code></a></li>
</ul>
<p>
Hidden events are NEVER sent to SPI level. They serve purpose of local
notification for the local node.
<p>
Hidden events:
<ul>
<li><a href="../../../../org/apache/ignite/events/EventType.html#EVT_NODE_METRICS_UPDATED"><code>EventType.EVT_NODE_METRICS_UPDATED</code></a></li>
</ul></div>
<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/ignite/events/JobEvent.html" title="class in org.apache.ignite.events"><code>JobEvent</code></a>,
<a href="../../../../org/apache/ignite/events/CacheEvent.html" title="class in org.apache.ignite.events"><code>CacheEvent</code></a>,
<a href="../../../../org/apache/ignite/events/CacheRebalancingEvent.html" title="class in org.apache.ignite.events"><code>CacheRebalancingEvent</code></a>,
<a href="../../../../org/apache/ignite/events/CheckpointEvent.html" title="class in org.apache.ignite.events"><code>CheckpointEvent</code></a>,
<a href="../../../../org/apache/ignite/events/DeploymentEvent.html" title="class in org.apache.ignite.events"><code>DeploymentEvent</code></a>,
<a href="../../../../org/apache/ignite/events/DiscoveryEvent.html" title="class in org.apache.ignite.events"><code>DiscoveryEvent</code></a>,
<a href="../../../../org/apache/ignite/events/TaskEvent.html" title="class in org.apache.ignite.events"><code>TaskEvent</code></a>,
<a href="../../../../org/apache/ignite/IgniteEvents.html#waitForLocal(org.apache.ignite.lang.IgnitePredicate,%20int...)"><code>IgniteEvents.waitForLocal(org.apache.ignite.lang.IgnitePredicate, int...)</code></a></dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/ignite/lang/IgniteUuid.html" title="class in org.apache.ignite.lang">IgniteUuid</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/events/Event.html#id()">id</a></strong>()</code>
<div class="block">Gets globally unique ID of this event.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/events/Event.html#localOrder()">localOrder</a></strong>()</code>
<div class="block">Gets locally unique ID that is atomically incremented for each event.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/events/Event.html#message()">message</a></strong>()</code>
<div class="block">Gets optional message for this event.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/events/Event.html#name()">name</a></strong>()</code>
<div class="block">Gets name of this event.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/events/Event.html#node()">node</a></strong>()</code>
<div class="block">Node where event occurred and was recorded</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/events/Event.html#shortDisplay()">shortDisplay</a></strong>()</code>
<div class="block">Gets a shortened version of <code>toString()</code> result.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/events/Event.html#timestamp()">timestamp</a></strong>()</code>
<div class="block">Gets event timestamp.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/ignite/events/Event.html#type()">type</a></strong>()</code>
<div class="block">Gets type of this event.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Comparable">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true#compareTo(T)" title="class or interface in java.lang">compareTo</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="id()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>id</h4>
<pre><a href="../../../../org/apache/ignite/lang/IgniteUuid.html" title="class in org.apache.ignite.lang">IgniteUuid</a>&nbsp;id()</pre>
<div class="block">Gets globally unique ID of this event.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Globally unique ID of this event.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/ignite/events/Event.html#localOrder()"><code>localOrder()</code></a></dd></dl>
</li>
</ul>
<a name="localOrder()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>localOrder</h4>
<pre>long&nbsp;localOrder()</pre>
<div class="block">Gets locally unique ID that is atomically incremented for each event. Unlike
global <a href="../../../../org/apache/ignite/events/Event.html#id()"><code>id()</code></a> this local ID can be used for ordering events on this node.
<p>
Note that for performance considerations Ignite doesn't order events globally.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Locally unique ID that is atomically incremented for each new event.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/ignite/events/Event.html#id()"><code>id()</code></a></dd></dl>
</li>
</ul>
<a name="node()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>node</h4>
<pre><a href="../../../../org/apache/ignite/cluster/ClusterNode.html" title="interface in org.apache.ignite.cluster">ClusterNode</a>&nbsp;node()</pre>
<div class="block">Node where event occurred and was recorded</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>node where event occurred and was recorded.</dd></dl>
</li>
</ul>
<a name="message()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>message</h4>
<pre>@Nullable
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;message()</pre>
<div class="block">Gets optional message for this event.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Optional (can be <code>null</code>) message for this event.</dd></dl>
</li>
</ul>
<a name="type()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>type</h4>
<pre>int&nbsp;type()</pre>
<div class="block">Gets type of this event. All system event types are defined in
<a href="../../../../org/apache/ignite/events/EventType.html" title="interface in org.apache.ignite.events"><code>EventType</code></a>.
<p>
NOTE: all types in range <b>from 1 to 1000 are reserved</b> for
internal Ignite events and should not be used by user-defined events.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Event's type.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/ignite/events/EventType.html" title="interface in org.apache.ignite.events"><code>EventType</code></a></dd></dl>
</li>
</ul>
<a name="name()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>name</h4>
<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name()</pre>
<div class="block">Gets name of this event. All events are defined in <a href="../../../../org/apache/ignite/events/EventType.html" title="interface in org.apache.ignite.events"><code>EventType</code></a> class.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Name of this event.</dd></dl>
</li>
</ul>
<a name="timestamp()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>timestamp</h4>
<pre>long&nbsp;timestamp()</pre>
<div class="block">Gets event timestamp. Timestamp is local to the node on which this
event was produced. Note that more than one event can be generated
with the same timestamp. For ordering purposes use <a href="../../../../org/apache/ignite/events/Event.html#localOrder()"><code>localOrder()</code></a> instead.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Event timestamp.</dd></dl>
</li>
</ul>
<a name="shortDisplay()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>shortDisplay</h4>
<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;shortDisplay()</pre>
<div class="block">Gets a shortened version of <code>toString()</code> result. Suitable for humans to read.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>Shortened version of <code>toString()</code> result.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Event.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em>Ignite - In-Memory Data Fabric</em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/ignite/events/DiscoveryEvent.html" title="class in org.apache.ignite.events"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/ignite/events/EventAdapter.html" title="class in org.apache.ignite.events"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/ignite/events/Event.html" target="_top">Frames</a></li>
<li><a href="Event.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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>Constr&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>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.1.0</strong> </td> </tr> <tr style="padding: 0; margin: 0"> <td> <b>Release Date</b> </td> <td>:&nbsp;&nbsp; July 20 2017 </td> </tr> </tbody> </table> </td> </tr> </table></small></p>
</body>
</html>