ignite-6305 Review fixes
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b7bcab44 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b7bcab44 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b7bcab44 Branch: refs/heads/ignite-6305 Commit: b7bcab44dd58a7444d140c64599ae78f8555094c Parents: ca832d5 Author: Andrey Gura <[email protected]> Authored: Mon Oct 9 17:09:06 2017 +0300 Committer: Andrey Gura <[email protected]> Committed: Mon Oct 9 17:09:06 2017 +0300 ---------------------------------------------------------------------- .../processors/cluster/ClusterProcessor.java | 4 +- .../processors/cluster/GridUpdateNotifier.java | 44 ++++++++++++++++++-- 2 files changed, 42 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b7bcab44/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java index 7591911..5f2c66c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java @@ -38,7 +38,6 @@ import org.apache.ignite.internal.IgniteDiagnosticInfo; import org.apache.ignite.internal.IgniteDiagnosticMessage; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.IgniteKernal; -import org.apache.ignite.internal.IgniteProperties; import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException; import org.apache.ignite.internal.cluster.IgniteClusterImpl; import org.apache.ignite.internal.managers.communication.GridIoPolicy; @@ -109,8 +108,7 @@ public class ClusterProcessor extends GridProcessorAdapter { public ClusterProcessor(GridKernalContext ctx) { super(ctx); - notifyEnabled.set(IgniteSystemProperties.getBoolean(IGNITE_UPDATE_NOTIFIER, - Boolean.parseBoolean(IgniteProperties.get("ignite.update.notifier.enabled.by.default")))); + notifyEnabled.set(IgniteSystemProperties.getBoolean(IGNITE_UPDATE_NOTIFIER, true)); cluster = new IgniteClusterImpl(ctx); } http://git-wip-us.apache.org/repos/asf/ignite/blob/b7bcab44/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridUpdateNotifier.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridUpdateNotifier.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridUpdateNotifier.java index e92f216..ff834f6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridUpdateNotifier.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridUpdateNotifier.java @@ -18,6 +18,7 @@ package org.apache.ignite.internal.processors.cluster; import java.io.IOException; +import java.util.Comparator; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.atomic.AtomicReference; import org.apache.ignite.IgniteCheckedException; @@ -37,6 +38,9 @@ class GridUpdateNotifier { /** Default encoding. */ private static final String CHARSET = "UTF-8"; + /** Version comparator. */ + private static final VersionComparator VER_COMPARATOR = new VersionComparator(); + /** Throttling for logging out. */ private static final long THROTTLE_PERIOD = 24 * 60 * 60 * 1000; // 1 day. @@ -186,13 +190,16 @@ class GridUpdateNotifier { downloadUrl = downloadUrl != null ? downloadUrl : IgniteKernal.SITE; - if (latestVer != null) - if (latestVer.equals(ver)) { + if (latestVer != null) { + int cmp = VER_COMPARATOR.compare(latestVer, ver); + + if (cmp == 0) { if (!reportOnlyNew) throttle(log, false, "Your version is up to date."); } - else + else if (cmp > 0) throttle(log, true, "New version is available at " + downloadUrl + ": " + latestVer); + } else if (!reportOnlyNew) throttle(log, false, "Update status is not available."); @@ -321,4 +328,35 @@ class GridUpdateNotifier { return obtainMeta("downloadUrl=", line); } } + + /** + * Ignite version comparator. + */ + private static final class VersionComparator implements Comparator<String> { + /** Dot pattern. */ + private static final String DOT_PATTERN = "\\."; + + /** Dash pattern. */ + private static final String DASH_PATTERN = "-"; + + /** {@inheritDoc} */ + @Override public int compare(String o1, String o2) { + if (o1.equals(o2)) + return 0; + + String[] ver1 = o1.split(DOT_PATTERN, 3); + String[] ver2 = o2.split(DOT_PATTERN, 3); + + assert ver1.length == 3; + assert ver2.length == 3; + + if (Integer.valueOf(ver1[0]) >= Integer.valueOf(ver2[0]) && + Integer.valueOf(ver1[1]) >= Integer.valueOf(ver2[1]) && + Integer.valueOf(ver1[2].split(DASH_PATTERN)[0]) >= Integer.valueOf(ver2[2].split(DASH_PATTERN)[0])) + + return 1; + else + return -1; + } + } }
