GridGain™ 2.1.0
Java API Specification

org.gridgain.grid.spi.checkpoint.database
Class GridDatabaseCheckpointSpi

java.lang.Object
  extended by org.gridgain.grid.spi.GridSpiAdapter
      extended by org.gridgain.grid.spi.checkpoint.database.GridDatabaseCheckpointSpi
All Implemented Interfaces:
GridDatabaseCheckpointSpiMBean, GridCheckpointSpi, GridSpi, GridSpiManagementMBean

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

This class defines database checkpoint SPI implementation. All checkpoints are stored in the database table and available from all nodes in the grid. Note that every node must have access to the database. The reason of having it 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).

Configuration

Mandatory

This SPI has following mandatory configuration parameters.

Optional

This SPI has following optional configuration parameters:

Apache DBCP

Apache DBCP project provides various wrappers for data sources and connection pools. You can use these wrappers as Spring beans to configure this SPI from Spring configuration file. Refer to Apache DBCP project for more information.

Java Example

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

 javax.sql.DataSource ds = ... // Set datasource.

 // Set database checkpoint SPI parameters.
 checkpointSpi.setDataSource(ds);
 checkpointSpi.setUser("test");
 checkpointSpi.setPassword("test");

 GridConfigurationAdapter cfg = new GridConfigurationAdapter();

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

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

Spring Example

GridDatabaseCheckpointSpi 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.database.GridDatabaseCheckpointSpi">
             <property name="dataSource"><ref bean="anyPoolledDataSourceBean" /></property>
             <property name="checkpointTableName" value="GRID_CHECKPOINTS" />
             <property name="user" value="test" />
             <property name="password" value="test" />
         </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

 

Field Summary
static String DFLT_CHECKPOINT_TABLE_NAME
          Default checkpoint table name (value is CHECKPOINTS).
static String DFLT_EXPIRE_DATE_FIELD_NAME
          Default expiration date field name (value is EXPIRE_DATE).
static String DFLT_EXPIRE_DATE_FIELD_TYPE
          Default expiration date field type (value is DATETIME).
static String DFLT_KEY_FIELD_NAME
          Default checkpoint key field name (value is NAME).
static String DFLT_KEY_FIELD_TYPE
          Default checkpoint key field type (value is VARCHAR(256)).
static int DFLT_NUMBER_OF_RETRIES
          Default number of retries in case of errors (value is 2).
static String DFLT_VALUE_FIELD_NAME
          Default checkpoint value field name (value is VALUE).
static String DFLT_VALUE_FIELD_TYPE
          Default checkpoint value field type (value is BLOB).
 
Constructor Summary
GridDatabaseCheckpointSpi()
           
 
Method Summary
 String getCheckpointTableName()
          Gets checkpoint table name.
 String getDataSourceInfo()
          Gets data source description.
 String getExpireDateFieldName()
          Gets expiration date field name for checkpoint table.
 String getExpireDateFieldType()
          Gets expiration date field type for checkpoint table.
 String getKeyFieldName()
          Gets key field name for checkpoint table.
 String getKeyFieldType()
          Gets key field type for checkpoint table.
 int getNumberOfRetries()
          Gets number of retries in case of DB failure.
 String getPassword()
          Gets checkpoint database password.
 String getUser()
          Gets checkpoint database user name.
 String getValueFieldName()
          Gets value field name for checkpoint table.
 String getValueFieldType()
          Gets value field type for checkpoint table.
 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 setCheckpointTableName(String cpTableName)
          Sets checkpoint table name.
 void setDataSource(DataSource dataSource)
          Sets DataSource to use for database access.
 void setExpireDateFieldName(String expireDateFieldName)
          Sets checkpoint expiration date field name.
 void setExpireDateFieldType(String expireDateFieldType)
          Sets checkpoint expiration date field type.
 void setKeyFieldName(String keyFieldName)
          Sets checkpoint key field name.
 void setKeyFieldType(String keyFieldType)
          Sets checkpoint key field type.
 void setNumberOfRetries(int retryNum)
          Sets number of retries in case of any database errors.
 void setPassword(String password)
          Sets checkpoint database password.
 void setUser(String user)
          Sets checkpoint database user name.
 void setValueFieldName(String valFieldName)
          Sets checkpoint value field name.
 void setValueFieldType(String valFieldType)
          Sets checkpoint value field type.
 void spiStart(String gridName)
          This method is called to start SPI.
 void spiStop()
          This method is called to stop SPI.
 
