ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sboi...@apache.org
Subject [29/50] [abbrv] ignite git commit: IGNITE-5388 Added support to configuration of Ignite 2.x and Ignite 1.x.
Date Tue, 06 Jun 2017 08:59:47 GMT
http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug b/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
index 4ea9160..8264731 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/caches/memory.pug
@@ -23,23 +23,108 @@ include /app/helpers/jade/mixins
     .panel-heading(bs-collapse-toggle='' ng-click=`ui.loadPanel('${form}')`)
         ignite-form-panel-chevron
         label Memory
-        ignite-form-field-tooltip.tipLabel
+        ignite-form-field-tooltip.tipLabel(ng-show='$ctrl.available(["1.0.0", "2.0.0"])')
             | Cache memory settings#[br]
-            | #[a(href="https://apacheignite.readme.io/docs/off-heap-memory" target="_blank") More info]
+            | #[a(href="https://apacheignite.readme.io/v1.9/off-heap-memory" target="_blank") More info]
+        ignite-form-field-tooltip.tipLabel(ng-show='$ctrl.available("2.0.0")')
+            | Cache memory settings#[br]
+            | #[a(href="https://apacheignite.readme.io/docs/evictions" target="_blank") More info]
         ignite-form-revert
     .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
+                //- Since ignite 2.0
+                div(ng-if='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +checkbox('Onheap cache enabled', model + '.onheapCacheEnabled', '"OnheapCacheEnabled"', 'Checks if the on-heap cache is enabled for the off-heap based page memory')
+                    .settings-row
+                        +text('Memory policy name:', model + '.memoryPolicyName', '"MemoryPolicyName"', 'false', 'default',
+                            'Name of memory policy configuration for this cache')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +dropdown('Mode:', `${model}.memoryMode`, '"memoryMode"', 'true', 'ONHEAP_TIERED',
+                            '[\
+                                {value: "ONHEAP_TIERED", label: "ONHEAP_TIERED"},\
+                                {value: "OFFHEAP_TIERED", label: "OFFHEAP_TIERED"},\
+                                {value: "OFFHEAP_VALUES", label: "OFFHEAP_VALUES"}\
+                            ]',
+                            'Memory modes control whether value is stored in on-heap memory, off-heap memory, or swap space\
+                            <ul>\
+                                <li>\
+                                    ONHEAP_TIERED - entries are cached on heap memory first<br/>\
+                                    <ul>\
+                                        <li>\
+                                            If offheap memory is enabled and eviction policy evicts an entry from heap memory, entry will be moved to offheap memory<br/>\
+                                            If offheap memory is disabled, then entry is simply discarded\
+                                        </li>\
+                                        <li>\
+                                            If swap space is enabled and offheap memory fills up, then entry will be evicted into swap space<br/>\
+                                            If swap space is disabled, then entry will be discarded. If swap is enabled and offheap memory is disabled, then entry will be evicted directly from heap memory into swap\
+                                        </li>\
+                                    </ul>\
+                                </li>\
+                                <li>\
+                                    OFFHEAP_TIERED - works the same as ONHEAP_TIERED, except that entries never end up in heap memory and get stored in offheap memory right away<br/>\
+                                    Entries get cached in offheap memory first and then get evicted to swap, if one is configured\
+                                </li>\
+                                <li>\
+                                    OFFHEAP_VALUES - entry keys will be stored on heap memory, and values will be stored in offheap memory<br/>\
+                                    Note that in this mode entries can be evicted only to swap\
+                                </li>\
+                            </ul>')
+                    .settings-row(ng-show=`${model}.memoryMode !== 'OFFHEAP_VALUES'`)
+                        +dropdown-required('Off-heap memory:', `${model}.offHeapMode`, '"offHeapMode"', 'true', `${model}.memoryMode === 'OFFHEAP_TIERED'`,
+                            'Disabled',
+                            '[\
+                                {value: -1, label: "Disabled"},\
+                                {value: 1, label: "Limited"},\
+                                {value: 0, label: "Unlimited"}\
+                            ]',
+                            'Off-heap storage mode\
+                            <ul>\
+                                <li>Disabled - Off-heap storage is disabled</li>\
+                                <li>Limited - Off-heap storage has limited size</li>\
+                                <li>Unlimited - Off-heap storage grow infinitely (it is up to user to properly add and remove entries from cache to ensure that off-heap storage does not grow infinitely)</li>\
+                            </ul>')
+                    .settings-row(ng-if=`${model}.offHeapMode === 1 && ${model}.memoryMode !== 'OFFHEAP_VALUES'`)
+                        +number-required('Off-heap memory max size:', `${model}.offHeapMaxMemory`, '"offHeapMaxMemory"', 'true',
+                            `${model}.offHeapMode === 1`, 'Enter off-heap memory size', '1',
+                            'Maximum amount of memory available to off-heap storage in bytes')
+
                 .settings-row
-                    +checkbox('On-heap cache enabled', `${model}.onheapCacheEnabled`, '"onheapCacheEnabled"', 'On-heap cache enabled flag')
-                .settings-row(ng-show=`${model}.onheapCacheEnabled`)
-                    +evictionPolicy(`${model}.evictionPolicy`, '"evictionPolicy"', 'true', 'false',
-                        'Cache eviction policy<br/>\
-                        Must be set for entries to be evicted to off-heap\
+                    -var onHeapTired = model + '.memoryMode === "ONHEAP_TIERED"'
+                    -var swapEnabled = model + '.swapEnabled'
+                    -var offHeapMaxMemory = model + '.offHeapMaxMemory'
+
+                    +evictionPolicy(`${model}.evictionPolicy`, '"evictionPolicy"', 'true',
+                        onHeapTired  + ' && (' + swapEnabled + '|| _.isNumber(' + offHeapMaxMemory + ') &&' + offHeapMaxMemory + ' >= 0)',
+                        'Optional cache eviction policy<br/>\
+                        Must be set for entries to be evicted from on-heap to off-heap or swap\
                         <ul>\
                             <li>Least Recently Used(LRU) - Eviction policy based on LRU algorithm and supports batch eviction</li>\
                             <li>First In First Out (FIFO) - Eviction policy based on FIFO algorithm and supports batch eviction</li>\
                             <li>SORTED - Eviction policy which will select the minimum cache entry for eviction</li>\
                         </ul>')
+
+                //- Since ignite 2.0
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +java-class('Eviction filter:', model + '.evictionFilter', '"EvictionFilter"', 'true', 'false', 'Eviction filter to specify which entries should not be evicted')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Start size:', `${model}.startSize`, '"startSize"', 'true', '1500000', '0',
+                            'In terms of size and capacity, Ignite internal cache map acts exactly like a normal Java HashMap: it has some initial capacity\
+                            (which is pretty small by default), which doubles as data arrives. The process of internal cache map resizing is CPU-intensive\
+                            and time-consuming, and if you load a huge dataset into cache (which is a normal use case), the map will have to resize a lot of times.\
+                            To avoid that, you can specify the initial cache map capacity, comparable to the expected size of your dataset.\
+                            This will save a lot of CPU resources during the load time, because the map would not have to resize.\
+                            For example, if you expect to load 10 million entries into cache, you can set this property to 10 000 000.\
+                            This will save you from cache internal map resizes.')
+                    .settings-row
+                        +checkbox('Swap enabled', `${model}.swapEnabled`, '"swapEnabled"', 'Flag indicating whether swap storage is enabled or not for this cache')
+
             .col-sm-6
                 +preview-xml-java(model, 'cacheMemory')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug b/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
index 6715dcd..1b34b60 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/caches/node-filter.pug
@@ -18,6 +18,10 @@ include /app/helpers/jade/mixins
 
 -var form = 'nodeFilter'
 -var model = 'backupItem'
+-var nodeFilter = model + '.nodeFilter';
+-var nodeFilterKind = nodeFilter + '.kind';
+-var igfsFilter = nodeFilterKind + ' === "IGFS"'
+-var customFilter = nodeFilterKind + ' === "Custom"'
 
 .panel.panel-default(ng-form=form novalidate)
     .panel-heading(bs-collapse-toggle='' ng-click=`ui.loadPanel('${form}')`)
@@ -30,9 +34,6 @@ include /app/helpers/jade/mixins
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
                 .settings-row
-                    -var nodeFilter = model + '.nodeFilter';
-                    -var nodeFilterKind = nodeFilter + '.kind';
-
                     +dropdown('Node filter:', nodeFilterKind, '"nodeFilter"', 'true', 'Not set',
                         '[\
                             {value: "IGFS", label: "IGFS nodes"},\
@@ -41,19 +42,11 @@ include /app/helpers/jade/mixins
                         ]',
                         'Node filter variant'
                     )
