IGNITE-10453 Web Console: Added new property "Disk compression" to 
"Configuration" screen.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f965bf5c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f965bf5c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f965bf5c

Branch: refs/heads/ignite-10189
Commit: f965bf5c79e7b17d70962dba5908c31c0b610260
Parents: 4884dec
Author: Vasiliy Sisko <[email protected]>
Authored: Fri Dec 7 14:44:41 2018 +0700
Committer: Alexey Kuznetsov <[email protected]>
Committed: Fri Dec 7 14:44:41 2018 +0700

----------------------------------------------------------------------
 .../configuration/DiskPageCompression.java      | 17 ++++++++-
 .../visor/cache/VisorCacheConfiguration.java    | 38 ++++++++++++++++++++
 .../visor/node/VisorPersistenceMetrics.java     | 34 +++++++++++++++++-
 modules/web-console/backend/app/schemas.js      |  4 ++-
 .../cache-edit-form/templates/memory.pug        | 37 +++++++++++++++++++
 .../generator/ConfigurationGenerator.js         |  9 +++++
 .../configuration/generator/Maven.service.js    |  3 ++
 .../generator/defaults/Cache.service.js         |  5 ++-
 .../web-console/frontend/app/services/Caches.js |  8 +++++
 .../frontend/app/services/Version.service.js    |  6 +++-
 10 files changed, 156 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/core/src/main/java/org/apache/ignite/configuration/DiskPageCompression.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/DiskPageCompression.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/DiskPageCompression.java
index d628c6a..2aacbe9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/DiskPageCompression.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/DiskPageCompression.java
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.configuration;
 
+import org.jetbrains.annotations.Nullable;
+
 /**
  * Disk page compression options.
  *
@@ -34,5 +36,18 @@ public enum DiskPageCompression {
     LZ4,
 
     /** Snappy compression. */
