timja / jenkins-gh-issues-poc-06-18

0 stars 0 forks source link

[JENKINS-35206] NullPointerException on startup after update from 2.5 to 2.6 #3201

Closed timja closed 8 years ago

timja commented 8 years ago

After updating to 2.6 from 2.5 I'm getting the following NPE directly at startup:

hudson.util.HudsonFailedToLoad: java.lang.NullPointerException
    at hudson.WebAppMain$3.run(WebAppMain.java:244)
Caused by: java.lang.NullPointerException
    at jenkins.install.InstallState.equals(InstallState.java:179)
    at jenkins.install.InstallUtil.proceedToNextStateFrom(InstallUtil.java:97)
    at jenkins.model.Jenkins.(Jenkins.java:888)
    at hudson.model.Hudson.(Hudson.java:85)
    at hudson.model.Hudson.(Hudson.java:81)
    at hudson.WebAppMain$3.run(WebAppMain.java:227)

The stacktrace didn't suggest a particular plugin so I chose 'core' as component. Please correct if necessary.

jenkins.err.log

Mai 30, 2016 7:23:10 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Logging initialized @470ms
Mai 30, 2016 7:23:10 AM winstone.Logger logInternal
INFO: Beginning extraction from war file
Mai 30, 2016 7:23:14 AM org.eclipse.jetty.util.log.JavaUtilLog warn
WARNING: Empty contextPath
Mai 30, 2016 7:23:14 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: jetty-9.2.z-SNAPSHOT
Mai 30, 2016 7:23:15 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
Mai 30, 2016 7:23:15 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started w.@1e3c1c7{/,file:/C:/Program%20Files%20(x86)/Jenkins/war/,AVAILABLE}{C:\Program Files (x86)\Jenkins\war}
Mai 30, 2016 7:23:15 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started ServerConnector@19b0f9d{HTTP/1.1}{0.0.0.0:8080}
Mai 30, 2016 7:23:15 AM org.eclipse.jetty.util.log.JavaUtilLog info
INFO: Started @5203ms
Mai 30, 2016 7:23:15 AM winstone.Logger logInternal
INFO: Winstone Servlet Engine v2.0 running: controlPort=disabled
Mai 30, 2016 7:23:16 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started initialization
Mai 30, 2016 7:23:16 AM jenkins.InitReactorRunner$1 onAttained
INFO: Listed all plugins
Mai 30, 2016 7:23:18 AM jenkins.InitReactorRunner$1 onAttained
INFO: Prepared all plugins
Mai 30, 2016 7:23:18 AM hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1 error
INFO: Failed to instantiate optional component org.jenkinsci.plugins.workflow.steps.scm.SubversionStep$DescriptorImpl; skipping
Mai 30, 2016 7:23:19 AM jenkins.InitReactorRunner$1 onAttained
INFO: Started all plugins
Mai 30, 2016 7:23:19 AM jenkins.InitReactorRunner$1 onAttained
INFO: Augmented all extensions
Mai 30, 2016 7:23:19 AM jenkins.InitReactorRunner$1 onAttained
INFO: Loaded all jobs
Mai 30, 2016 7:23:19 AM hudson.model.AsyncPeriodicWork$1 run
INFO: Started Download metadata
Mai 30, 2016 7:23:19 AM hudson.model.AsyncPeriodicWork$1 run
INFO: Finished Download metadata. 8 ms
Mai 30, 2016 7:23:19 AM org.jenkinsci.main.modules.sshd.SSHD start
INFO: Started SSHD at port 65097
Mai 30, 2016 7:23:19 AM jenkins.InitReactorRunner$1 onAttained
INFO: Completed initialization
Mai 30, 2016 7:23:19 AM hudson.util.BootFailure publish
SEVERE: Failed to initialize Jenkins
hudson.util.HudsonFailedToLoad: java.lang.NullPointerException
    at hudson.WebAppMain$3.run(WebAppMain.java:244)
Caused by: java.lang.NullPointerException
    at jenkins.install.InstallState.equals(InstallState.java:179)
    at jenkins.install.InstallUtil.proceedToNextStateFrom(InstallUtil.java:97)
    at jenkins.model.Jenkins.(Jenkins.java:888)
    at hudson.model.Hudson.(Hudson.java:85)
    at hudson.model.Hudson.(Hudson.java:81)
    at hudson.WebAppMain$3.run(WebAppMain.java:227)

