Package org.apache.ignite.spi.checkpoint.cache

## Class CacheCheckpointSpi

- java.lang.Object
- - org.apache.ignite.spi.IgniteSpiAdapter
  - - org.apache.ignite.spi.checkpoint.cache.CacheCheckpointSpi

- All Implemented Interfaces:
    `CheckpointSpi`, `IgniteSpi`

      @IgniteSpiMultipleInstancesSupport(true)
      public class CacheCheckpointSpi
      extends IgniteSpiAdapter
      implements CheckpointSpi

  This class defines cache-based implementation for checkpoint SPI.

  # Configuration

  ## Mandatory

  This SPI has no mandatory configuration parameters.

  ## Optional

  This SPI has following optional configuration parameters:
  - Cache name (see `setCacheName(String)`)

  ## Java Example

  `CacheCheckpointSpi` can be configured as follows:

       IgniteConfiguration cfg = new IgniteConfiguration();

       String cacheName = "checkpoints";

       GridCacheConfiguration cacheConfig = new GridCacheConfiguration();

       cacheConfig.setName(cacheName);

       GridCacheCheckpointSpi spi = new GridCacheCheckpointSpi();

       spi.setCacheName(cacheName);

       cfg.setCacheConfiguration(cacheConfig);

       // Override default checkpoint SPI.
       cfg.setCheckpointSpi(cpSpi);

       // Start grid.
       G.start(cfg);

  ## Spring Example

  `CacheCheckpointSpi` can be configured from Spring XML configuration file:

       <bean id="grid.custom.cfg" class="org.apache.ignite.configuration.IgniteConfiguration" singleton="true">
           ...
               <!-- Cache configuration. -->
               <property name="cacheConfiguration">
                   <list>
                       <bean class="org.apache.ignite.cache.CacheConfiguration">
                           <property name="name" value="CACHE_NAME"/>
                       </bean>
                   </list>
               </property>

               <!-- SPI configuration. -->
               <property name="checkpointSpi">
                   <bean class="org.apache.ignite.spi.checkpoint.cache.CacheCheckpointSpi">
                       <property name="cacheName" value="CACHE_NAME"/>
                   </bean>
               </property>
           ...
       </bean>

  For information about Spring framework visit www.springframework.org

  See Also:
    `CheckpointSpi`

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static String` | `DFLT_CACHE_NAME` | Default cache name (value is `checkpoints`).

    - ### Fields inherited from class org.apache.ignite.spi.IgniteSpiAdapter

      `ignite, igniteInstanceName`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `CacheCheckpointSpi()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `getCacheName()` | Gets cache name to be used by this SPI..
    `@org.jetbrains.annotations.Nullable byte[]` | `loadCheckpoint​(String key)` | Loads checkpoint from storage by its unique key.
    `protected void` | `onContextDestroyed0()` | Method to be called in the beginning of onContextDestroyed() method.
    `protected void` | `onContextInitialized0​(IgniteSpiContext spiCtx)` | Method to be called in the end of onContextInitialized method.
    `boolean` | `removeCheckpoint​(String key)` | This method instructs the checkpoint provider to clean saved data for a given `key`.
    `boolean` | `saveCheckpoint​(String key, byte[] state, long timeout, boolean overwrite)` | Saves checkpoint to the storage.
    `CacheCheckpointSpi` | `setCacheName​(String cacheName)` | Sets cache name to be used by this SPI.
    `void` | `setCheckpointListener​(CheckpointListener lsnr)` | Sets the checkpoint listener.
    `CacheCheckpointSpi` | `setName​(String name)` | Sets SPI name.
    `void` | `spiStart​(@Nullable String igniteInstanceName)` | This method is called to start SPI.
    `void` | `spiStop()` | This method is called to stop SPI.
    `String` | `toString()`

    - ### Methods inherited from class org.apache.ignite.spi.IgniteSpiAdapter

      `addTimeoutObject, assertParameter, checkConfigurationConsistency0, clientFailureDetectionTimeout, configInfo, createSpiAttributeName, failureDetectionTimeout, failureDetectionTimeoutEnabled, failureDetectionTimeoutEnabled, getConsistentAttributeNames, getExceptionRegistry, getLocalNode, getName, getNodeAttributes, getSpiContext, ignite, initFailureDetectionTimeout, injectables, injectResources, isNodeStopping, onBeforeStart, onClientDisconnected, onClientReconnected, onContextDestroyed, onContextInitialized, registerMBean, removeTimeoutObject, started, startInfo, startStopwatch, stopInfo, unregisterMBean`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.apache.ignite.spi.IgniteSpi

      `getName, getNodeAttributes, onClientDisconnected, onClientReconnected, onContextDestroyed, onContextInitialized`

