GridGain™ 2.1.0
Java API Specification

org.gridgain.grid.spi.checkpoint.sharedfs
Class GridSharedFsCheckpointSpi

java.lang.Object
  extended by org.gridgain.grid.spi.GridSpiAdapter
      extended by org.gridgain.grid.spi.checkpoint.sharedfs.GridSharedFsCheckpointSpi
All Implemented Interfaces:
GridCheckpointSpi, GridSharedFsCheckpointSpiMBean, GridSpi, GridSpiManagementMBean

@GridSpiInfo(author="GridGain Systems",
             url="www.gridgain.org",
             email="support@gridgain.com",
             version="x.x")
@GridSpiMultipleInstancesSupport(value=true)
public class GridSharedFsCheckpointSpi
extends GridSpiAdapter
implements GridCheckpointSpi, GridSharedFsCheckpointSpiMBean

This class defines shared file system GridCheckpointSpi implementation for checkpoint SPI. All checkpoints are stored on shared storage and available for all nodes in the grid. Note that every node must have access to the shared directory. The reason the directory needs to be shared is because a job state can be saved on one node and loaded on another (e.g. if a job gets preempted on a different node after node failure). When started, this SPI tracks all checkpoints saved by localhost for expiration. Note that this SPI does not cache data stored in checkpoints - all the data is loaded from file system on demand.

Directory path for shared checkpoints should either be empty or contain previously stored checkpoint files.

Configuration

Mandatory

This SPI has no mandatory configuration parameters.

Optional

This SPI has following optional configuration parameters:

Java Example

GridSharedFsCheckpointSpi can be configured as follows:
 GridSharedFsCheckpointSpi checkpointSpi = new GridSharedFsCheckpointSpi();

 // Override default directory path.
 checkpointSpi.setDirectoryPath("/my/directory/path");

 GridConfigurationAdapter cfg = new GridConfigurationAdapter();

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

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

Spring Example

GridSharedFsCheckpointSpi can be configured from Spring XML configuration file:
 <bean id="grid.custom.cfg" class="org.gridgain.grid.GridConfigurationAdapter" singleton="true">
     ...
     <property name="checkpointSpi">
         <bean class="org.gridgain.grid.spi.checkpoint.sharedfs.GridSharedFsCheckpointSpi">
             <!-- Change to shared directory path in your environment. -->
             <property name="directoryPath" value="/my/directory/path"/>
         </bean>
     </property>
     ...
 </bean>
 


For information about Spring framework visit www.springframework.org



See Also:

  Documentation
  Email Support
  Online Forums
  Issue Tracking

Author:   2005-2008 Copyright © GridGain Systems. All Rights Reserved. ver. 2.1.0

See Also:
GridCheckpointSpi
 

Field Summary
static String DFLT_DIRECTORY_PATH
          Default checkpoint directory (value is work/checkpoint/sharedfs).
 
Constructor Summary
GridSharedFsCheckpointSpi()
           
 
Method Summary
protected  List<String> getConsistentAttributeNames()
          Returns back list of attributes that should be consistent for this SPI.
 String getDirectoryPath()
          Gets path to the directory where all checkpoints are saved.
 Map<String,Serializable> getNodeAttributes()
          This method is called before SPI starts (before method GridSpi.spiStart(String) is called). It allows SPI implementation to add attributes to a local node. Kernel collects these attributes from all SPI implementations loaded up and then passes it to discovery SPI so that they can be exchanged with other nodes.
 byte[] loadCheckpoint(String key)
          Loads checkpoint from storage by its unique key.
 boolean removeCheckpoint(String key)
          This method instructs the checkpoint provider to clean saved data for a given key.
 void saveCheckpoint(String key, byte[] state, long timeout)
          Saves checkpoint to the storage.
 void setDirectoryPath(String dirPath)
          Sets path to a shared directory where checkpoints will be stored.
 void spiStart(String gridName)
          This method is called to start SPI.
 void spiStop()
          This method is called to stop SPI.
 String toString()
          
 