Methods inherited from class org.gridgain.grid.spi.GridSpiAdapter
assertParameter, configInfo, createSpiAttributeName, getAuthor, getConsistentAttributeNames, getGridGainHome, getLocalNodeId, getName, getNodeAttributes, 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, toString, wait, wait, wait
 
Methods inherited from interface org.gridgain.grid.spi.GridSpi
getName, getNodeAttributes, 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_NUMBER_OF_RETRIES

public static final int DFLT_NUMBER_OF_RETRIES
Default number of retries in case of errors (value is 2).

See Also:
Constant Field Values

DFLT_EXPIRE_DATE_FIELD_TYPE

public static final String DFLT_EXPIRE_DATE_FIELD_TYPE
Default expiration date field type (value is DATETIME).

See Also:
Constant Field Values

DFLT_EXPIRE_DATE_FIELD_NAME

public static final String DFLT_EXPIRE_DATE_FIELD_NAME
Default expiration date field name (value is EXPIRE_DATE).

See Also:
Constant Field Values

DFLT_VALUE_FIELD_TYPE

public static final String DFLT_VALUE_FIELD_TYPE
Default checkpoint value field type (value is BLOB).

See Also:
Constant Field Values

DFLT_VALUE_FIELD_NAME

public static final String DFLT_VALUE_FIELD_NAME
Default checkpoint value field name (value is VALUE).

See Also:
Constant Field Values

DFLT_KEY_FIELD_TYPE

public static final String DFLT_KEY_FIELD_TYPE
Default checkpoint key field type (value is VARCHAR(256)).

See Also:
Constant Field Values

DFLT_KEY_FIELD_NAME

public static final String DFLT_KEY_FIELD_NAME
Default checkpoint key field name (value is NAME).

See Also:
Constant Field Values

DFLT_CHECKPOINT_TABLE_NAME

public static final String DFLT_CHECKPOINT_TABLE_NAME
Default checkpoint table name (value is CHECKPOINTS).

See Also:
Constant Field Values
Constructor Detail

GridDatabaseCheckpointSpi

public GridDatabaseCheckpointSpi()
Method Detail

getNumberOfRetries

public int getNumberOfRetries()
Gets number of retries in case of DB failure.

Specified by:
getNumberOfRetries in interface GridDatabaseCheckpointSpiMBean
Returns:
Number of retries.

getDataSourceInfo

public String getDataSourceInfo()
Gets data source description.

Specified by:
getDataSourceInfo in interface GridDatabaseCheckpointSpiMBean
Returns:
Description for data source.

getUser

public String getUser()
Gets checkpoint database user name.

Specified by:
getUser in interface GridDatabaseCheckpointSpiMBean
Returns:
User name for checkpoint database.

getPassword

public String getPassword()
Gets checkpoint database password.

Specified by:
getPassword in interface GridDatabaseCheckpointSpiMBean
Returns:
Password for checkpoint database.

getCheckpointTableName

public String getCheckpointTableName()
Gets checkpoint table name.

Specified by:
getCheckpointTableName in interface GridDatabaseCheckpointSpiMBean
Returns:
Checkpoint table name.

getKeyFieldName

public String getKeyFieldName()
Gets key field name for checkpoint table.

Specified by:
getKeyFieldName in interface GridDatabaseCheckpointSpiMBean
Returns:
Key field name for checkpoint table.

getKeyFieldType

public String getKeyFieldType()
Gets key field type for checkpoint table.

Specified by:
getKeyFieldType in interface GridDatabaseCheckpointSpiMBean
Returns:
Key field type for checkpoint table.

getValueFieldName

public String getValueFieldName()
Gets value field name for checkpoint table.

Specified by:
getValueFieldName in interface GridDatabaseCheckpointSpiMBean
Returns:
Value field name for checkpoint table.

getValueFieldType

public String getValueFieldType()
Gets value field type for checkpoint table.

Specified by:
getValueFieldType in interface GridDatabaseCheckpointSpiMBean
Returns:
Value field type for checkpoint table.

getExpireDateFieldName

public String getExpireDateFieldName()
Gets expiration date field name for checkpoint table.

Specified by:
getExpireDateFieldName in interface GridDatabaseCheckpointSpiMBean
Returns:
Create date field name for checkpoint table.

getExpireDateFieldType

public String getExpireDateFieldType()
Gets expiration date field type for checkpoint table.