- - ### Field Detail

    - #### DFLT_CACHE_NAME

          public static final String DFLT_CACHE_NAME

      Default cache name (value is `checkpoints`).
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### CacheCheckpointSpi

          public CacheCheckpointSpi()

  - ### Method Detail

    - #### setCacheName

          @IgniteSpiConfiguration(optional=true)
          public CacheCheckpointSpi setCacheName​(String cacheName)

      Sets cache name to be used by this SPI.

      If cache name is not provided `DFLT_CACHE_NAME` is used.

      Parameters:
        `cacheName` - Cache name.
      Returns:
        `this` for chaining.

    - #### getCacheName

          public String getCacheName()

      Gets cache name to be used by this SPI..
      Returns:
        Cache name to be used by this SPI.

    - #### spiStart

          public void spiStart​(@Nullable
                               @Nullable String igniteInstanceName)
                        throws IgniteSpiException

      This method is called to start SPI. After this method returns successfully kernel assumes that SPI is fully operational.
      Specified by:
        `spiStart` in interface `IgniteSpi`
      Parameters:
        `igniteInstanceName` - Name of Ignite instance this SPI is being started for (`null` for default Ignite instance).
      Throws:
        `IgniteSpiException` - Throws in case of any error during SPI start.

    - #### onContextInitialized0

          protected void onContextInitialized0​(IgniteSpiContext spiCtx)
                                        throws IgniteSpiException

      Method to be called in the end of onContextInitialized method.
      Overrides:
        `onContextInitialized0` in class `IgniteSpiAdapter`
      Parameters:
        `spiCtx` - SPI context.
      Throws:
        `IgniteSpiException` - In case of errors.

    - #### spiStop

          public void spiStop()
                       throws IgniteSpiException

      This method is called to stop SPI. After this method returns kernel assumes that this SPI is finished and all resources acquired by it are released.

      Note that this method can be called at any point including during recovery of failed start. It should make no assumptions on what state SPI will be in when this method is called.

      Specified by:
        `spiStop` in interface `IgniteSpi`
      Throws:
        `IgniteSpiException` - Thrown in case of any error during SPI stop.

    - #### onContextDestroyed0

          protected void onContextDestroyed0()

      Method to be called in the beginning of onContextDestroyed() method.
      Overrides:
        `onContextDestroyed0` in class `IgniteSpiAdapter`

    - #### loadCheckpoint

          @Nullable
          public @org.jetbrains.annotations.Nullable byte[] loadCheckpoint​(String key)
                                                                    throws IgniteSpiException

      Loads checkpoint from storage by its unique key.
      Specified by:
        `loadCheckpoint` in interface `CheckpointSpi`
      Parameters:
        `key` - Checkpoint key.
      Returns:
        Loaded data or `null` if there is no data for a given key.
      Throws:
        `IgniteSpiException` - Thrown in case of any error while loading checkpoint data. Note that in case when given `key` is not found this method will return `null`.

    - #### saveCheckpoint

          public boolean saveCheckpoint​(String key,
                                        byte[] state,
                                        long timeout,
                                        boolean overwrite)
                                 throws IgniteSpiException

      Saves checkpoint to the storage.
      Specified by:
        `saveCheckpoint` in interface `CheckpointSpi`
      Parameters:
        `key` - Checkpoint unique key.
        `state` - Saved data.
        `timeout` - 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 `0` means that timeout will never expire.
        `overwrite` - Whether or not overwrite checkpoint if it already exists.
      Returns:
        `true` if checkpoint has been actually saved, `false` otherwise.
      Throws:
        `IgniteSpiException` - Thrown in case of any error while saving checkpoint data.

    - #### removeCheckpoint

          public boolean removeCheckpoint​(String key)

      This method instructs the checkpoint provider to clean saved data for a given `key`.
      Specified by:
        `removeCheckpoint` in interface `CheckpointSpi`
      Parameters:
        `key` - Key for the checkpoint to remove.
      Returns:
        `true` if data has been actually removed, `false` otherwise.

    - #### setCheckpointListener

          public void setCheckpointListener​(CheckpointListener lsnr)

      Sets the checkpoint listener.
      Specified by:
        `setCheckpointListener` in interface `CheckpointSpi`
      Parameters:
        `lsnr` - The listener to set or `null`.

    - #### setName

          public CacheCheckpointSpi setName​(String name)

      Sets SPI name.
      Overrides:
        `setName` in class `IgniteSpiAdapter`
      Parameters:
        `name` - SPI name.
      Returns:
        `this` for chaining.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`