<!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.8.1/javadoc/org/apache/ignite/spi/checkpoint/CheckpointSpi.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">

<!-- Generated by javadoc (1.8.0_221) on Thu May 21 17:45:06 MSK 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CheckpointSpi (Ignite 2.8.1)</title>
<meta name="date" content="2020-05-21">
<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'/>

<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"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="CheckpointSpi (Ignite 2.8.1)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/CheckpointSpi.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/spi/checkpoint/CheckpointListener.html" title="interface in org.apache.ignite.spi.checkpoint"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/ignite/spi/checkpoint/CheckpointSpi.html" target="_top">Frames</a></li>
<li><a href="CheckpointSpi.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>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.spi.checkpoint</div>
<h2 title="Interface CheckpointSpi" class="title">Interface CheckpointSpi</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Superinterfaces:</dt>
<dd><a href="../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../../org/apache/ignite/spi/checkpoint/cache/CacheCheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.cache">CacheCheckpointSpi</a>, <a href="../../../../../org/apache/ignite/spi/checkpoint/jdbc/JdbcCheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.jdbc">JdbcCheckpointSpi</a>, <a href="../../../../../org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.noop">NoopCheckpointSpi</a>, <a href="../../../../../org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.s3">S3CheckpointSpi</a>, <a href="../../../../../org/apache/ignite/spi/checkpoint/sharedfs/SharedFsCheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.sharedfs">SharedFsCheckpointSpi</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">CheckpointSpi</span>
extends <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html" title="interface in org.apache.ignite.spi">IgniteSpi</a></pre>
<div class="block">Checkpoint SPI provides an ability to save an intermediate job state. It can
 be useful when long running jobs need to store some intermediate state to
 protect from system or application failures. Grid job can save intermediate
 state in certain points of the execution (e.g., periodically) and upon start
 check if previously saved state exists. This allows job to restart from the last
 save checkpoint in case of preemption or other types of failover.
 <p>
 Note, that since a job can execute on different nodes, checkpoints need to
 be accessible by all nodes.
 <p>
 To manipulate checkpoints from grid job the following public methods are available
 on task session (that can be injected into grid job):
 <ul>
 <li><a href="../../../../../org/apache/ignite/compute/ComputeTaskSession.html#loadCheckpoint-java.lang.String-"><code>ComputeTaskSession.loadCheckpoint(String)</code></a></li>
 <li><a href="../../../../../org/apache/ignite/compute/ComputeTaskSession.html#removeCheckpoint-java.lang.String-"><code>ComputeTaskSession.removeCheckpoint(String)</code></a></li>
 <li><a href="../../../../../org/apache/ignite/compute/ComputeTaskSession.html#saveCheckpoint-java.lang.String-java.lang.Object-"><code>ComputeTaskSession.saveCheckpoint(String, Object)</code></a></li>
 <li><a href="../../../../../org/apache/ignite/compute/ComputeTaskSession.html#saveCheckpoint-java.lang.String-java.lang.Object-org.apache.ignite.compute.ComputeTaskSessionScope-long-"><code>ComputeTaskSession.saveCheckpoint(String, Object, org.apache.ignite.compute.ComputeTaskSessionScope, long)</code></a></li>
 <li><a href="../../../../../org/apache/ignite/compute/ComputeTaskSession.html#saveCheckpoint-java.lang.String-java.lang.Object-org.apache.ignite.compute.ComputeTaskSessionScope-long-boolean-"><code>ComputeTaskSession.saveCheckpoint(String, Object, org.apache.ignite.compute.ComputeTaskSessionScope, long, boolean)</code></a></li>
 </ul>
 <p>
 Ignite provides the following <code>GridCheckpointSpi</code> implementations:
 <ul>
 <li><a href="../../../../../org/apache/ignite/spi/checkpoint/noop/NoopCheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.noop"><code>NoopCheckpointSpi</code></a> - default</li>
 <li><a href="../../../../../org/apache/ignite/spi/checkpoint/sharedfs/SharedFsCheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.sharedfs"><code>SharedFsCheckpointSpi</code></a></li>
 <li><a href="../../../../../org/apache/ignite/spi/checkpoint/s3/S3CheckpointSpi.html"><code>S3CheckpointSpi</code></a></li>
 <li><a href="../../../../../org/apache/ignite/spi/checkpoint/jdbc/JdbcCheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.jdbc"><code>JdbcCheckpointSpi</code></a></li>
 <li><a href="../../../../../org/apache/ignite/spi/checkpoint/cache/CacheCheckpointSpi.html" title="class in org.apache.ignite.spi.checkpoint.cache"><code>CacheCheckpointSpi</code></a></li>
 </ul>
 <b>NOTE:</b> this SPI (i.e. methods in this interface) should never be used directly. SPIs provide
 internal view on the subsystem and is used internally by Ignite kernal. In rare use cases when
 access to a specific implementation of this SPI is required - an instance of this SPI can be obtained
 via <a href="../../../../../org/apache/ignite/Ignite.html#configuration--"><code>Ignite.configuration()</code></a> method to check its configuration properties or call other non-SPI
 methods. Note again that calling methods from this interface on the obtained instance can lead
 to undefined behavior and explicitly not supported.</div>
