Skip to content

Commit 26cc860

Browse files
authored
Merge pull request #9237 from jGauravGupta/FISH-12969
FISH-12969 Payara Server Startup Fails in Apache NetBeans IDE Due to the CRaCCheckpointTo Option
2 parents 20132a6 + a0d5052 commit 26cc860

3 files changed

Lines changed: 49 additions & 15 deletions

File tree

enterprise/payara.tooling/nbproject/org-netbeans-modules-payara-tooling.sig

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#Signature file v4.1
2-
#Version 2.26
2+
#Version 2.27
33

44
CLSS public abstract interface java.io.Closeable
55
intf java.lang.AutoCloseable
@@ -1238,6 +1238,7 @@ CLSS public final org.netbeans.modules.payara.tooling.data.JDKVersion
12381238
meth public boolean equals(java.lang.Object)
12391239
meth public boolean ge(org.netbeans.modules.payara.tooling.data.JDKVersion)
12401240
meth public boolean gt(org.netbeans.modules.payara.tooling.data.JDKVersion)
1241+
meth public boolean isOptionSupported(org.netbeans.modules.payara.tooling.server.parser.JvmConfigReader$JvmOption,java.lang.String)
12411242
meth public boolean le(org.netbeans.modules.payara.tooling.data.JDKVersion)
12421243
meth public boolean lt(org.netbeans.modules.payara.tooling.data.JDKVersion)
12431244
meth public int hashCode()
@@ -1248,8 +1249,6 @@ meth public java.util.Optional<java.lang.Short> getUpdate()
12481249
meth public java.util.Optional<java.lang.String> getVM()
12491250
meth public java.util.Optional<java.lang.String> getVendor()
12501251
meth public short getMajor()
1251-
meth public static boolean isCorrectJDK(java.util.Optional<org.netbeans.modules.payara.tooling.data.JDKVersion>,java.util.Optional<org.netbeans.modules.payara.tooling.data.JDKVersion>)
1252-
meth public static boolean isCorrectJDK(org.netbeans.modules.payara.tooling.data.JDKVersion,java.util.Optional<java.lang.String>,java.util.Optional<org.netbeans.modules.payara.tooling.data.JDKVersion>,java.util.Optional<org.netbeans.modules.payara.tooling.data.JDKVersion>)
12531252
meth public static org.netbeans.modules.payara.tooling.data.JDKVersion getDefaultPlatformVersion()
12541253
meth public static org.netbeans.modules.payara.tooling.data.JDKVersion toValue(java.lang.String)
12551254
meth public static org.netbeans.modules.payara.tooling.data.JDKVersion toValue(java.lang.String,java.lang.String)

enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/JDKVersion.java

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package org.netbeans.modules.payara.tooling.data;
2020

2121
import java.util.Optional;
22+
import org.netbeans.modules.payara.tooling.server.parser.JvmConfigReader;
2223

2324
public final class JDKVersion {
2425

@@ -283,24 +284,51 @@ public static JDKVersion getDefaultPlatformVersion() {
283284
return IDE_JDK_VERSION;
284285
}
285286

286-
public static boolean isCorrectJDK(JDKVersion jdkVersion, Optional<String> vendorOrVM, Optional<JDKVersion> minVersion, Optional<JDKVersion> maxVersion) {
287+
public boolean isOptionSupported(
288+
JvmConfigReader.JvmOption jvmOption,
289+
String javaHome) {
290+
287291
boolean correctJDK = true;
288292

289-
if (vendorOrVM.isPresent()) {
290-
correctJDK = jdkVersion.getVendor().map(vendor -> vendor.contains(vendorOrVM.get())).orElse(false)
291-
|| jdkVersion.getVM().map(vm -> vm.contains(vendorOrVM.get())).orElse(false);
293+
if (jvmOption.vendorOrVM.isPresent()) {
294+
correctJDK
295+
= this.getVendor()
296+
.map(v -> v.contains(jvmOption.vendorOrVM.get()))
297+
.orElse(false)
298+
|| this.getVM()
299+
.map(vm -> vm.contains(jvmOption.vendorOrVM.get()))
300+
.orElse(false);
292301
}
293-
if (correctJDK && minVersion.isPresent()) {
294-
correctJDK = jdkVersion.ge(minVersion.get());
302+
303+
if (correctJDK && jvmOption.minVersion.isPresent()) {
304+
correctJDK = this.ge(jvmOption.minVersion.get());
295305
}
296-
if (correctJDK && maxVersion.isPresent()) {
297-
correctJDK = jdkVersion.le(maxVersion.get());
306+
307+
if (correctJDK && jvmOption.maxVersion.isPresent()) {
308+
correctJDK = this.le(jvmOption.maxVersion.get());
309+
}
310+
311+
if (correctJDK
312+
&& jvmOption.option != null
313+
&& jvmOption.option.matches("^-XX:[+-]?CRaC.*")) {
314+
315+
correctJDK = this.isCRaCSupported(javaHome);
298316
}
299317
return correctJDK;
300318
}
301319

302-
public static boolean isCorrectJDK(Optional<JDKVersion> minVersion, Optional<JDKVersion> maxVersion) {
303-
return isCorrectJDK(IDE_JDK_VERSION, Optional.empty(), minVersion, maxVersion);
320+
/**
321+
* Checks whether the given JDK installation supports CRaC by verifying the
322+
* presence of the lib/criu directory.
323+
*
324+
* @param javaHome Java home directory to check
325+
* @return true if CRaC-enabled JDK
326+
*/
327+
private boolean isCRaCSupported(String javaHome) {
328+
return Optional.ofNullable(javaHome)
329+
.map(home -> new java.io.File(home, "lib/criu"))
330+
.map(java.io.File::exists)
331+
.orElse(false);
304332
}
305333

306334
static {

enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/ServerTasks.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,11 +157,18 @@ public static ResultProcess startServer(PayaraServer server,
157157
}
158158
}
159159

160-
JDKVersion javaVersion = args.getJavaVersion() == null ? JDKVersion.getDefaultPlatformVersion() : args.getJavaVersion() ;
160+
JDKVersion javaVersion = args.getJavaVersion() == null ? JDKVersion.getDefaultPlatformVersion() : args.getJavaVersion();
161+
String selectedJavaHome
162+
= args.getJavaHome() != null
163+
? args.getJavaHome()
164+
: System.getProperty("java.home");
161165
List<String> optList
162166
= jvmConfigReader.getJvmOptions()
163167
.stream()
164-
.filter(fullOption -> JDKVersion.isCorrectJDK(javaVersion, fullOption.vendorOrVM, fullOption.minVersion, fullOption.maxVersion))
168+
.filter(fullOption
169+
-> javaVersion.isOptionSupported(
170+
fullOption,
171+
selectedJavaHome))
165172
.map(fullOption -> fullOption.option)
166173
.collect(toList());
167174

0 commit comments

Comments
 (0)