Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-38487

Jenkins fails to startup when a ComputerListener throws exception for onOnline() of the master node

    XMLWordPrintable

Details

    Description

      Original description:

      > Jenkins fails to startup if the EnvInject global system properties file is missing

      hudson.util.HudsonFailedToLoad: java.io.IOException: org.jenkinsci.lib.envinject.EnvInjectException: java.io.IOException: The given properties file path '/Users/nenashev/Documents/jenkins/plugins/envinject-plugin/foo.prop' doesn't exist.
      	at hudson.WebAppMain$3.run(WebAppMain.java:237)
      Caused by: java.io.IOException: org.jenkinsci.lib.envinject.EnvInjectException: java.io.IOException: The given properties file path '/Users/nenashev/Documents/jenkins/plugins/envinject-plugin/foo.prop' doesn't exist.
      	at org.jenkinsci.plugins.envinject.EnvInjectComputerListener.onOnline(EnvInjectComputerListener.java:171)
      	at jenkins.model.Jenkins.<init>(Jenkins.java:857)
      	at hudson.model.Hudson.<init>(Hudson.java:83)
      	at hudson.model.Hudson.<init>(Hudson.java:79)
      	at hudson.WebAppMain$3.run(WebAppMain.java:225)
      Caused by: org.jenkinsci.lib.envinject.EnvInjectException: java.io.IOException: The given properties file path '/Users/nenashev/Documents/jenkins/plugins/envinject-plugin/foo.prop' doesn't exist.
      	at org.jenkinsci.plugins.envinject.service.EnvInjectEnvVars.getEnvVarsFileProperty(EnvInjectEnvVars.java:76)
      	at org.jenkinsci.plugins.envinject.EnvInjectComputerListener.getNewMasterEnvironmentVariables(EnvInjectComputerListener.java:69)
      	at org.jenkinsci.plugins.envinject.EnvInjectComputerListener.onOnline(EnvInjectComputerListener.java:168)
      	... 4 more
      Caused by: java.io.IOException: The given properties file path '/Users/nenashev/Documents/jenkins/plugins/envinject-plugin/foo.prop' doesn't exist.
      	at org.jenkinsci.plugins.envinject.service.PropertiesVariablesRetriever.invoke(PropertiesVariablesRetriever.java:91)
      	at org.jenkinsci.plugins.envinject.service.PropertiesVariablesRetriever.invoke(PropertiesVariablesRetriever.java:20)
      	at hudson.FilePath.act(FilePath.java:989)
      	at hudson.FilePath.act(FilePath.java:967)
      	at org.jenkinsci.plugins.envinject.service.EnvInjectEnvVars.getEnvVarsFileProperty(EnvInjectEnvVars.java:74)
      	... 6 more
      
      

      Attachments

        Activity

          oleg_nenashev Oleg Nenashev added a comment -

          Actually it's rather a Jenkins core issue, because it does not catch IOExceptions coming from listeners

          oleg_nenashev Oleg Nenashev added a comment - Actually it's rather a Jenkins core issue, because it does not catch IOExceptions coming from listeners

          Code changed in jenkins
          User: Oleg Nenashev
          Path:
          core/src/main/java/hudson/slaves/ComputerListener.java
          core/src/main/java/jenkins/model/Jenkins.java
          test/src/test/java/jenkins/model/JenkinsTest.java
          http://jenkins-ci.org/commit/jenkins/58e1228c99fd3d5063b0967d7780dc536bc2c463
          Log:
          [FIXED JENKINS-38487] - Jenkins startup must not fail in the case of ComputerListener failure (#2610)

          Without this code Jenkinbs startup fails if EnvInject fails to find global property file on startup.

          Javadoc says "Exceptions will be recorded to the listener. Note that throwing an exception doesn't put the computer offline." regarding the listener method exception, hence we should not block Jenkins startup

          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: core/src/main/java/hudson/slaves/ComputerListener.java core/src/main/java/jenkins/model/Jenkins.java test/src/test/java/jenkins/model/JenkinsTest.java http://jenkins-ci.org/commit/jenkins/58e1228c99fd3d5063b0967d7780dc536bc2c463 Log: [FIXED JENKINS-38487] - Jenkins startup must not fail in the case of ComputerListener failure (#2610) Without this code Jenkinbs startup fails if EnvInject fails to find global property file on startup. Javadoc says "Exceptions will be recorded to the listener. Note that throwing an exception doesn't put the computer offline." regarding the listener method exception, hence we should not block Jenkins startup
          oleg_nenashev Oleg Nenashev added a comment -

          The fix has been integrated towards 2.28

          oleg_nenashev Oleg Nenashev added a comment - The fix has been integrated towards 2.28
          oleg_nenashev Oleg Nenashev added a comment -

          Marked as lts-candidate, but maybe too late for 2.19.3

          oleg_nenashev Oleg Nenashev added a comment - Marked as lts-candidate, but maybe too late for 2.19.3

          Code changed in jenkins
          User: Oleg Nenashev
          Path:
          core/src/main/java/hudson/slaves/ComputerListener.java
          core/src/main/java/jenkins/model/Jenkins.java
          test/src/test/java/jenkins/model/JenkinsTest.java
          http://jenkins-ci.org/commit/jenkins/b10440702f74c70786820bdf38d417569d86644d
          Log:
          [FIXED JENKINS-38487] - Jenkins startup must not fail in the case of ComputerListener failure (#2610)

          Without this code Jenkinbs startup fails if EnvInject fails to find global property file on startup.

          Javadoc says "Exceptions will be recorded to the listener. Note that throwing an exception doesn't put the computer offline." regarding the listener method exception, hence we should not block Jenkins startup
          (cherry picked from commit 58e1228c99fd3d5063b0967d7780dc536bc2c463)

          scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: core/src/main/java/hudson/slaves/ComputerListener.java core/src/main/java/jenkins/model/Jenkins.java test/src/test/java/jenkins/model/JenkinsTest.java http://jenkins-ci.org/commit/jenkins/b10440702f74c70786820bdf38d417569d86644d Log: [FIXED JENKINS-38487] - Jenkins startup must not fail in the case of ComputerListener failure (#2610) Without this code Jenkinbs startup fails if EnvInject fails to find global property file on startup. Javadoc says "Exceptions will be recorded to the listener. Note that throwing an exception doesn't put the computer offline." regarding the listener method exception, hence we should not block Jenkins startup (cherry picked from commit 58e1228c99fd3d5063b0967d7780dc536bc2c463)

          People

            oleg_nenashev Oleg Nenashev
            oleg_nenashev Oleg Nenashev
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: