@IgniteSpiMultipleInstancesSupport(value=true) @IgniteSpiConsistencyChecked(optional=true) public class JobStealingFailoverSpi extends IgniteSpiAdapter implements FailoverSpi, JobStealingFailoverSpiMBean
JobStealingCollisionSpi
SPI. When JobStealingCollisionSpi
receives a steal request and rejects jobs so they can be routed to the
appropriate node, it is the responsibility of this JobStealingFailoverSpi
SPI to make sure that the job is indeed re-routed to the node that has sent the initial
request to steal it.
JobStealingFailoverSpi
knows where to route a job based on the
JobStealingCollisionSpi.THIEF_NODE_ATTR
job context attribute (see ComputeJobContext
).
Prior to rejecting a job, JobStealingCollisionSpi
will populate this
attribute with the ID of the node that wants to steal this job.
Then JobStealingFailoverSpi
will read the value of this attribute and
route the job to the node specified.
If failure is caused by a node crash, and not by steal request, then this
SPI behaves identically to AlwaysFailoverSpi
, and tries to find the
next balanced node to fail-over a job to.
setMaximumFailoverAttempts(int)
).JobStealingFailoverSpi
.
JobStealingFailoverSpi spi = new JobStealingFailoverSpi(); // Override maximum failover attempts. spi.setMaximumFailoverAttempts(5); GridConfiguration cfg = new GridConfiguration(); // Override default failover SPI. cfg.setFailoverSpiSpi(spi); // Starts grid. G.start(cfg);Here is an example of how to configure
JobStealingFailoverSpi
from Spring XML configuration file.
<property name="failoverSpi"> <bean class="org.apache.ignite.spi.failover.jobstealing.JobStealingFailoverSpi"> <property name="maximumFailoverAttempts" value="5"/> </bean> </property>
For information about Spring framework visit www.springframework.org
FailoverSpi
Modifier and Type | Field and Description |
---|---|
static int |
DFLT_MAX_FAILOVER_ATTEMPTS
Maximum number of attempts to execute a failed job on another node (default is
5 ). |
ignite
Constructor and Description |
---|
JobStealingFailoverSpi() |
Modifier and Type | Method and Description |
---|---|
ClusterNode |
failover(FailoverContext ctx,
List<ClusterNode> top)
This method is called when method
ComputeTask.result(org.apache.ignite.compute.ComputeJobResult, List) returns
value ComputeJobResultPolicy.FAILOVER policy indicating that the result of
job execution must be failed over. |
protected List<String> |
getConsistentAttributeNames()
Returns back a list of attributes that should be consistent
for this SPI.
|
int |
getMaximumFailoverAttempts()
Gets maximum number of attempts to execute a failed job on another node.
|
Map<String,Object> |
getNodeAttributes()
This method is called before SPI starts (before method
IgniteSpi.spiStart(String)
is called). |
int |
getTotalFailedOverJobsCount()
Get total number of jobs that were failed over including stolen ones.
|
int |
getTotalStolenJobsCount()
Get total number of jobs that were stolen.
|
void |
setMaximumFailoverAttempts(int maxFailoverAttempts)
Sets maximum number of attempts to execute a failed job on another node.
|
void |
spiStart(String gridName)
This method is called to start SPI.
|
void |
spiStop()
This method is called to stop SPI.
|
String |
toString() |
assertParameter, checkConfigurationConsistency0, configInfo, createSpiAttributeName, getExceptionRegistry, getIgniteHome, getLocalNodeId, getName, getSpiContext, getStartTimestamp, getStartTimestampFormatted, getUpTime, getUpTimeFormatted, injectables, onContextDestroyed, onContextDestroyed0, onContextInitialized, onContextInitialized0, registerMBean, setName, startInfo, startStopwatch, stopInfo, unregisterMBean
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getName, onContextDestroyed, onContextInitialized
getIgniteHome, getLocalNodeId, getName, getStartTimestamp, getStartTimestampFormatted, getUpTime, getUpTimeFormatted
public static final int DFLT_MAX_FAILOVER_ATTEMPTS
5
).public int getMaximumFailoverAttempts()
DFLT_MAX_FAILOVER_ATTEMPTS
value will be used.getMaximumFailoverAttempts
in interface JobStealingFailoverSpiMBean
@IgniteSpiConfiguration(optional=true) public void setMaximumFailoverAttempts(int maxFailoverAttempts)
DFLT_MAX_FAILOVER_ATTEMPTS
value will be used.
Note this value must be identical for all grid nodes in the grid.
maxFailoverAttempts
- Maximum number of attempts to execute a failed
job on another node.public int getTotalFailedOverJobsCount()
getTotalFailedOverJobsCount
in interface JobStealingFailoverSpiMBean
public int getTotalStolenJobsCount()
getTotalStolenJobsCount
in interface JobStealingFailoverSpiMBean
public Map<String,Object> getNodeAttributes() throws IgniteSpiException
IgniteSpi.spiStart(String)
is called). It allows SPI implementation to add attributes to a local
node. Kernal 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.getNodeAttributes
in interface IgniteSpi
getNodeAttributes
in class IgniteSpiAdapter
IgniteSpiException
- Throws in case of any error.public void spiStart(String gridName) throws IgniteSpiException
spiStart
in interface IgniteSpi
gridName
- Name of grid instance this SPI is being started for
(null
for default grid).IgniteSpiException
- Throws in case of any error during SPI start.public void spiStop() throws IgniteSpiException
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.
spiStop
in interface IgniteSpi
IgniteSpiException
- Thrown in case of any error during SPI stop.public ClusterNode failover(FailoverContext ctx, List<ClusterNode> top)
ComputeTask.result(org.apache.ignite.compute.ComputeJobResult, List)
returns
value ComputeJobResultPolicy.FAILOVER
policy indicating that the result of
job execution must be failed over. Implementation of this method should examine failover
context and choose one of the grid nodes from supplied topology
to retry job execution
on it. For best performance it is advised that FailoverContext.getBalancedNode(List)
method is used to select node for execution of failed job.failover
in interface FailoverSpi
ctx
- Failover context.top
- Collection of all grid nodes within task topology (may include failed node).null
if new node cannot be picked.
If job failover fails (returns null
) the whole task will be failed.protected List<String> getConsistentAttributeNames()
getConsistentAttributeNames
in class IgniteSpiAdapter
Follow @ApacheIgnite
Apache Ignite Fabric : ver. 1.0.0 Release Date : March 31 2015