<!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/latest/javadoc/org/apache/ignite/spi/checkpoint/CheckpointSpi.html" />


<!-- Generated by javadoc (1.8.0_221) on Thu Feb 27 14:09:38 MSK 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CheckpointSpi (Ignite 2.8.0)</title>
<meta name="date" content="2020-02-27">
<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.0)";
        }
    }
    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.0</strong>                                                         </td>                                                     </tr>                                                     <tr style="padding: 0; margin: 0">                                                         <td>                                                             <b>Release Date</b>                                                         </td>                                                         <td>:&nbsp;&nbsp;                                                             February 27 2020                                                         </td>                                                     </tr>                                                 </tbody>                                             </table>                                         </td>                                     </tr>                                     </table></small></p>
</body>
</html>