Methods inherited from class org.gridgain.grid.spi.GridSpiAdapter
assertParameter, configInfo, createSpiAttributeName, getAuthor, getGridGainHome, getLocalNodeId, getName, getSpiContext, getStartTimestamp, getStartTimestampFormatted, getUpTime, getUpTimeFormatted, getVendorEmail, getVendorUrl, getVersion, onContextDestroyed, onContextInitialized, registerMBean, setName, setSpiContext, 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.gridgain.grid.spi.GridSpi
getName, onContextDestroyed, onContextInitialized
 
Methods inherited from interface org.gridgain.grid.spi.GridSpiManagementMBean
getAuthor, getGridGainHome, getLocalNodeId, getName, getStartTimestamp, getStartTimestampFormatted, getUpTime, getUpTimeFormatted, getVendorEmail, getVendorUrl, getVersion
 

Field Detail

DFLT_DIRECTORY_PATH

public static final String DFLT_DIRECTORY_PATH
Default checkpoint directory (value is work/checkpoint/sharedfs).

See Also:
Constant Field Values
Constructor Detail

GridSharedFsCheckpointSpi

public GridSharedFsCheckpointSpi()
Method Detail

getDirectoryPath

public String getDirectoryPath()
Gets path to the directory where all checkpoints are saved.

Specified by:
getDirectoryPath in interface GridSharedFsCheckpointSpiMBean
Returns:
Path to the checkpoints directory.

setDirectoryPath

@GridSpiConfiguration(optional=true)
public void setDirectoryPath(String dirPath)
Sets path to a shared directory where checkpoints will be stored. The path can either be absolute or relative to GRIDGAIN_HOME system or environment variable.

If not provided, default value is GridSharedFsCheckpointSpi.DFLT_DIRECTORY_PATH.

Parameters:
dirPath - Absolute or GridGain installation home folder relative path where checkpoints will be stored.

getNodeAttributes

public Map<String,Serializable> getNodeAttributes()
                                           throws GridSpiException
This method is called before SPI starts (before method GridSpi.spiStart(String) is called). It allows SPI implementation to add attributes to a local node. Kernel collects these attributes from all SPI implementations loaded up and then passes it to discovery SPI so that they can be exchanged with other nodes.

Specified by:
getNodeAttributes in interface GridSpi
Overrides:
getNodeAttributes in class GridSpiAdapter
Throws:
GridSpiException - Throws in case of any error.
Returns:
Map of local node attributes this SPI wants to add.

spiStart

public void spiStart(String gridName)
              throws GridSpiException
This method is called to start SPI. After this method returns successfully kernel assumes that SPI is fully operational.

Specified by:
spiStart in interface GridSpi
Throws:
GridSpiException - Throws in case of any error during SPI start.
Parameters:
gridName - Name of grid instance this SPI is being started for (null for default grid).

spiStop

public void spiStop()
             throws GridSpiException
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 GridSpi
Throws:
GridSpiException - Thrown in case of any error during SPI stop.

loadCheckpoint

public byte[] loadCheckpoint(String key)
                      throws GridSpiException
Loads checkpoint from storage by its unique key.

Specified by:
loadCheckpoint in interface GridCheckpointSpi
Throws:
GridSpiException - 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.
Parameters:
key - Checkpoint key.
Returns:
Loaded data or null if there is no data for a given key.

saveCheckpoint

public void saveCheckpoint(String key,
                           byte[] state,
                           long timeout)
                    throws GridSpiException
Saves checkpoint to the storage. If checkpoint exists it will be overwritten by new one.

Specified by:
saveCheckpoint in interface GridCheckpointSpi
Throws:
GridSpiException - Thrown in case of any error while saving checkpoint data.
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.

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 GridCheckpointSpi
Parameters:
key - Key for the checkpoint to remove.
Returns:
true if data has been actually removed, false otherwise.

getConsistentAttributeNames

protected List<String> getConsistentAttributeNames()
Returns back list of attributes that should be consistent for this SPI. Consistency means that remote node has to have the same attribute with the same value.

Overrides:
getConsistentAttributeNames in class GridSpiAdapter
Returns:
List or attribute names.

toString

public String toString()

Overrides:
toString in class Object

GridGain™ 2.1.0
Java API Specification

GridGain™ - Grid Computing Made Simple, ver. 2.1.0.19122008
2005-2008 Copyright © GridGain Systems. All Rights Reserved.