-                .settings-row(ng-show=nodeFilterKind)
-                    div(ng-show=`${nodeFilterKind} === 'IGFS'`)
-                        -var igfsNodeFilter = `${nodeFilter}.IGFS`
-                        -var required = `${nodeFilterKind} === 'IGFS'`
-
-                        //(lbl, model, name, enabled, required, placeholder, options, tip)
-                        +dropdown-required-empty('IGFS:', `${igfsNodeFilter}.igfs`, '"igfsNodeFilter"', 'true', required,
-                            'Choose IGFS', 'No IGFS configured', 'igfss', 'Select IGFS to filter nodes')
-                    div(ng-show=`${nodeFilterKind} === 'Custom'`)
-                        -var customNodeFilter = `${nodeFilter}.Custom`
-                        -var required = `${nodeFilterKind} === 'Custom'`
-
-                        +java-class('Class name:', `${customNodeFilter}.className`, '"customNodeFilter"',
-                            'true', required, 'Class name of custom node filter implementation', required)
+                .settings-row(ng-show=igfsFilter)
+                    +dropdown-required-empty('IGFS:', `${nodeFilter}.IGFS.igfs`, '"igfsNodeFilter"', 'true', igfsFilter,
+                        'Choose IGFS', 'No IGFS configured', 'igfss', 'Select IGFS to filter nodes')
+                .settings-row(ng-show=customFilter)
+                    +java-class('Class name:', `${nodeFilter}.Custom.className`, '"customNodeFilter"',
+                        'true', customFilter, 'Class name of custom node filter implementation', customFilter)
             .col-sm-6
                 +preview-xml-java(model, 'cacheNodeFilter', 'igfss')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug b/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
index b3650e2..480b0a5 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/caches/query.pug
@@ -46,6 +46,12 @@ include /app/helpers/jade/mixins
                                 SELECT * FROM Persons.Person p INNER JOIN Organizations.Organization o on p.org = o.id\
                             </li>\
                         </ul>')
