in modules/frontend/app/configuration/generator/generator/ConfigurationGenerator.js [1254:1367]
static clusterFailover(cluster, available, cfg = this.igniteConfigurationBean(cluster)) {
const spis = [];
// Since ignite 2.0
if (available('2.0.0')) {
cfg.longProperty('failureDetectionTimeout')
.longProperty('clientFailureDetectionTimeout');
if (available('2.7.0'))
cfg.longProperty('systemWorkerBlockedTimeout');
}
_.forEach(cluster.failoverSpi, (spi) => {
let failoverSpi;
switch (_.get(spi, 'kind')) {
case 'JobStealing':
failoverSpi = new Bean('org.apache.ignite.spi.failover.jobstealing.JobStealingFailoverSpi',
'failoverSpi', spi.JobStealing, clusterDflts.failoverSpi.JobStealing);
failoverSpi.intProperty('maximumFailoverAttempts');
break;
case 'Never':
failoverSpi = new Bean('org.apache.ignite.spi.failover.never.NeverFailoverSpi',
'failoverSpi', spi.Never);
break;
case 'Always':
failoverSpi = new Bean('org.apache.ignite.spi.failover.always.AlwaysFailoverSpi',
'failoverSpi', spi.Always, clusterDflts.failoverSpi.Always);
failoverSpi.intProperty('maximumFailoverAttempts');
break;
case 'Custom':
const className = _.get(spi, 'Custom.class');
if (className)
failoverSpi = new EmptyBean(className);
break;
default:
// No-op.
}
if (failoverSpi)
spis.push(failoverSpi);
});
if (spis.length)
cfg.arrayProperty('failoverSpi', 'failoverSpi', spis, 'org.apache.ignite.spi.failover.FailoverSpi');
if (available('2.5.0')) {
const handler = cluster.failureHandler;
const kind = _.get(handler, 'kind');
let bean;
switch (kind) {
case 'RestartProcess':
bean = new Bean('org.apache.ignite.failure.RestartProcessFailureHandler', 'failureHandler', handler);
break;
case 'StopNodeOnHalt':
const failover = handler.StopNodeOnHalt;
bean = new Bean('org.apache.ignite.failure.StopNodeOrHaltFailureHandler', 'failureHandler', handler.StopNodeOnHalt);
if (failover || failover.tryStop || failover.timeout) {
failover.tryStop = failover.tryStop || false;
failover.timeout = failover.timeout || 0;
bean.boolConstructorArgument('tryStop')
.longConstructorArgument('timeout');
}
break;
case 'StopNode':
bean = new Bean('org.apache.ignite.failure.StopNodeFailureHandler', 'failureHandler', handler);
break;
case 'Noop':
bean = new Bean('org.apache.ignite.failure.NoOpFailureHandler', 'failureHandler', handler);
break;
case 'Custom':
const clsName = _.get(handler, 'Custom.className');
if (clsName)
bean = new Bean(clsName, 'failureHandler', handler);
break;
default:
// No-op.
}
if (bean) {
if (['RestartProcess', 'StopNodeOnHalt', 'StopNode'].indexOf(kind) >= 0) {
bean.collectionProperty('ignoredFailureTypes', 'ignoredFailureTypes', handler.ignoredFailureTypes,
'org.apache.ignite.failure.FailureType', 'java.util.HashSet');
}
cfg.beanProperty('failureHandler', bean);
}
}
return cfg;
}