You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/12/25 11:46:38 UTC
[06/20] ignite git commit: IGNITE-6735: Fixed JDK version resolution
logic to support Java 9. This closes #3005. This closes #3273.
IGNITE-6735: Fixed JDK version resolution logic to support Java 9. This closes #3005. This closes #3273.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b662afff
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b662afff
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b662afff
Branch: refs/heads/ignite-zk
Commit: b662afff014c44bef7eeed97c0c49d27fb5ef473
Parents: 9f98ca1
Author: devozerov <vo...@gridgain.com>
Authored: Fri Dec 22 13:03:59 2017 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Fri Dec 22 13:03:59 2017 +0300
----------------------------------------------------------------------
.../org/apache/ignite/internal/IgnitionEx.java | 5 ++--
.../discovery/GridDiscoveryManager.java | 16 ++++++------
.../ignite/internal/util/IgniteUtils.java | 27 ++++++++++++++++++++
3 files changed, 38 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/b662afff/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index d84f8a9..232476b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -189,8 +189,9 @@ public class IgnitionEx {
*/
static {
// Check 1.8 just in case for forward compatibility.
- if (!U.jdkVersion().contains("1.7") &&
- !U.jdkVersion().contains("1.8")) {
+ int majorJavaVer = U.majorJavaVersion(U.jdkVersion());
+
+ if (majorJavaVer < 7) {
throw new IllegalStateException("Ignite requires Java 1.7.0_71 or above. Current Java version " +
"is not supported: " + U.jdkVersion());
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/b662afff/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index be789e2..438b2bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -1393,16 +1393,16 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
* @throws IgniteCheckedException If failed to get the version.
*/
private int nodeJavaMajorVersion(ClusterNode node) throws IgniteCheckedException {
- try {
- // The format is identical for Oracle JDK, OpenJDK and IBM JDK.
- return Integer.parseInt(node.<String>attribute("java.version").split("\\.")[1]);
- }
- catch (Exception e) {
- U.error(log, "Failed to get java major version (unknown 'java.version' format) [ver=" +
- node.<String>attribute("java.version") + "]", e);
+ String verStr = node.<String>attribute("java.version");
- return 0;
+ int res = U.majorJavaVersion(verStr);
+
+ if (res == 0) {
+ U.error(log, "Failed to get java major version (unknown 'java.version' format) [ver=" +
+ node.<String>attribute("java.version") + "]");
}
+
+ return res;
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/b662afff/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index c6ce969..9804608 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -6586,6 +6586,33 @@ public abstract class IgniteUtils {
}
/**
+ * Get major Java version from string.
+ *
+ * @param verStr Version string.
+ * @return Major version or zero if failed to resolve.
+ */
+ public static int majorJavaVersion(String verStr) {
+ if (F.isEmpty(verStr))
+ return 0;
+
+ try {
+ String[] parts = verStr.split("\\.");
+
+ int major = Integer.parseInt(parts[0]);
+
+ if (parts.length == 1)
+ return major;
+
+ int minor = Integer.parseInt(parts[1]);
+
+ return major == 1 ? minor : major;
+ }
+ catch (Exception e) {
+ return 0;
+ }
+ }
+
+ /**
* Indicates whether HotSpot VM is used.
*
* @return {@code true} if current JVM implementation is a Sun HotSpot VM, {@code false} otherwise.