+
+                //- Removed in ignite 2.0
+                .settings-row(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    +number('On-heap cache for off-heap indexes:', `${model}.sqlOnheapRowCacheSize`, '"sqlOnheapRowCacheSize"', 'true', '10240', '1',
+                        'Number of SQL rows which will be cached onheap to avoid deserialization on each SQL index access')
+
                 .settings-row
                     +number('Long query timeout:', `${model}.longQueryWarningTimeout`, '"longQueryWarningTimeout"', 'true', '3000', '0',
                         'Timeout in milliseconds after which long query warning will be printed')
@@ -53,9 +59,6 @@ include /app/helpers/jade/mixins
                     +number('History size:', `${model}.queryDetailMetricsSize`, '"queryDetailMetricsSize"', 'true', '0', '0',
                         'Size of queries detail metrics that will be stored in memory for monitoring purposes')
                 .settings-row
-                    +number('Parallelism:', `${model}.queryParallelism`, '"queryParallelism"', 'true', '1', '1',
-                        'Defines a hint to query execution engine on desired degree of parallelism within a single node.')
-                .settings-row
                     -var form = 'querySqlFunctionClasses';
                     -var sqlFunctionClasses = `${model}.sqlFunctionClasses`;
 
@@ -102,10 +105,26 @@ include /app/helpers/jade/mixins
 
                         .group-content-empty(ng-if=`!(${sqlFunctionClasses}.length) && !group.add.length`)
                             | Not defined
+
+                //- Removed in ignite 2.0
+                .settings-row(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    +checkbox('Snapshotable index', `${model}.snapshotableIndex`, '"snapshotableIndex"',
+                        'Flag indicating whether SQL indexes should support snapshots')
+
                 .settings-row
                     +checkbox('Escape table and filed names', `${model}.sqlEscapeAll`, '"sqlEscapeAll"',
                         'If enabled than all schema, table and field names will be escaped with double quotes (for example: "tableName"."fieldName").<br/>\
                         This enforces case sensitivity for field names and also allows having special characters in table and field names.<br/>\
                         Escaped names will be used for creation internal structures in Ignite SQL engine.')
+
+                //- Since ignite 2.0
+                div(ng-if='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +number('Query parallelism', model + '.queryParallelism', '"queryParallelism"', 'true', '1', '1',
+                            'A hint to query execution engine on desired degree of parallelism within a single node')
+                    .settings-row
+                        +number('SQL index max inline size:', model + '.sqlIndexMaxInlineSize', '"sqlIndexMaxInlineSize"', 'true', '-1', '0',
+                            'Maximum inline size for sql indexes')
+
             .col-sm-6
                 +preview-xml-java(model, 'cacheQuery', 'domains')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug b/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
index f09bc0b..3af24df 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/caches/store.pug
@@ -246,5 +246,10 @@ mixin hibernateField(name, model, items, valid, save, newItem)
                             .details-row
                                 +number('Flush threads count:', `${model}.writeBehindFlushThreadCount`, '"writeBehindFlushThreadCount"', enabled, '1', '1',
                                     'Number of threads that will perform cache flushing')
+
+                            //- Since ignite 2.0
+                            .details-row(ng-if='$ctrl.available("2.0.0")')
+                                +checkbox-enabled('Write coalescing', model + '.writeBehindCoalescing', '"WriteBehindCoalescing"', enabled, 'Write coalescing flag for write-behind cache store')
+
             .col-sm-6
                 +preview-xml-java(model, 'cacheStore', 'domains')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
index 2021c1c..25ee62a 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/deployment.pug
@@ -115,6 +115,12 @@ include /app/helpers/jade/mixins
 
                         .group-content-empty(ng-if=`!(${exclude}.length) && !group.add.length`)
                             | Not defined
+
+                //- Since ignite 2.0
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +java-class('Class loader:', model + '.classLoader', '"classLoader"', 'true', 'false',
+                        'Loader which will be used for instantiating execution context')
+
                 .settings-row
                     +dropdown('Deployment variant:', modelDeployment + '.kind', '"deploymentKind"', 'true', 'Default',
                         '[\
@@ -214,7 +220,7 @@ include /app/helpers/jade/mixins
 
                                 div(type='internal' name='Scanner')
                                     label.col-xs-12.col-sm-12.col-md-12
-                                        // (lbl, name, model, items, valid, save, newItem)
+                                        //- (lbl, name, model, items, valid, save, newItem)
                                         +table-java-class-field('Scanner:', name, model, scannerModel, valid, save, true)
                                             +table-save-button(valid, save, true)
                                             +unique-feedback(name, uniqueTip)

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
index 71d9974..5718755 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/discovery.pug
@@ -55,8 +55,18 @@ include /app/helpers/jade/mixins
                         '0 means wait forever')
                 .settings-row
                     +number('Thread priority:', `${model}.threadPriority`, '"threadPriority"', 'true', '10', '1', 'Thread priority for all threads started by SPI')
-                .settings-row
-                    +number('Metrics update frequency:', `${model}.metricsUpdateFrequency`, '"metricsUpdateFrequency"', 'true', '2000', '1', 'Metrics update messages issuing frequency')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Heartbeat frequency:', `${model}.heartbeatFrequency`, '"heartbeatFrequency"', 'true', '2000', '1', 'Heartbeat messages issuing frequency')
+                    .settings-row
+                        +number('Max heartbeats miss w/o init:', `${model}.maxMissedHeartbeats`, '"maxMissedHeartbeats"', 'true', '1', '1',
+                            'Max heartbeats count node can miss without initiating status check')
+                    .settings-row
+                        +number('Max missed client heartbeats:', `${model}.maxMissedClientHeartbeats`, '"maxMissedClientHeartbeats"', 'true', '5', '1',
+                            'Max heartbeats count node can miss without failing client node')
+
                 .settings-row
                     +number('Topology history:', `${model}.topHistorySize`, '"topHistorySize"', 'true', '1000', '0', 'Size of topology snapshots history')
                 .settings-row

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
index 09cd40c..2f5cc31 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/events.pug
@@ -34,25 +34,21 @@ include /app/helpers/jade/mixins
     .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
-                .settings-row
-                    +dropdown-multiple('Include type:', `${model}.includeEventTypes`, '"includeEventTypes"', true, 'Choose recorded event types', '', 'eventGroups',
-                    'Array of event types, which will be recorded by GridEventStorageManager#record(Event)<br/>\
-                    Note, that either the include event types or the exclude event types can be established')
-
-                .settings-row
-                    +dropdown('Event storage:', modelEventStorageKind, '"eventStorageKind"', 'true', 'Disabled',
-                    '[\
-                        {value: "Memory", label: "Memory"},\
-                        {value: "Custom", label: "Custom"},\
-                        {value: undefined, label: "Disabled"}\
-                    ]',
+                .settings-row(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    +dropdown('Event storage:', modelEventStorageKind, '"eventStorageKind"', 'true', 'Disabled', 'eventStorage',
+                    'Regulate how grid store events locally on node\
+                    <ul>\
+                        <li>Memory - All events are kept in the FIFO queue in-memory</li>\
+                        <li>Custom - Custom implementation of event storage SPI</li>\
+                    </ul>')
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +dropdown('Event storage:', modelEventStorageKind, '"eventStorageKind"', 'true', 'Disabled', 'eventStorage',
                     'Regulate how grid store events locally on node\
                     <ul>\
                         <li>Memory - All events are kept in the FIFO queue in-memory</li>\
                         <li>Custom - Custom implementation of event storage SPI</li>\
                         <li>Disabled - Events are not collected</li>\
                     </ul>')
-
                 div(ng-show=eventStorageMemory)
                     .settings-row
                         +number('Events expiration time:', `${modelEventStorage}.Memory.expireAgeMs`, '"EventStorageExpireAgeMs"', 'true', 'Long.MAX_VALUE', '1', 'All events that exceed this value will be removed from the queue when next event comes')
@@ -66,5 +62,9 @@ include /app/helpers/jade/mixins
                 .settings-row(ng-show=eventStorageCustom)
                     +java-class('Class:', `${modelEventStorage}.Custom.className`, '"EventStorageCustom"', 'true', eventStorageCustom, 'Event storage implementation class name', eventStorageCustom)
 
+                .settings-row(ng-show=modelEventStorageKind)
+                    +dropdown-multiple('Include type:', `${model}.includeEventTypes`, '"includeEventTypes"', true, 'Choose recorded event types', '', 'eventGroups',
+                    'Array of event types, which will be recorded by GridEventStorageManager#record(Event)<br/>\
+                    Note, that either the include event types or the exclude event types can be established')
             .col-sm-6
                 +preview-xml-java(model, 'clusterEvents')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
index e0c2357..d61516c 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/failover.pug
@@ -32,6 +32,15 @@ include /app/helpers/jade/mixins
     .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
+                //- Since ignite 2.0
+                div(ng-if='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +number('Failure detection timeout:', model + '.failureDetectionTimeout', '"failureDetectionTimeout"', 'true',
+                            '10000', '1', 'Failure detection timeout is used to determine how long the communication or discovery SPIs should wait before considering a remote connection failed')
+                    .settings-row
+                        +number('Client failure detection timeout:', model + '.clientFailureDetectionTimeout', '"clientFailureDetectionTimeout"', 'true',
+                            '30000', '1', 'Failure detection timeout is used to determine how long the communication or discovery SPIs should wait before considering a remote connection failed')
+
                 .settings-row(ng-init='failoverSpiTbl={type: "failoverSpi", model: "failoverSpi", focusId: "kind", ui: "failover-table"}')
                     +ignite-form-group()
                         ignite-form-field-label

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
index 62cc23d..752eb79 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/general.pug
@@ -32,7 +32,7 @@ include /app/helpers/jade/mixins
         .panel-body
             .col-sm-6
                 .settings-row
-                    +text('Name:', `${model}.name`, '"clusterName"', 'true', 'Input name', 'Grid name allows to indicate to what grid this particular grid instance belongs to')
+                    +text('Name:', `${model}.name`, '"clusterName"', 'true', 'Input name', 'Instance name allows to indicate to what grid this particular grid instance belongs to')
                 .settings-row
                     +caches(model, 'Select caches to start in cluster or add a new cache')
                 .settings-row

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug
new file mode 100644
index 0000000..b45efa4
--- /dev/null
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/hadoop.pug
@@ -0,0 +1,119 @@
+//-
+    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
+
+-var form = 'hadoop'
+-var model = 'backupItem.hadoopConfiguration'
+-var plannerModel = model + '.mapReducePlanner'
+-var weightedModel = plannerModel + '.Weighted'
+-var weightedPlanner = plannerModel + '.kind === "Weighted"'
+-var customPlanner = plannerModel + '.kind === "Custom"'
+-var libs = model + '.nativeLibraryNames'
+
+.panel.panel-default(ng-form=form novalidate)
+    -var uniqueTip = 'Such native library already exists!'
+
+    .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Hadoop configuration
+        ignite-form-field-tooltip.tipLabel
+            | Hadoop Accelerator configuration
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row
+                    +dropdown('Map reduce planner:', plannerModel + '.kind', '"MapReducePlanner"', 'true', 'Default', '[\
+                        {value: "Weighted", label: "Weighted"},\
+                        {value: "Custom", label: "Custom"},\
+                        {value: undefined, label: "Default"}\
+                    ]', 'Implementation of map reduce planner\
+                    <ul>\
+                        <li>Weighted - Planner which assigns mappers and reducers based on their "weights"</li>\
+                        <li>Custom - Custom planner implementation</li>\
+                        <li>Default - Default planner implementation</li>\
+                    </ul>')
+                .settings-row(ng-show=weightedPlanner)
+                    .panel-details
+                        .details-row
+                            +number('Local mapper weight:', weightedModel + '.localMapperWeight', '"LocalMapperWeight"', 'true', 100, '0',
+                                'This weight is added to a node when a mapper is assigned and it is input split data is located on this node')
+                        .details-row
+                            +number('Remote mapper weight:', weightedModel + '.remoteMapperWeight', '"remoteMapperWeight"', 'true', 100, '0',
+                                'This weight is added to a node when a mapper is assigned, but it is input split data is not located on this node')
+                        .details-row
+                            +number('Local reducer weight:', weightedModel + '.localReducerWeight', '"localReducerWeight"', 'true', 100, '0',
+                                'This weight is added to a node when a reducer is assigned and the node have at least one assigned mapper')
+                        .details-row
+                            +number('Remote reducer weight:', weightedModel + '.remoteReducerWeight', '"remoteReducerWeight"', 'true', 100, '0',
+                                'This weight is added to a node when a reducer is assigned, but the node does not have any assigned mappers')
+                        .details-row
+                            +number('Local mapper weight:', weightedModel + '.preferLocalReducerThresholdWeight', '"preferLocalReducerThresholdWeight"', 'true', 200, '0',
+                                "When threshold is reached, a node with mappers is no longer considered as preferred for further reducer assignments")
+                .settings-row(ng-show=customPlanner)
+                    .panel-details
+                        .details-row
+                            +java-class('Class name:', plannerModel + '.Custom.className', '"MapReducePlannerCustomClass"', 'true', customPlanner,
+                                'Custom planner implementation')
+                .settings-row
+                    +number('Finished job info TTL:', model + '.finishedJobInfoTtl', '"finishedJobInfoTtl"', 'true', '30000', '0',
+                        'Finished job info time-to-live in milliseconds')
+                .settings-row
+                    +number('Max parallel tasks:', model + '.maxParallelTasks', '"maxParallelTasks"', 'true', 'availableProcessors * 2', '1',
+                        'Max number of local tasks that may be executed in parallel')
+                .settings-row
+                    +number('Max task queue size:', model + '.maxTaskQueueSize', '"maxTaskQueueSize"', 'true', '8192', '1', 'Max task queue size')
+                .settings-row
+                    +ignite-form-group(ng-form=form ng-model=`${addresses}`)
+                        ignite-form-field-label
+                            | Native libraries
+                        ignite-form-group-tooltip
+                            | Library names
+                        ignite-form-group-add(ng-click='group.add = [{}]')
+                            | Add new library
+                        .group-content(ng-if=`${libs}.length`)
+                            -var model = 'obj.model';
+                            -var name = '"edit" + $index'
+                            -var valid = `${form}[${name}].$valid`
+                            -var save = `${libs}[$index] = ${model}`
+
+                            div(ng-repeat=`model in ${libs} track by $index` ng-init='obj = {}')
+                                label.col-xs-12.col-sm-12.col-md-12
+                                    .indexField
+                                        | {{ $index+1 }})
+                                    +table-remove-button(libs, 'Remove library')
+                                    span(ng-hide='field.edit')
+                                        a.labelFormField(ng-click=`field.edit = true; ${model} = model;`) {{ model }}
+                                    span(ng-if='field.edit')
+                                        +table-text-field(name, model, libs, valid, save, 'Input library name', false)
+                                            +table-save-button(valid, save, false)
+                                            +unique-feedback(name, uniqueTip)
+                        .group-content(ng-repeat='field in group.add')
+                            -var model = 'new';
+                            -var name = '"new"'
+                            -var valid = `${form}[${name}].$valid`
+                            -var save = `${libs}.push(${model})`
+
+                            div
+                                label.col-xs-12.col-sm-12.col-md-12
+                                    +table-text-field(name, model, libs, valid, save, 'Input library name', true)
+                                        +table-save-button(valid, save, true)
+                                        +unique-feedback(name, uniqueTip)
+                        .group-content-empty(id='libs' ng-if=`!(${libs}.length) && !group.add.length`)
+                            | Not defined
+            .col-sm-6
+                +preview-xml-java(model, 'clusterHadoop')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
index 274b014..6126a9e 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/marshaller.pug
@@ -35,18 +35,21 @@ include /app/helpers/jade/mixins
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
                 .settings-row
-                    +dropdown('Marshaller:', marshaller + '.kind', '"kind"', 'true', 'Choose marshaller',
-                        '[\
-                            {value: "OptimizedMarshaller", label: "OptimizedMarshaller"},\
-                            {value: "JdkMarshaller", label: "JdkMarshaller"},\
-                            {value: undefined, label: "Not set"}\
-                        ]',
-                        'Instance of marshaller to use in grid<br/>\
-                        <ul>\
-                            <li>OptimizedMarshaller - Optimized implementation of marshaller</li>\
-                            <li>JdkMarshaller - Marshaller based on JDK serialization mechanism</li>\
-                            <li>Not set - BinaryMarshaller serialize and deserialize all objects in the binary format</li>\
-                        </ul>')
+                    div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                        +dropdown('Marshaller:', marshaller + '.kind', '"kind"', 'true', 'Default', 'marshallerVariant',
+                            'Instance of marshaller to use in grid<br/>\
+                            <ul>\
+                                <li>OptimizedMarshaller - Optimized implementation of marshaller</li>\
+                                <li>JdkMarshaller - Marshaller based on JDK serialization mechanism</li>\
+                                <li>Default - BinaryMarshaller serialize and deserialize all objects in the binary format</li>\
+                            </ul>')
+                    div(ng-if='$ctrl.available("2.0.0")')
+                        +dropdown('Marshaller:', marshaller + '.kind', '"kind"', 'true', 'Default', 'marshallerVariant',
+                            'Instance of marshaller to use in grid<br/>\
+                            <ul>\
+                                <li>JdkMarshaller - Marshaller based on JDK serialization mechanism</li>\
+                                <li>Default - BinaryMarshaller serialize and deserialize all objects in the binary format</li>\
+                            </ul>')
                     a.customize(
                         ng-if=`${marshaller}.kind && ${marshaller}.kind === 'OptimizedMarshaller'`
                         ng-click=`${marshaller}.expanded = !${marshaller}.expanded`
@@ -66,5 +69,15 @@ include /app/helpers/jade/mixins
                                 'Whether marshaller should require Serializable interface or not')
                 .settings-row
                     +checkbox('Marshal local jobs', `${model}.marshalLocalJobs`, '"marshalLocalJobs"', 'If this flag is enabled, jobs mapped to local node will be marshalled as if it was remote node')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Keep alive time:', `${model}.marshallerCacheKeepAliveTime`, '"marshallerCacheKeepAliveTime"', 'true', '10000', '0',
+                            'Keep alive time of thread pool that is in charge of processing marshaller messages')
+                    .settings-row
+                        +number('Pool size:', `${model}.marshallerCacheThreadPoolSize`, '"marshallerCacheThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
+                            'Default size of thread pool that is in charge of processing marshaller messages')
+
             .col-sm-6
                 +preview-xml-java(model, 'clusterMarshaller')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/memory.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/memory.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/memory.pug
new file mode 100644
index 0000000..62a07c1
--- /dev/null
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/memory.pug
@@ -0,0 +1,114 @@
+//-
+    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
+
+-var form = 'memoryConfiguration'
+-var model = 'backupItem.memoryConfiguration'
+-var memoryPolicies = model + '.memoryPolicies'
+
+.panel.panel-default(ng-if='$ctrl.available("2.0.0")' ng-form=form novalidate)
+    .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Memory configuration
+        ignite-form-field-tooltip.tipLabel
+            | Page memory is a manageable off-heap based memory architecture that is split into pages of fixed size#[br]
+            | #[a(href="https://apacheignite.readme.io/docs/page-memory" target="_blank") More info]
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row
+                    +number-min-max('Page size:', model + '.pageSize', '"MemoryConfigurationPageSize"',
+                    'true', '2048', '1024', '16384', 'Every memory region is split on pages of fixed size')
+                .settings-row
+                    +number('Concurrency level:', model + '.concurrencyLevel', '"MemoryConfigurationConcurrencyLevel"',
+                    'true', 'availableProcessors', '2', 'The number of concurrent segments in Ignite internal page mapping tables')
+                .settings-row
+                    +ignite-form-group
+                        ignite-form-field-label
+                            | System cache
+                        ignite-form-group-tooltip
+                            | System cache properties
+                        .group-content
+                            .details-row
+                                +number('Initial size:', model + '.systemCacheInitialSize', '"systemCacheInitialSize"',
+                                'true', '41943040', '10485760', 'Initial size of a memory region reserved for system cache')
+                            .details-row
+                                +number('Maximum size:', model + '.systemCacheMaxSize', '"systemCacheMaxSize"',
+                                'true', '104857600', '10485760', 'Maximum size of a memory region reserved for system cache')
+                .settings-row
+                    +ignite-form-group
+                        ignite-form-field-label
+                            | Memory policies
+                        ignite-form-group-tooltip
+                            | Memory policies configuration
+                        .group-content
+                            .details-row
+                                +text('Default region name:', model + '.defaultMemoryPolicyName', '"defaultMemoryPolicyName"',
+                                'false', 'default', 'Name of the memory policy that defines the default memory region')
+                            .details-row(ng-hide='(' + model + '.defaultMemoryPolicyName || "default") !== "default"')
+                                +number('Default region size:', model + '.defaultMemoryPolicySize', '"defaultMemoryPolicySize"',
+                                'true', '0.8 * totalMemoryAvailable', '10485760',
+                                'Size of the memory policy that defines the default memory region')
+                            .details-row(ng-init='memoryPoliciesTbl={type: "memoryPolicies", model: "memoryPolicies", focusId: "name", ui: "memory-policies-table"}')
+                                +ignite-form-group()
+                                    ignite-form-field-label
+                                        | Configured policies
+                                    ignite-form-group-tooltip
+                                        | List of configured policies
+                                    ignite-form-group-add(ng-click='tableNewItem(memoryPoliciesTbl)')
+                                        | Add Memory policy configuration
+                                    .group-content-empty(ng-if=`!(${memoryPolicies} && ${memoryPolicies}.length > 0)`)
+                                        | Not defined
+                                    .group-content(ng-show=`${memoryPolicies} && ${memoryPolicies}.length > 0` ng-repeat=`model in ${memoryPolicies} track by $index`)
+                                        hr(ng-if='$index != 0')
+                                        .settings-row
+                                            +text-enabled-autofocus('Name:', 'model.name', '"MemoryPolicyName" + $index', 'true', 'false', 'default', 'Memory policy name')
+                                                +table-remove-button(memoryPolicies, 'Remove memory configuration')
+                                        .settings-row
+                                            +number('Initial size:', 'model.initialSize', '"MemoryPolicyInitialSize" + $index',
+                                            'true', '268435456', '10485760', 'Initial memory region size defined by this memory policy')
+                                        .settings-row
+                                            +number('Maximum size:', 'model.maxSize', '"MemoryPolicyMaxSize" + $index',
+                                            'true', '0.8 * totalMemoryAvailable', '10485760', 'Maximum memory region size defined by this memory policy')
+                                        .settings-row
+                                            +text('Swap file path:', 'model.swapFilePath', '"MemoryPolicySwapFilePath" + $index', 'false',
+                                            'Input swap file path', 'An optional path to a memory mapped file for this memory policy')
+                                        .settings-row
+                                            +dropdown('Eviction mode:', 'model.pageEvictionMode', '"MemoryPolicyPageEvictionMode"', 'true', 'DISABLED',
+                                            '[\
+                                                {value: "DISABLED", label: "DISABLED"},\
+                                                {value: "RANDOM_LRU", label: "RANDOM_LRU"},\
+                                                {value: "RANDOM_2_LRU", label: "RANDOM_2_LRU"}\
+                                            ]',
+                                            'An algorithm for memory pages eviction\
+                                            <ul>\
+                                                <li>DISABLED - Eviction is disabled</li>\
+                                                <li>RANDOM_LRU - Once a memory region defined by a memory policy is configured, an off - heap array is allocated to track last usage timestamp for every individual data page</li>\
+                                                <li>RANDOM_2_LRU - Differs from Random - LRU only in a way that two latest access timestamps are stored for every data page</li>\
+                                            </ul>')
+                                        .settings-row
+                                            +number-min-max-step('Eviction threshold:', 'model.evictionThreshold', '"MemoryPolicyEvictionThreshold" + $index',
+                                            'true', '0.9', '0.5', '0.999', '0.05', 'A threshold for memory pages eviction initiation')
+                                        .settings-row
+                                            +number('Empty pages pool size:', 'model.emptyPagesPoolSize', '"MemoryPolicyEmptyPagesPoolSize" + $index',
+                                            'true', '100', '10', 'The minimal number of empty pages to be present in reuse lists for this memory policy')
+                                        .settings-row
+                                            +checkbox('Metrics enabled', 'model.metricsEnabled', '"MemoryPolicyMetricsEnabled" + $index',
+                                            'Whether memory metrics are enabled by default on node startup')
+            .col-sm-6
+                +preview-xml-java(model, 'clusterMemory')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
index 6810e6b..bae3267 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/metrics.pug
@@ -40,7 +40,7 @@ include /app/helpers/jade/mixins
                         'Frequency of metrics log print out<br/>\ ' +
                         'When <b>0</b> log print of metrics is disabled')
                 .settings-row
-                    +number('Update frequency:', `${model}.metricsUpdateFrequency`, '"metricsUpdateFrequency"', 'true', '2000', '0',
+                    +number('Update frequency:', `${model}.metricsUpdateFrequency`, '"metricsUpdateFrequency"', 'true', '2000', '-1',
                         'Job metrics update frequency in milliseconds\
                         <ul>\
                             <li>If set to -1 job metrics are never updated</li>\

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/misc.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/misc.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/misc.pug
new file mode 100644
index 0000000..f84fae4
--- /dev/null
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/misc.pug
@@ -0,0 +1,60 @@
+//-
+    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
+
+-var form = 'misc'
+-var model = 'backupItem'
+
+.panel.panel-default(ng-form=form novalidate)
+    .panel-heading(bs-collapse-toggle)
+        ignite-form-panel-chevron
+        label Miscellaneous
+        ignite-form-field-tooltip.tipLabel
+            | Various miscellaneous cluster settings
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body
+            .col-sm-6
+                .settings-row
+                    +text('Work directory:', model + '.workDirectory', '"workDirectory"', 'false', 'Input work directory',
+                        'Ignite work directory.<br/>\
+                        If not provided, the method will use work directory under IGNITE_HOME specified by IgniteConfiguration#setIgniteHome(String)\
+                        or IGNITE_HOME environment variable or system property.')
+
+                //- Since ignite 2.0
+                div(ng-show='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +text('Consistent ID:', model + '.consistentId', '"ConsistentId"', 'false', 'Input consistent ID', 'Consistent globally unique node ID which survives node restarts')
+                    .settings-row
+                        +java-class('Warmup closure:', model + '.warmupClosure', '"warmupClosure"', 'true', 'false', 'This closure will be executed before actual grid instance start')
+                    .settings-row
+                        +checkbox('Active on start', model + '.activeOnStart', '"activeOnStart"',
+                            'If cluster is not active on start, there will be no cache partition map exchanges performed until the cluster is activated')
+                    .settings-row
+                        +checkbox('Cache sanity check enabled', model + '.cacheSanityCheckEnabled', '"cacheSanityCheckEnabled"',
+                            'If enabled, then Ignite will perform the following checks and throw an exception if check fails<br/>\
+                            <ul>\
+                            <li>Cache entry is not externally locked with lock or lockAsync methods when entry is enlisted to transaction</li>\
+                            <li>Each entry in affinity group - lock transaction has the same affinity key as was specified on affinity transaction start</li>\
+                            <li>Each entry in partition group - lock transaction belongs to the same partition as was specified on partition transaction start</li>\
+                            </ul>')
+
+                .settings-row
+                    +checkbox('Late affinity assignment', model + '.lateAffinityAssignment', '"lateAffinityAssignment"',
+                        'With late affinity assignment mode if primary node was changed for some partition this nodes becomes primary only when rebalancing for all assigned primary partitions is finished')
+            .col-sm-6
+                +preview-xml-java(model, 'clusterMisc', 'caches')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/service.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/service.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/service.pug
new file mode 100644
index 0000000..cf4c27a
--- /dev/null
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/service.pug
@@ -0,0 +1,88 @@
+//-
+    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
+
+-var form = 'serviceConfiguration'
+-var model = 'backupItem.serviceConfigurations'
+
+.panel.panel-default(ng-form=form novalidate)
+    .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Service configuration
+        ignite-form-field-tooltip.tipLabel
+            | Service Grid allows for deployments of arbitrary user-defined services on the cluster#[br]
+            | #[a(href="https://apacheignite.readme.io/docs/fault-tolerance" target="_blank") More info]
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row(ng-init='serviceConfigurationsTbl={type: "serviceConfigurations", model: "serviceConfigurations", focusId: "kind", ui: "failover-table"}')
+                    +ignite-form-group()
+                        ignite-form-field-label
+                            | Service configurations
+                        ignite-form-group-tooltip
+                            | Service configurations
+                        ignite-form-group-add(ng-click='tableNewItem(serviceConfigurationsTbl)')
+                            | Add service configuration
+                        .group-content-empty(ng-if=`!(${model} && ${model}.length > 0)`)
+                            | Not defined
+                        .group-content(ng-show=`${model} && ${model}.length > 0` ng-repeat=`model in ${model} track by $index`)
+                            -var nodeFilter = 'model.nodeFilter';
+                            -var nodeFilterKind = nodeFilter + '.kind';
+                            -var igfsFilter = nodeFilterKind + ' === "IGFS"'
+                            -var customFilter = nodeFilterKind + ' === "Custom"'
+
+                            hr(ng-if='$index != 0')
+                            .settings-row
+                                +text-enabled-autofocus('Name:', 'model.name', '"ServiceName" + $index', 'true', 'true', 'Input service name', 'Service name')
+                                    +table-remove-button(model, 'Remove service configuration')
+                            .settings-row
+                                +java-class('Service class', 'model.service', '"serviceService" + $index', 'true', 'true', 'Service implementation class name')
+                            .settings-row
+                                +number('Max per node count:', 'model.maxPerNodeCount', '"ServiceMaxPerNodeCount" + $index', 'true', 'Unlimited', '0',
+                                    'Maximum number of deployed service instances on each node.<br/>' +
+                                    'Zero for unlimited')
+                            .settings-row
+                                +number('Total count:', 'model.totalCount', '"ServiceTotalCount" + $index', 'true', 'Unlimited', '0',
+                                    'Total number of deployed service instances in the cluster.<br/>' +
+                                    'Zero for unlimited')
+                            //-
+                                .settings-row
+                                    +dropdown('Node filter:', nodeFilterKind, '"nodeFilter" + $index', 'true', 'Not set',
+                                    '[\
+                                        {value: "IGFS", label: "IGFS nodes"},\
+                                        {value: "Custom", label: "Custom"},\
+                                        {value: undefined, label: "Not set"}\
+                                    ]',
+                                    'Node filter variant'
+                                    )
+                                .panel-details(ng-show=igfsFilter)
+                                    .settings-row
+                                        +dropdown-required-empty('IGFS:', nodeFilter + '.IGFS.igfs', '"igfsNodeFilter"', 'true', igfsFilter,
+                                            'Choose IGFS', 'No IGFS configured', 'igfss', 'Select IGFS to filter nodes')
+                                .panel-details(ng-show=customFilter)
+                                    .settings-row
+                                        +java-class('Class name:', nodeFilter + '.Custom.className', '"customNodeFilter"',
+                                            'true', customFilter, 'Class name of custom node filter implementation', customFilter)
+                            .settings-row
+                                +dropdown-required-empty('Cache:', 'model.cache', '"ServiceCache" + $index', 'true', 'false',
+                                    'Choose cache', 'No caches configured for current cluster', 'clusterCachesEmpty', 'Cache name used for key-to-node affinity calculation').settings-row
+                            .settings-row
+                                +text('Affinity key:', 'model.affinityKey', '"ServiceAffinityKey" + $index', 'false', 'Input affinity key',
+                                    'Affinity key used for key-to-node affinity calculation')
+            .col-sm-6
+                +preview-xml-java('backupItem', 'clusterServiceConfiguration', 'caches')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/swap.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/swap.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/swap.pug
new file mode 100644
index 0000000..7210f7a
--- /dev/null
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/swap.pug
@@ -0,0 +1,72 @@
+//-
+    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
+
+-var form = 'swap'
+-var model = 'backupItem'
+-var swapModel = model + '.swapSpaceSpi'
+-var fileSwapModel = swapModel + '.FileSwapSpaceSpi'
+
+.panel.panel-default(ng-if='$ctrl.available(["1.0.0", "2.0.0"])' ng-form=form novalidate)
+    .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Swap
+        ignite-form-field-tooltip.tipLabel
+            | Settings for overflow data to disk if it cannot fit in memory#[br]
+            | #[a(href="https://apacheignite.readme.io/docs/off-heap-memory#swap-space" target="_blank") More info]
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row
+                    +dropdown('Swap space SPI:', `${swapModel}.kind`, '"swapSpaceSpi"', 'true', 'Choose swap SPI',
+                        '[\
+                            {value: "FileSwapSpaceSpi", label: "File-based swap"},\
+                            {value: undefined, label: "Not set"}\
+                        ]',
+                        'Provides a mechanism in grid for storing data on disk<br/>\
+                        Ignite cache uses swap space to overflow data to disk if it cannot fit in memory\
+                        <ul>\
+                            <li>File-based swap - File-based swap space SPI implementation which holds keys in memory</li>\
+                            <li>Not set - File-based swap space SPI with default configuration when it needed</li>\
+                        </ul>')
+                    a.customize(
+                        ng-if=`${swapModel}.kind`
+                        ng-click=`${swapModel}.expanded = !${swapModel}.expanded`
+                    ) {{ #{swapModel}.expanded ? 'Hide settings' : 'Show settings'}}
+                .settings-row
+                    .panel-details(ng-show=`${swapModel}.expanded && ${swapModel}.kind`)
+                        .details-row
+                            +text('Base directory:', `${fileSwapModel}.baseDirectory`, '"baseDirectory"', 'false', 'swapspace',
+                                'Base directory where to write files')
+                        .details-row
+                            +number('Read stripe size:', `${fileSwapModel}.readStripesNumber`, '"readStripesNumber"', 'true', 'availableProcessors', '0',
+                                'Read stripe size defines number of file channels to be used concurrently')
+                        .details-row
+                            +number-min-max-step('Maximum sparsity:', `${fileSwapModel}.maximumSparsity`, '"maximumSparsity"', 'true', '0.5', '0', '0.999', '0.05',
+                                'This property defines maximum acceptable wasted file space to whole file size ratio<br/>\
+                                When this ratio becomes higher than specified number compacting thread starts working')
+                        .details-row
+                            +number('Max write queue size:', `${fileSwapModel}.maxWriteQueueSize`, '"maxWriteQueueSize"', 'true', '1024 * 1024', '0',
+                                'Max write queue size in bytes<br/>\
+                                If there are more values are waiting for being written to disk then specified size, SPI will block on store operation')
+                        .details-row
+                            +number('Write buffer size:', `${fileSwapModel}.writeBufferSize`, '"writeBufferSize"', 'true', '64 * 1024', '0',
+                                'Write buffer size in bytes<br/>\
+                                Write to disk occurs only when this buffer is full')
+            .col-sm-6
+                +preview-xml-java(model, 'clusterSwap')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
index 31dd333..ac4673c 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/thread.pug
@@ -18,6 +18,7 @@ include /app/helpers/jade/mixins
 
 -var form = 'pools'
 -var model = 'backupItem'
+-var executors = model + '.executorConfiguration'
 
 .panel.panel-default(ng-form=form novalidate)
     .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`)
@@ -30,19 +31,62 @@ include /app/helpers/jade/mixins
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
                 .settings-row
-                    +number('Public:', `${model}.publicThreadPoolSize`, '"publicThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
+                    +number('Public:', model + '.publicThreadPoolSize', '"publicThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
                         'Thread pool that is in charge of processing ComputeJob, GridJobs and user messages sent to node')
                 .settings-row
-                    +number('System:', `${model}.systemThreadPoolSize`, '"systemThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
+                    +number('System:', model + '.systemThreadPoolSize', '"systemThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
                         'Thread pool that is in charge of processing internal system messages')
                 .settings-row
-                    +number('Management:', `${model}.managementThreadPoolSize`, '"managementThreadPoolSize"', 'true', '4', '1',
+                    +number('Service:', model + '.serviceThreadPoolSize', '"serviceThreadPoolSize"', 'true', 'max(8, availableProcessors) * 2', '1',
+                        'Thread pool that is in charge of processing proxy invocation')
+                .settings-row
+                    +number('Management:', model + '.managementThreadPoolSize', '"managementThreadPoolSize"', 'true', '4', '1',
                         'Thread pool that is in charge of processing internal and Visor ComputeJob, GridJobs')
                 .settings-row
-                    +number('IGFS:', `${model}.igfsThreadPoolSize`, '"igfsThreadPoolSize"', 'true', 'availableProcessors', '1',
+                    +number('IGFS:', model + '.igfsThreadPoolSize', '"igfsThreadPoolSize"', 'true', 'availableProcessors', '1',
                         'Thread pool that is in charge of processing outgoing IGFS messages')
                 .settings-row
-                    +number('Rebalance:', `${model}.rebalanceThreadPoolSize`, '"rebalanceThreadPoolSize"', 'true', '1', '1',
+                    +number('Rebalance:', model + '.rebalanceThreadPoolSize', '"rebalanceThreadPoolSize"', 'true', '1', '1',
                         'Max count of threads can be used at rebalancing')
+                .settings-row
+                    +number('Utility cache:', model + '.utilityCacheThreadPoolSize', '"utilityCacheThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1',
+                        'Default thread pool size that will be used to process utility cache messages')
+                .settings-row
+                    +number('Utility cache keep alive time:', model + '.utilityCacheKeepAliveTime', '"utilityCacheKeepAliveTime"', 'true', '60000', '0',
+                        'Keep alive time of thread pool size that will be used to process utility cache messages')
+                .settings-row
+                    +number('Async callback:', model + '.asyncCallbackPoolSize', '"asyncCallbackPoolSize"', 'true', 'max(8, availableProcessors)', '1',
+                        'Size of thread pool that is in charge of processing asynchronous callbacks')
+                .settings-row
+                    +number('Striped:', model + '.stripedPoolSize', '"stripedPoolSize"', 'true', 'max(8, availableProcessors)', '1',
+                        'Striped pool size that should be used for cache requests processing')
+
+                //- Since ignite 2.0
+                div(ng-if='$ctrl.available("2.0.0")')
+                    .settings-row
+                        +number('Data streamer:', model + '.dataStreamerThreadPoolSize', '"dataStreamerThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1',
+                            'Size of thread pool that is in charge of processing data stream messages')
+                    .settings-row
+                        +number('Query:', model + '.queryThreadPoolSize', '"queryThreadPoolSize"', 'true', 'max(8, availableProcessors)', '1',
+                            'Size of thread pool that is in charge of processing query messages')
+                    .settings-row(ng-init='executorConfigurationsTbl={type: "executorConfigurations", model: "executorConfigurations", focusId: "kind", ui: "failover-table"}')
+                        +ignite-form-group()
+                            ignite-form-field-label
+                                | Executor configurations
+                            ignite-form-group-tooltip
+                                | –°ustom thread pool configurations for compute tasks
+                            ignite-form-group-add(ng-click='tableNewItem(executorConfigurationsTbl)')
+                                | Add executor configuration
+                            .group-content-empty(ng-if=`!(${executors} && ${executors}.length > 0)`)
+                                | Not defined
+                            .group-content(ng-show=`${executors} && ${executors}.length > 0` ng-repeat=`model in ${executors} track by $index`)
+                                hr(ng-if='$index != 0')
+                                .settings-row
+                                    +text-enabled-autofocus('Name:', 'model.name', '"ExecutorName" + $index', 'true', 'true', 'Input executor name', 'Thread pool name')
+                                        +table-remove-button(executors, 'Remove executor configuration')
+                                .settings-row
+                                    +number('Pool size:', 'model.size', '"ExecutorPoolSize" + $index', 'true', 'max(8, availableProcessors)', '1',
+                                        'Thread pool size')
+
             .col-sm-6
                 +preview-xml-java(model, 'clusterPools')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
index 1645a60..329d7c4 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/time.pug
@@ -29,8 +29,19 @@ include /app/helpers/jade/mixins
     .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
         .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
             .col-sm-6
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Samples size:', `${model}.clockSyncSamples`, '"clockSyncSamples"', 'true', '8', '0',
+                            'Number of samples used to synchronize clocks between different nodes<br/>\
+                            Clock synchronization is used for cache version assignment in CLOCK order mode')
+                    .settings-row
+                        +number('Frequency:', `${model}.clockSyncFrequency`, '"clockSyncFrequency"', 'true', '120000', '0',
+                            'Frequency at which clock is synchronized between nodes, in milliseconds<br/>\
+                            Clock synchronization is used for cache version assignment in CLOCK order mode')
+
                 .settings-row
-                    +number-min-max('Port base:', model + '.timeServerPortBase', '"timeServerPortBase"', 'true', '31100', '0', '65535',
+                    +number-min-max('Port base:', `${model}.timeServerPortBase`, '"timeServerPortBase"', 'true', '31100', '0', '65535',
                         'Time server provides clock synchronization between nodes<br/>\
                         Base UPD port number for grid time server. Time server will be started on one of free ports in range')
                 .settings-row

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug b/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
index aff3c73..b8564dc 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/domains/query.pug
@@ -25,7 +25,7 @@ include /app/helpers/jade/mixins
 -var queryAliasesForm = 'queryAliases'
 -var queryIndexesForm = 'queryIndexes'
 
-// LEGACY mixin for LEGACY index fields table.
+//- LEGACY mixin for LEGACY index fields table.
 mixin table-index-item-edit(prefix, index, sortAvailable, idAddition)
     -var fieldName = `${prefix}FieldName`
     -var direction = `${prefix}Direction`

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/igfs/dual.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/igfs/dual.pug b/modules/web-console/frontend/app/modules/states/configuration/igfs/dual.pug
new file mode 100644
index 0000000..c6c1f89
--- /dev/null
+++ b/modules/web-console/frontend/app/modules/states/configuration/igfs/dual.pug
@@ -0,0 +1,42 @@
+//-
+    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
+
+-var form = 'dualMode'
+-var model = 'backupItem'
+
+.panel.panel-default(ng-if='$ctrl.available(["1.0.0", "2.0.0"])' ng-form=form novalidate)
+    .panel-heading(bs-collapse-toggle='' ng-click=`ui.loadPanel('${form}')`)
+        ignite-form-panel-chevron
+        label Dual mode
+        ignite-form-field-tooltip.tipLabel
+            | IGFS supports dual-mode that allows it to work as either a standalone file system in Hadoop cluster, or work in tandem with HDFS, providing a primary caching layer for the secondary HDFS#[br]
+            | As a caching layer it provides highly configurable read-through and write-through behaviour
+        ignite-form-revert
+    .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`)
+        .panel-body(ng-if=`ui.isPanelLoaded('${form}')`)
+            .col-sm-6
+                .settings-row
+                    +number('Maximum pending puts size:', `${model}.dualModeMaxPendingPutsSize`, '"dualModeMaxPendingPutsSize"', 'true', '0', 'Number.MIN_SAFE_INTEGER',
+                        'Maximum amount of pending data read from the secondary file system and waiting to be written to data cache<br/>\
+                        Zero or negative value stands for unlimited size')
+                .settings-row
+                    +java-class('Put executor service:', `${model}.dualModePutExecutorService`, '"dualModePutExecutorService"', 'true', 'false', 'DUAL mode put operation executor service')
+                .settings-row
+                    +checkbox('Put executor service shutdown', `${model}.dualModePutExecutorServiceShutdown`, '"dualModePutExecutorServiceShutdown"', 'DUAL mode put operation executor service shutdown flag')
+            .col-sm-6
+                +preview-xml-java(model, 'igfsDualMode')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug b/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug
index 29f955a..72d0649 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/igfs/misc.pug
@@ -54,8 +54,18 @@ mixin table-igfs-path-mode-edit(prefix, focusId, index)
             .col-sm-6
                 .settings-row
                     +number('Block size:', `${model}.blockSize`, '"blockSize"', 'true', '65536', '0', 'File data block size in bytes')
-                .settings-row
-                    +number('Buffer size:', `${model}.bufferSize`, '"bufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS stream operations in bytes')
+
+                //- Since ignite 2.0
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +number('Buffer size:', `${model}.streamBufferSize`, '"streamBufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS stream operations in bytes')
+
+                //- Removed in ignite 2.0
+                div(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    .settings-row
+                        +number('Stream buffer size:', `${model}.streamBufferSize`, '"streamBufferSize"', 'true', '65536', '0', 'Read/write buffer size for IGFS stream operations in bytes')
+                    .settings-row
+                        +number('Maximum space size:', `${model}.maxSpaceSize`, '"maxSpaceSize"', 'true', '0', '0', 'Maximum space available for data cache to store file system entries')
+
                 .settings-row
                     +number('Maximum task range length:', `${model}.maximumTaskRangeLength`, '"maximumTaskRangeLength"', 'true', '0', '0', 'Maximum default range size of a file being split during IGFS task execution')
                 .settings-row
@@ -68,6 +78,11 @@ mixin table-igfs-path-mode-edit(prefix, focusId, index)
                     +number('Prefetch blocks:', `${model}.prefetchBlocks`, '"prefetchBlocks"', 'true', '0', '0', 'Number of pre-fetched blocks if specific file chunk is requested')
                 .settings-row
                     +number('Sequential reads before prefetch:', `${model}.sequentialReadsBeforePrefetch`, '"sequentialReadsBeforePrefetch"', 'true', '0', '0', 'Amount of sequential block reads before prefetch is triggered')
+
+                //- Removed in ignite 2.0
+                .settings-row(ng-if='$ctrl.available(["1.0.0", "2.0.0"])')
+                    +number('Trash purge timeout:', `${model}.trashPurgeTimeout`, '"trashPurgeTimeout"', 'true', '1000', '0', 'Maximum timeout awaiting for trash purging in case data cache oversize is detected')
+
                 .settings-row
                     +checkbox('Colocate metadata', `${model}.colocateMetadata`, '"colocateMetadata"', 'Whether to co-locate metadata on a single node')
                 .settings-row
@@ -75,6 +90,11 @@ mixin table-igfs-path-mode-edit(prefix, focusId, index)
                         'If value of this flag is <b>true</b>, IGFS will skip expensive consistency checks<br/>\
                         It is recommended to set this flag to <b>false</b> if your application has conflicting\
                         operations, or you do not know how exactly users will use your system')
+
+                //- Since ignite 2.0
+                .settings-row(ng-if='$ctrl.available("2.0.0")')
+                    +checkbox('Update file length on flush', model + '.updateFileLengthOnFlush', '"updateFileLengthOnFlush"', 'Update file length on flush flag')
+
                 .settings-row
                     +ignite-form-group(ng-model=pathModes ng-form=pathModesForm)
                         ignite-form-field-label
@@ -99,6 +119,5 @@ mixin table-igfs-path-mode-edit(prefix, focusId, index)
                                     tr
                                         td.col-sm-12
                                             +table-igfs-path-mode-edit('new', 'PathMode', '-1')
-
             .col-sm-6
                 +preview-xml-java(model, 'igfsMisc')

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js b/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
index 08cfa71..0259d39 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
+++ b/modules/web-console/frontend/app/modules/states/configuration/summary/summary-zipper.service.js
@@ -18,11 +18,11 @@
 import Worker from 'worker?inline=true!./summary.worker';
 
 export default ['$q', function($q) {
-    return function({ cluster, data }) {
+    return function(message) {
         const defer = $q.defer();
         const worker = new Worker();
 
-        worker.postMessage({ cluster, data });
+        worker.postMessage(message);
 
         worker.onmessage = (e) => {
             defer.resolve(e.data);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e04df7d1/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js b/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
index 71b5a82..8f6a6fa 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
+++ b/modules/web-console/frontend/app/modules/states/configuration/summary/summary.controller.js
@@ -314,7 +314,7 @@ export default [
 
             ActivitiesData.post({ action: '/configuration/download' });
 
-            return new SummaryZipper({ cluster, data: ctrl.data || {}, IgniteDemoMode: $root.IgniteDemoMode })
+            return new SummaryZipper({ cluster, data: ctrl.data || {}, demo: $root.IgniteDemoMode, targetVer: Version.currentSbj.getValue() })
                 .then((data) => {
                     saver.saveAs(data, escapeFileName(cluster.name) + '-project.zip');
                 })


Mime
View raw message