| //- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| include /app/helpers/jade/mixins |
| include /app/configuration/mixins |
| |
| -var model = '$ctrl.clonedCluster' |
| -var form = 'failoverSpi' |
| -var failoverSpi = model + '.failoverSpi' |
| -var failoverCustom = '$item.kind === "Custom"' |
| |
| panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) |
| panel-title Failover configuration |
| panel-description |
| | Failover SPI provides ability to supply custom logic for handling failed execution of a grid job. |
| | #[a.link-success(href="https://apacheignite.readme.io/docs/fault-tolerance" target="_blank") More info] |
| panel-content.pca-form-row(ng-if=`ui.isPanelLoaded('${form}')`) |
| .pca-form-column-6.pc-form-grid-row |
| //- Since ignite 2.0 |
| .pc-form-grid-col-60(ng-if-start='$ctrl.available("2.0.0")') |
| +form-field__number({ |
| label: 'Failure detection timeout:', |
| model: model + '.failureDetectionTimeout', |
| name: '"failureDetectionTimeout"', |
| placeholder: '10000', |
| min: '1', |
| tip: 'Failure detection timeout is used to determine how long the communication or discovery SPIs should wait before considering a remote connection failed' |
| }) |
| .pc-form-grid-col-60(ng-if-end) |
| +form-field__number({ |
| label: 'Client failure detection timeout:', |
| model: model + '.clientFailureDetectionTimeout', |
| name: '"clientFailureDetectionTimeout"', |
| placeholder: '30000', |
| min: '1', |
| tip: 'Failure detection timeout is used to determine how long the communication or discovery SPIs should wait before considering a remote connection failed' |
| }) |
| .pc-form-grid-col-60(ng-if='$ctrl.available("2.7.0")') |
| +form-field__number({ |
| label: 'System workers blocked timeout:', |
| model: model + '.systemWorkerBlockedTimeout', |
| name: '"SystemWorkerBlockedTimeout"', |
| placeholder: 'Failure detection timeout', |
| min: '1', |
| tip: 'Maximum inactivity period for system worker' |
| }) |
| |
| .pc-form-grid-col-60 |
| mixin clusters-failover-spi |
| .ignite-form-field |
| +form-field__label({ label: 'Failover SPI configurations:', name: '"failoverSpi"' }) |
| +form-field__tooltip({ title: `Failover SPI configurations` }) |
| -let items = failoverSpi |
| |
| list-editable.pc-list-editable-with-form-grid(ng-model=items name='failoverSpi') |
| list-editable-item-edit.pc-form-grid-row |
| .pc-form-grid-col-60 |
| +form-field__dropdown({ |
| required: true, |
| label: 'Failover SPI:', |
| model: '$item.kind', |
| name: '"failoverKind"', |
| placeholder: 'Choose Failover SPI', |
| options: '::$ctrl.Clusters.failoverSpis', |
| tip: ` |
| Provides ability to supply custom logic for handling failed execution of a grid job |
| <ul> |
| <li>Job stealing - Supports job stealing from over-utilized nodes to under-utilized nodes</li> |
| <li>Never - Jobs are ordered as they arrived</li> |
| <li>Always - Jobs are first ordered by their priority</li> |
| <li>Custom - Jobs are activated immediately on arrival to mapped node</li> |
| <li>Default - Default FailoverSpi implementation</li> |
| </ul>` |
| }) |
| |
| .pc-form-grid-col-60(ng-show='$item.kind === "JobStealing"') |
| +form-field__number({ |
| label: 'Maximum failover attempts:', |
| model: '$item.JobStealing.maximumFailoverAttempts', |
| name: '"jsMaximumFailoverAttempts"', |
| placeholder: '5', |
| min: '0', |
| tip: 'Maximum number of attempts to execute a failed job on another node' |
| }) |
| .pc-form-grid-col-60(ng-show='$item.kind === "Always"') |
| +form-field__number({ |
| label: 'Maximum failover attempts:', |
| model: '$item.Always.maximumFailoverAttempts', |
| name: '"alwaysMaximumFailoverAttempts"', |
| placeholder: '5', |
| min: '0', |
| tip: 'Maximum number of attempts to execute a failed job on another node' |
| }) |
| .pc-form-grid-col-60(ng-show=failoverCustom) |
| +form-field__java-class({ |
| label: 'SPI implementation', |
| model: '$item.Custom.class', |
| name: '"failoverSpiClass"', |
| required: failoverCustom, |
| tip: 'Custom FailoverSpi implementation class name.', |
| validationActive: failoverCustom |
| }) |
| |
| list-editable-no-items |
| list-editable-add-item-button( |
| add-item=`(${items} = ${items} || []).push({})` |
| label-single='failover SPI' |
| label-multiple='failover SPIs' |
| ) |
| |
| +clusters-failover-spi |
| |
| .pca-form-column-6 |
| +preview-xml-java(model, 'clusterFailover') |