static clusterFailover()

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;
    }