</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="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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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>@Nullable byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/ignite/spi/checkpoint/CheckpointSpi.html#loadCheckpoint-java.lang.String-">loadCheckpoint</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</code>
<div class="block">Loads checkpoint from storage by its unique key.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/ignite/spi/checkpoint/CheckpointSpi.html#removeCheckpoint-java.lang.String-">removeCheckpoint</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</code>
<div class="block">This method instructs the checkpoint provider to clean saved data for a
 given <code>key</code>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/ignite/spi/checkpoint/CheckpointSpi.html#saveCheckpoint-java.lang.String-byte:A-long-boolean-">saveCheckpoint</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
              byte[]&nbsp;state,
              long&nbsp;timeout,
              boolean&nbsp;overwrite)</code>
<div class="block">Saves checkpoint to the storage.</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/spi/checkpoint/CheckpointSpi.html#setCheckpointListener-org.apache.ignite.spi.checkpoint.CheckpointListener-">setCheckpointListener</a></span>(<a href="../../../../../org/apache/ignite/spi/checkpoint/CheckpointListener.html" title="interface in org.apache.ignite.spi.checkpoint">CheckpointListener</a>&nbsp;lsnr)</code>
<div class="block">Sets the checkpoint listener.</div>
</td>
</tr>
</table>
<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>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#spiStart-java.lang.String-">spiStart</a>, <a href="../../../../../org/apache/ignite/spi/IgniteSpi.html#spiStop--">spiStop</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="loadCheckpoint-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>loadCheckpoint</h4>
<pre>@Nullable
@Nullable byte[]&nbsp;loadCheckpoint(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)
                                   throws <a href="../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></pre>
<div class="block">Loads checkpoint from storage by its unique key.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - Checkpoint key.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Loaded data or <code>null</code> if there is no data for a given
      key.</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 while loading
      checkpoint data. Note that in case when given <code>key</code> is not
      found this method will return <code>null</code>.</dd>
</dl>
</li>
</ul>
<a name="saveCheckpoint-java.lang.String-byte:A-long-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>saveCheckpoint</h4>
<pre>boolean&nbsp;saveCheckpoint(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key,
                       byte[]&nbsp;state,
                       long&nbsp;timeout,
                       boolean&nbsp;overwrite)
                throws <a href="../../../../../org/apache/ignite/spi/IgniteSpiException.html" title="class in org.apache.ignite.spi">IgniteSpiException</a></pre>
<div class="block">Saves checkpoint to the storage.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - Checkpoint unique key.</dd>
<dd><code>state</code> - Saved data.</dd>
<dd><code>timeout</code> - Every intermediate data stored by checkpoint provider
      should have a timeout. Timeout allows for effective resource
      management by checkpoint provider by cleaning saved data that are not
      needed anymore. Generally, the user should choose the minimum
      possible timeout to avoid long-term resource acquisition by checkpoint
      provider. Value <code>0</code> means that timeout will never expire.</dd>
<dd><code>overwrite</code> - Whether or not overwrite checkpoint if it already exists.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if checkpoint has been actually saved, <code>false</code> otherwise.</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 while saving
    checkpoint data.</dd>
</dl>
</li>
</ul>
<a name="removeCheckpoint-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeCheckpoint</h4>
<pre>boolean&nbsp;removeCheckpoint(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;key)</pre>
<div class="block">This method instructs the checkpoint provider to clean saved data for a
 given <code>key</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>key</code> - Key for the checkpoint to remove.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if data has been actually removed, <code>false</code>
      otherwise.</dd>
</dl>
</li>
</ul>
<a name="setCheckpointListener-org.apache.ignite.spi.checkpoint.CheckpointListener-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setCheckpointListener</h4>
<pre>void&nbsp;setCheckpointListener(<a href="../../../../../org/apache/ignite/spi/checkpoint/CheckpointListener.html" title="interface in org.apache.ignite.spi.checkpoint">CheckpointListener</a>&nbsp;lsnr)</pre>
<div class="block">Sets the checkpoint listener.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>lsnr</code> - The listener to set or <code>null</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/CheckpointSpi.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/spi/checkpoint/CheckpointListener.html" title="interface in org.apache.ignite.spi.checkpoint"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/ignite/spi/checkpoint/CheckpointSpi.html" target="_top">Frames</a></li>
<li><a href="CheckpointSpi.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>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>2020 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.8.1</strong>                                                         </td>                                                     </tr>                                                     <tr style="padding: 0; margin: 0">                                                         <td>                                                             <b>Release Date</b>                                                         </td>                                                         <td>:&nbsp;&nbsp;                                                             May 21 2020                                                         </td>                                                     </tr>                                                 </tbody>                                             </table>                                         </td>                                     </tr>                                     </table></small></p>
</body>
</html>
