Skip to content

Commit

Permalink
Do not automatically detect JVMs on CI systems
Browse files Browse the repository at this point in the history
Automatic detection on CI systems can cause a lot of trouble (e.g.
memory consumption, time to read the jvms, old jvms lingering around)
and is generally not useful as a CI has usually a dedicated and fixed
setup to run with.

This adds a check for the common 'CI' environment variable that is
usually defined by all usual CI/CD pipelines to indicate a job is
running on a CI server to skip the detection regardless of preferences
configuration. If one absolutely want the feature even for CI, the
system-property 'DetectVMInstallationsJob.disabled' can be set to false
to restore previous behavior.
  • Loading branch information
laeubi committed Dec 16, 2024
1 parent a639856 commit 76ef9f6
Showing 1 changed file with 16 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@
*/
public class DetectVMInstallationsJob extends Job {

/**
* CI is a common variable defined in CI/CDI servers like Jenkins, Gitlab, Github, ... to indicate it is a CI environment
*/
private static final String ENV_CI = "CI"; //$NON-NLS-1$
private static final String PROPERTY_DETECT_VM_INSTALLATIONS_JOB_DISABLED = "DetectVMInstallationsJob.disabled"; //$NON-NLS-1$
private static final Object FAMILY = DetectVMInstallationsJob.class;

public DetectVMInstallationsJob() {
Expand Down Expand Up @@ -222,11 +227,20 @@ public boolean belongsTo(Object family) {
}

public static void initialize() {
boolean forcedDisableVMDetection = Boolean.getBoolean("DetectVMInstallationsJob.disabled"); //$NON-NLS-1$
boolean forcedDisableVMDetection = Boolean.getBoolean(PROPERTY_DETECT_VM_INSTALLATIONS_JOB_DISABLED);
if (forcedDisableVMDetection) {
// early exit no need to read preferences!
return;
}
if (System.getProperty(PROPERTY_DETECT_VM_INSTALLATIONS_JOB_DISABLED) == null && Boolean.parseBoolean(System.getenv(ENV_CI))) {
// exit because no explicit value for the property was given and we are running in a CI environment
return;
}
// finally look what is defined in the preferences
IEclipsePreferences instanceNode = InstanceScope.INSTANCE.getNode(LaunchingPlugin.getDefault().getBundle().getSymbolicName());
IEclipsePreferences defaultNode = DefaultScope.INSTANCE.getNode(LaunchingPlugin.getDefault().getBundle().getSymbolicName());
boolean defaultValue = defaultNode.getBoolean(LaunchingPlugin.PREF_DETECT_VMS_AT_STARTUP, true);
if (!forcedDisableVMDetection && instanceNode.getBoolean(LaunchingPlugin.PREF_DETECT_VMS_AT_STARTUP, defaultValue)) {
if (instanceNode.getBoolean(LaunchingPlugin.PREF_DETECT_VMS_AT_STARTUP, defaultValue)) {
new DetectVMInstallationsJob().schedule();
}
}
Expand Down

0 comments on commit 76ef9f6

Please sign in to comment.