GridGain™ 3.6.0e
Enterprise Edition

org.gridgain.grid.spi.checkpoint.jdbc
Class GridJdbcCheckpointSpi

java.lang.Object
  extended by org.gridgain.grid.spi.GridSpiAdapter
      extended by org.gridgain.grid.spi.checkpoint.jdbc.GridJdbcCheckpointSpi
All Implemented Interfaces:
GridCheckpointSpi, GridJdbcCheckpointSpiMBean, GridSpi, GridSpiJsonConfigurable, GridSpiManagementMBean

@GridSpiInfo(author="GridGain Systems",
             url="www.gridgain.com",
             email="support@gridgain.com",
             version="3.6.0e.13012012")
@GridSpiMultipleInstancesSupport(value=true)
public class GridJdbcCheckpointSpi
extends GridSpiAdapter
implements GridCheckpointSpi, GridJdbcCheckpointSpiMBean

This class defines JDBC 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

GridJdbcCheckpointSpi can be configured as follows:
 GridConfigurationAdapter cfg = new GridConfigurationAdapter();

 GridJdbcCheckpointSpi checkpointSpi = new GridJdbcCheckpointSpi();

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

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

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

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

Spring Example

GridJdbcCheckpointSpi 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.jdbc.GridJdbcCheckpointSpi">
             <property name="dataSrc"><ref bean="anyPooledDataSourceBean" /></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

Wiki & Forum:


Wiki
Forum

 

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
GridJdbcCheckpointSpi()
           
 
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 jdbc password.
 String getUser()
          Gets checkpoint jdbc 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.
 void onContextDestroyed()
          Callback invoked prior to stopping grid before SPI context is destroyed.
 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.
 void setCheckpointListener(GridCheckpointListener lsnr)
          Sets the checkpoint listener.
 void setCheckpointTableName(String tblName)
          Sets checkpoint table name.
 void setDataSource(DataSource dataSrc)
          Sets DataSource to use for database access.
 void setExpireDateFieldName(String expDateName)
          Sets checkpoint expiration date field name.
 void setExpireDateFieldType(String expDateType)
          Sets checkpoint expiration date field type.
 void setKeyFieldName(String keyName)
          Sets checkpoint key field name.
 void setKeyFieldType(String keyType)
          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 valName)
          Sets checkpoint value field name.
 void setValueFieldType(String valType)
          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, checkConfigurationConsistency, configInfo, createSpiAttributeName, getAuthor, getConsistentAttributeNames, getGridGainHome, getLocalNodeId, getName, getNodeAttributes, getSpiContext, getStartTimestamp, getStartTimestampFormatted, getUpTime, getUpTimeFormatted, getVendorEmail, getVendorUrl, getVersion, injectables, onContextInitialized, registerMBean, setJson, setName, 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, 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

GridJdbcCheckpointSpi

public GridJdbcCheckpointSpi()
Method Detail

getNumberOfRetries

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

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

getDataSourceInfo

public String getDataSourceInfo()
Gets data source description.

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

getUser

public String getUser()
Gets checkpoint jdbc user name.

Specified by:
getUser in interface GridJdbcCheckpointSpiMBean
Returns:
User name for checkpoint jdbc.

getPassword

public String getPassword()
Gets checkpoint jdbc password.

Specified by:
getPassword in interface GridJdbcCheckpointSpiMBean
Returns:
Password for checkpoint jdbc.

getCheckpointTableName

public String getCheckpointTableName()
Gets checkpoint table name.

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

getKeyFieldName

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

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

getKeyFieldType

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

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

getValueFieldName

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

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

getValueFieldType

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

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

getExpireDateFieldName

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

Specified by:
getExpireDateFieldName in interface GridJdbcCheckpointSpiMBean
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 GridJdbcCheckpointSpiMBean
Returns:
Expiration date field type for checkpoint table.

setDataSource

@GridSpiConfiguration(optional=false)
public void setDataSource(DataSource dataSrc)
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:
dataSrc - 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 GridJdbcCheckpointSpi.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:
GridJdbcCheckpointSpi.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:
GridJdbcCheckpointSpi.setUser(String)

setCheckpointTableName

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

Parameters:
tblName - Checkpoint table name to set.

setKeyFieldName

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

Parameters:
keyName - Checkpoint key field name to set.

setKeyFieldType

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

Parameters:
keyType - Checkpoint key field type to set.

setValueFieldName

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

Parameters:
valName - Checkpoint value field name to set.

setValueFieldType

@GridSpiConfiguration(optional=true)
public void setValueFieldType(String valType)
Sets checkpoint value field type. Note, that the field should have corresponding SQL BLOB type, and the default value of GridJdbcCheckpointSpi.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:
valType - Checkpoint value field type to set.

setExpireDateFieldName

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

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

setExpireDateFieldType

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

Parameters:
expDateType - 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.

onContextDestroyed

public void onContextDestroyed()
Callback invoked prior to stopping grid before SPI context is destroyed. Once this method is complete, grid will begin shutdown sequence. Use this callback for de-initialization logic that may involve SPI context. Note that invoking SPI context after this callback is complete is considered illegal and may produce unknown results.

If GridSpiAdapter is used for SPI implementation, then it will replace actual context with dummy no-op context which is usually good-enough since grid is about to shut down.

Specified by:
onContextDestroyed in interface GridSpi
Overrides:
onContextDestroyed in class GridSpiAdapter

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 boolean saveCheckpoint(String key,
                              byte[] state,
                              long timeout,
                              boolean overwrite)
                       throws GridSpiException
Saves checkpoint to the storage.

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.
overwrite - Whether or not overwrite checkpoint if it already exists.
Returns:
true if checkpoint has been actually saved, false otherwise.

setCheckpointListener

public void setCheckpointListener(GridCheckpointListener lsnr)
Sets the checkpoint listener.

Specified by:
setCheckpointListener in interface GridCheckpointSpi
Parameters:
lsnr - The listener to set or null.

GridGain™ 3.6.0e
Enterprise Edition

GridGain - Real Time Big Data
Enterprise Edition, ver. 3.6.0e.13012012
2012 Copyright © GridGain Systems
Follow us:   Follow GridGain on Github Follow GridGain on Facebook Join GridGain User Group Follow GridGain on Twitter Follow GridGain on YouTube