-    SNAPPY
+    SNAPPY;
+
+    /** Enumerated values. */
+    private static final DiskPageCompression[] VALS = values();
+
+    /**
+     * Efficiently gets enumerated value from its ordinal.
+     *
+     * @param ord Ordinal value.
+     * @return Enumerated value or {@code null} if ordinal out of range.
+     */
+    @Nullable public static DiskPageCompression fromOrdinal(int ord) {
+        return ord >= 0 && ord < VALS.length ? VALS[ord] : null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
index 1e9faaa..3f22065 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
@@ -27,6 +27,7 @@ import org.apache.ignite.cache.CacheWriteSynchronizationMode;
 import org.apache.ignite.cache.PartitionLossPolicy;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DiskPageCompression;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
@@ -167,6 +168,12 @@ public class VisorCacheConfiguration extends 
VisorDataTransferObject {
     /** Dynamic deployment ID. */
     private IgniteUuid dynamicDeploymentId;
 
+    /** Disk page compression algorithm. */
+    private DiskPageCompression diskPageCompression;
+
+    /** Algorithm specific disk page compression level. */
+    private Integer diskPageCompressionLevel;
+
     /**
      * Default constructor.
      */
@@ -227,6 +234,9 @@ public class VisorCacheConfiguration extends 
VisorDataTransferObject {
         readFromBackup = ccfg.isReadFromBackup();
         tmLookupClsName = ccfg.getTransactionManagerLookupClassName();
         topValidator = compactClass(ccfg.getTopologyValidator());
+
+        diskPageCompression = ccfg.getDiskPageCompression();
+        diskPageCompressionLevel = ccfg.getDiskPageCompressionLevel();
     }
 
     /**
@@ -519,6 +529,25 @@ public class VisorCacheConfiguration extends 
VisorDataTransferObject {
         return dynamicDeploymentId;
     }
 
+    /**
+     * @return Disk page compression algorithm.
+     */
+    public DiskPageCompression getDiskPageCompression() {
+        return diskPageCompression;
+    }
+
+    /**
+     * @return Algorithm specific disk page compression level.
+     */
+    public Integer getDiskPageCompressionLevel() {
+        return diskPageCompressionLevel;
+    }
+
+    /** {@inheritDoc} */
+    @Override public byte getProtocolVersion() {
+        return V2;
+    }
+
     /** {@inheritDoc} */
     @Override protected void writeExternalData(ObjectOutput out) throws 
IOException {
         U.writeString(out, name);
@@ -561,6 +590,10 @@ public class VisorCacheConfiguration extends 
VisorDataTransferObject {
         U.writeString(out, tmLookupClsName);
         U.writeString(out, topValidator);
         U.writeGridUuid(out, dynamicDeploymentId);
+
+        // V2
+        U.writeEnum(out, diskPageCompression);
+        out.writeObject(diskPageCompressionLevel);
     }
 
     /** {@inheritDoc} */
@@ -605,6 +638,11 @@ public class VisorCacheConfiguration extends 
VisorDataTransferObject {
         tmLookupClsName = U.readString(in);
         topValidator = U.readString(in);
         dynamicDeploymentId = U.readGridUuid(in);
+
+        if (protoVer > V1) {
+            diskPageCompression = 
DiskPageCompression.fromOrdinal(in.readByte());
+            diskPageCompressionLevel = (Integer) in.readObject();
+        }
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistenceMetrics.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistenceMetrics.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistenceMetrics.java
index ebc1c02..bcab318 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistenceMetrics.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistenceMetrics.java
@@ -108,6 +108,12 @@ public class VisorPersistenceMetrics extends 
VisorDataTransferObject {
     /** */
     private long totalSz;
 
+    /** */
+    private long storageSize;
+
+    /** */
+    private long sparseStorageSize;
+
     /**
      * Default constructor.
      */
@@ -151,6 +157,9 @@ public class VisorPersistenceMetrics extends 
VisorDataTransferObject {
         cpBufSz = m.getCheckpointBufferSize();
 
         totalSz = m.getTotalAllocatedSize();
+
+        storageSize = m.getStorageSize();
+        sparseStorageSize = m.getSparseStorageSize();
     }
 
     /**
@@ -335,9 +344,23 @@ public class VisorPersistenceMetrics extends 
VisorDataTransferObject {
         return totalSz;
     }
 
+    /**
+     * @return Storage space allocated in bytes.
+     */
+    public long getStorageSize() {
+        return storageSize;
+    }
+
+    /**
+     * @return Storage space allocated adjusted for possible sparsity in bytes.
+     */
+    public long getSparseStorageSize() {
+        return sparseStorageSize;
+    }
+
     /** {@inheritDoc} */
     @Override public byte getProtocolVersion() {
-        return V2;
+        return V3;
     }
 
     /** {@inheritDoc} */
@@ -370,6 +393,10 @@ public class VisorPersistenceMetrics extends 
VisorDataTransferObject {
         out.writeLong(usedCpBufSz);
         out.writeLong(cpBufSz);
         out.writeLong(totalSz);
+
+        // V3
+        out.writeLong(storageSize);
+        out.writeLong(sparseStorageSize);
     }
 
     /** {@inheritDoc} */
@@ -403,6 +430,11 @@ public class VisorPersistenceMetrics extends 
VisorDataTransferObject {
             cpBufSz = in.readLong();
             totalSz = in.readLong();
         }
+
+        if (protoVer > V2) {
+            storageSize = in.readLong();
+            sparseStorageSize = in.readLong();
+        }
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/web-console/backend/app/schemas.js
----------------------------------------------------------------------
diff --git a/modules/web-console/backend/app/schemas.js 
b/modules/web-console/backend/app/schemas.js
index 69d4a4c..14ce111 100644
--- a/modules/web-console/backend/app/schemas.js
+++ b/modules/web-console/backend/app/schemas.js
@@ -326,7 +326,9 @@ module.exports.factory = function(mongoose) {
         memoryPolicyName: String,
         dataRegionName: String,
         sqlIndexMaxInlineSize: Number,
-        topologyValidator: String
+        topologyValidator: String,
+        diskPageCompression: {type: String, enum: ['SKIP_GARBAGE', 'ZSTD', 
'LZ4', 'SNAPPY']},
+        diskPageCompressionLevel: Number
     });
 
     Cache.index({name: 1, space: 1, clusters: 1}, {unique: true});

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/templates/memory.pug
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/templates/memory.pug
 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/templates/memory.pug
index 571e8ec..64c008e 100644
--- 
a/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/templates/memory.pug
+++ 
b/modules/web-console/frontend/app/components/page-configure-advanced/components/cache-edit-form/templates/memory.pug
@@ -63,6 +63,43 @@ panel-collapsible(ng-form=form 
on-open=`ui.loadPanel('${form}')`)
                     tip: 'Name of data region configuration for this cache'
                 })
 
+            //- Since ignite 2.8
+            .pc-form-grid-col-60(ng-if='$ctrl.available("2.8.0")')
+                +form-field__dropdown({
+                    label: 'Disk page compression:',
+                    model: `${model}.diskPageCompression`,
+                    name: '"diskPageCompression"',
+                    placeholder: 'IGNITE_DEFAULT_DISK_PAGE_COMPRESSION',
+                    options: '::$ctrl.Caches.diskPageCompression',
+                    tip: `Memory modes control whether value is stored in 
on-heap memory, off-heap memory, or swap space
+                        <ul>
+                            <li>SKIP_GARBAGE - retain only useful data from 
half-filled pages, but do not apply any compression</li>
+                            <li>ZSTD - Zstd compression<br/></li>
+                            <li>LZ4 - LZ4 compression<br/></li>
+                            <li>SNAPPY - Snappy compression<br/></li>
+                        </ul>`
+                })
+            .pc-form-grid-col-60(ng-if=`$ctrl.available("2.8.0") && 
${model}.diskPageCompression === "ZSTD"`)
+                +form-field__number({
+                    label: 'Disk page compression level:',
+                    model: `${model}.diskPageCompressionLevel`,
+                    name: '"diskPageCompressionLevel"',
+                    placeholder: '3',
+                    min: -131072,
+                    max: 22,
+                    tip: 'Disk page compression level from -131072 to 22 or 
empty to use default 3.<br/>'
+                })
+            .pc-form-grid-col-60(ng-if=`$ctrl.available("2.8.0") && 
${model}.diskPageCompression === "LZ4"`)
+                +form-field__number({
+                    label: 'Disk page compression level:',
+                    model: `${model}.diskPageCompressionLevel`,
+                    name: '"diskPageCompressionLevel"',
+                    placeholder: '0',
+                    min: 0,
+                    max: 17,
+                    tip: 'Disk page compression level from 0 to 17 or empty to 
use default 0.<br/>'
+                })
+
             //- Removed in ignite 2.0
             .pc-form-grid-col-60(ng-if-start='$ctrl.available(["1.0.0", 
"2.0.0"])')
                 +form-field__dropdown({

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
 
b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
index 6fba32a..b330f6e 100644
--- 
a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
+++ 
b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
@@ -2087,6 +2087,15 @@ export default class IgniteConfigurationGenerator {
         if (available('2.3.0'))
             ccfg.stringProperty('dataRegionName');
 
+        if (available('2.8.0')) {
+            ccfg.enumProperty('diskPageCompression');
+
+            const compression = ccfg.valueOf('diskPageCompression');
+
+            if (compression === 'ZSTD' || compression === 'LZ4')
+                ccfg.intProperty('diskPageCompressionLevel');
+        }
+
         // Removed in ignite 2.0
         if (available(['1.0.0', '2.0.0'])) {
             ccfg.enumProperty('memoryMode');

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/web-console/frontend/app/modules/configuration/generator/Maven.service.js
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/configuration/generator/Maven.service.js
 
b/modules/web-console/frontend/app/modules/configuration/generator/Maven.service.js
index a145f2e..449bc34 100644
--- 
a/modules/web-console/frontend/app/modules/configuration/generator/Maven.service.js
+++ 
b/modules/web-console/frontend/app/modules/configuration/generator/Maven.service.js
@@ -182,6 +182,9 @@ export default class IgniteMavenGenerator {
 
             if (_.get(cache, 'nodeFilter.kind') === 'Exclude')
                 this.addDependency(deps, 'org.apache.ignite', 
'ignite-extdata-p2p', igniteVer);
+
+            if (cache.diskPageCompression)
+                this.addDependency(deps, 'org.apache.ignite', 
'ignite-compress', igniteVer);
         });
 
         if (cluster.discovery.kind === 'Jdbc') {

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cache.service.js
----------------------------------------------------------------------
diff --git 
a/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cache.service.js
 
b/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cache.service.js
index 3f87b8a..e3c69b6 100644
--- 
a/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cache.service.js
+++ 
b/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cache.service.js
@@ -120,7 +120,10 @@ const DFLT_CACHE = {
             clsName: 'java.sql.Types'
         }
     },
-    memoryPolicyName: 'default'
+    memoryPolicyName: 'default',
+    diskPageCompression: {
+        clsName: 'org.apache.ignite.configuration.DiskPageCompression'
+    }
 };
 
 export default class IgniteCacheDefaults {

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/web-console/frontend/app/services/Caches.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/Caches.js 
b/modules/web-console/frontend/app/services/Caches.js
index 626395d..db99a4b 100644
--- a/modules/web-console/frontend/app/services/Caches.js
+++ b/modules/web-console/frontend/app/services/Caches.js
@@ -111,6 +111,14 @@ export default class Caches {
         {value: 'OFFHEAP_VALUES', label: 'OFFHEAP_VALUES'}
     ];
 
+    diskPageCompression = [
+        {value: 'SKIP_GARBAGE', label: 'SKIP_GARBAGE'},
+        {value: 'ZSTD', label: 'ZSTD'},
+        {value: 'LZ4', label: 'LZ4'},
+        {value: 'SNAPPY', label: 'SNAPPY'},
+        {value: null, label: 'Disabled'}
+    ];
+
     offHeapMode = {
         _val(cache) {
             return (cache.offHeapMode === null || cache.offHeapMode === void 
0) ? -1 : cache.offHeapMode;

http://git-wip-us.apache.org/repos/asf/ignite/blob/f965bf5c/modules/web-console/frontend/app/services/Version.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/Version.service.js 
b/modules/web-console/frontend/app/services/Version.service.js
index bbd03cb..8bbf6ef 100644
--- a/modules/web-console/frontend/app/services/Version.service.js
+++ b/modules/web-console/frontend/app/services/Version.service.js
@@ -74,10 +74,14 @@ const compare = (a, b) => {
 
 export default class IgniteVersion {
     constructor() {
-        this.webConsole = '2.7.0';
+        this.webConsole = '2.8.0';
 
         this.supportedVersions = [
             {
+                label: 'Ignite 2.8',
+                ignite: '2.8.0'
+            },
+            {
                 label: 'Ignite 2.7',
                 ignite: '2.7.0'
             },

Reply via email to