Specified by:
getExpireDateFieldType in interface GridDatabaseCheckpointSpiMBean
Returns:
Expiration date field type for checkpoint table.

setDataSource

@GridSpiConfiguration(optional=false)
public void setDataSource(DataSource dataSource)
Sets DataSource to use for database access. This parameter is mandatory and must be provided for this SPI to be able to start.

Apache DBCP project provides various wrappers for data sources and connection pools. You can use these wrappers as Spring beans to configure this SPI from Spring configuration file. Refer to Apache DBCP project for more information.

Parameters:
dataSource - DataSource object to set.

setNumberOfRetries

@GridSpiConfiguration(optional=true)
public void setNumberOfRetries(int retryNum)
Sets number of retries in case of any database errors. By default the value is GridDatabaseCheckpointSpi.DFLT_NUMBER_OF_RETRIES.

Parameters:
retryNum - Number of retries in case of any database errors.

setUser

@GridSpiConfiguration(optional=true)
public void setUser(String user)
Sets checkpoint database user name. Note that authentication will be performed only if both, user and password are set.

Parameters:
user - Checkpoint database user name to set.
See Also:
GridDatabaseCheckpointSpi.setPassword(String)

setPassword

@GridSpiConfiguration(optional=true)
public void setPassword(String password)
Sets checkpoint database password. Note that authentication will be performed only if both, user and password are set.

Parameters:
password - Checkpoint database password to set.
See Also:
GridDatabaseCheckpointSpi.setUser(String)

setCheckpointTableName

@GridSpiConfiguration(optional=true)
public void setCheckpointTableName(String cpTableName)
Sets checkpoint table name. By default GridDatabaseCheckpointSpi.DFLT_CHECKPOINT_TABLE_NAME is used.

Parameters:
cpTableName - Checkpoint table name to set.

setKeyFieldName

@GridSpiConfiguration(optional=true)
public void setKeyFieldName(String keyFieldName)
Sets checkpoint key field name. By default, GridDatabaseCheckpointSpi.DFLT_KEY_FIELD_NAME is used. Note that you may also want to change key field type (see GridDatabaseCheckpointSpi.setKeyFieldType(String)).

Parameters:
keyFieldName - Checkpoint key field name to set.

setKeyFieldType

@GridSpiConfiguration(optional=true)
public void setKeyFieldType(String keyFieldType)
Sets checkpoint key field type. The field should have corresponding SQL string type (VARCHAR, for example). By default GridDatabaseCheckpointSpi.DFLT_EXPIRE_DATE_FIELD_TYPE is used.

Parameters:
keyFieldType - Checkpoint key field type to set.

setValueFieldName

@GridSpiConfiguration(optional=true)
public void setValueFieldName(String valFieldName)
Sets checkpoint value field name. By default GridDatabaseCheckpointSpi.DFLT_VALUE_FIELD_NAME is used. Note that you may also want to change the value type (see GridDatabaseCheckpointSpi.setValueFieldType(String)).

Parameters:
valFieldName - Checkpoint value field name to set.

setValueFieldType

@GridSpiConfiguration(optional=true)
public void setValueFieldType(String valFieldType)
Sets checkpoint value field type. Note, that the field should have corresponding SQL BLOB type, and the default value of GridDatabaseCheckpointSpi.DFLT_VALUE_FIELD_TYPE, which is BLOB, won't work for all databases. For example, if using HSQL DB, then the type should be longvarbinary.

Parameters:
valFieldType - Checkpoint value field type to set.

setExpireDateFieldName

@GridSpiConfiguration(optional=true)
public void setExpireDateFieldName(String expireDateFieldName)
Sets checkpoint expiration date field name. By default GridDatabaseCheckpointSpi.DFLT_EXPIRE_DATE_FIELD_NAME is used. Note that you may also want to change the expiration date field type (see GridDatabaseCheckpointSpi.setExpireDateFieldType(String)).

Parameters:
expireDateFieldName - Checkpoint expiration date field name to set.

setExpireDateFieldType

@GridSpiConfiguration(optional=true)
public void setExpireDateFieldType(String expireDateFieldType)
Sets checkpoint expiration date field type. By default GridDatabaseCheckpointSpi.DFLT_EXPIRE_DATE_FIELD_TYPE is used. The field should have corresponding SQL DATETIME type.

Parameters:
expireDateFieldType - Checkpoint expiration date field type to set.

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.

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.

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.

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.