Originally reported by axelbehrens, imported from: NullPointerException on startup after update from 2.5 to 2.6
  • assignee: kzantow
  • status: Resolved
  • priority: Blocker
  • resolution: Fixed
  • resolved: 2016-06-06T08:05:11+00:00
  • imported: 2022/01/10
timja commented 8 years ago

oleg_nenashev:

It was caused by changes in the Update Wizard made by kzantow.
Does this issue block the startup?

timja commented 8 years ago

axelbehrens:

Yes, the NPE stacktrace is the only thing shown in the web UI.

timja commented 8 years ago

danielbeck:

axelbehrens Do you remember what you did in 2.5? Did you run the upgrade wizard (installation of Pipeline plugins)? Did you dismiss it, or ignore the banner?

timja commented 8 years ago

kzantow:

axelbehrens could you provide any additional information how you were able to get your Jenkins instance into this state? I was not able to reproduce it installing 2.5 and upgrading to 2.6. In any case, I've prepared a patch, which should fix this against the 2.6 codebase here.

timja commented 8 years ago

axelbehrens:

kzantow, this is only a test instance running on my laptop (Windows 7 x64). I've installed v2.0 from scratch, added a handful of plugins and created some jobs. I automatically updated pretty much to every new release until 2.6.

This is my config.xml if that helps:



  
    jenkins.diagnostics.SecurityIsOffMonitor
  
  1.0
  RESTART
  2
  NORMAL
  true
  
  
  false
  
  ${ITEM_ROOTDIR}/workspace
  ${ITEM_ROOTDIR}/builds
  
  
  
  
  0
  
    
      
      All
      false
      false
      
    
  
  All
  0
  
  
  

Cheers

timja commented 8 years ago

oleg_nenashev:

Copy-paste from Keith's PR: "IMHO the only realistic case of getting such state is a corrupted config file with the legacy non-transient installState due to the whatever reason (e.g. upgrade from the previous version). I would vote for handling it in InstallState#readResolve() or in Jenkins#readResolve()"

Working on this alternate solution

timja commented 8 years ago

kzantow:

oleg_nenashev yeah, this RESTART is the culprit, it looks like. A shame XStream doesn't realize the field is now transient and skip it. I still think that this could potentially be set from other sources (e.g. Groovy startup scripts), which makes my solution more general purpose.

timja commented 8 years ago

oleg_nenashev:

Agreed, XStream fix does not close all potential misuse cases. Created https://github.com/jenkinsci/jenkins/pull/2387 anyway

timja commented 8 years ago

scm_issue_link:

Code changed in jenkins
User: Oleg Nenashev
Path:
core/src/main/java/jenkins/install/InstallState.java
test/src/test/java/jenkins/install/InstallStateTest.java
http://jenkins-ci.org/commit/jenkins/1b2711c9578f5b34bc452fcc3f2dd055b1c0865c
Log:
JENKINS-35206 - Make the InstallState object deserialization robust against corrupted files (#2387)

timja commented 8 years ago

scm_issue_link:

Code changed in jenkins
User: Keith Zantow
Path:
core/src/main/java/jenkins/install/InstallUtil.java
core/src/main/java/jenkins/model/Jenkins.java
http://jenkins-ci.org/commit/jenkins/541641100b4a9570d72d263a12edbc1e06c987a2
Log:
JENKINS-35206 - fix potential NPE due to corrupt Jenkins.InstallState (#2385)

timja commented 8 years ago

axelbehrens:

BTW: It's fixed now in 2.8

timja commented 7 years ago

scm_issue_link:

Code changed in jenkins
User: Keith Zantow
Path:
core/src/main/java/jenkins/install/InstallUtil.java
core/src/main/java/jenkins/model/Jenkins.java
http://jenkins-ci.org/commit/jenkins/3837f44a6f2621dde0bea59c522cc1e0464b67c2
Log:
JENKINS-35206 - fix potential NPE due to corrupt Jenkins.InstallState (#2385)
(cherry picked from commit 541641100b4a9570d72d263a12edbc1e06c987a2)

timja commented 7 years ago

scm_issue_link:

Code changed in jenkins
User: Oleg Nenashev
Path:
core/src/main/java/jenkins/install/InstallState.java
test/src/test/java/jenkins/install/InstallStateTest.java
http://jenkins-ci.org/commit/jenkins/e8467e304ba33329c1afd0fa15a8456f52711f4b
Log:
JENKINS-35206 - Make the InstallState object deserialization robust against corrupted files (#2387)

(cherry picked from commit 1b2711c9578f5b34bc452fcc3f2dd055b1c0865c)