Dear Colleagues,
I'm working in a shared responsibility company infrastructure.
We run Jenkins in Tomcat container.
Last week I downloaded the latest LTS release (2.138.1) and made an upgrade like the followings:
- I stopped the running Jenkins service
- I made a backup about the old war file and its deployed directory
- I deleted the old jenkins.war file and directory where Tomcat deployes the contents
- I put the new war file into the same directory
- I started Jenkins service
And at the and I tried to reach the web interface but I got this error:
java.util.MissingResourceException: Can't find resource for bundle org.jvnet.localizer.ResourceBundleHolder$ResourceBundleImpl, key ApiTokenProperty.LegacyTokenName
at java.util.ResourceBundle.getObject(ResourceBundle.java:450)
at java.util.ResourceBundle.getString(ResourceBundle.java:407)
at org.jvnet.localizer.ResourceBundleHolder.format(ResourceBundleHolder.java:170)
at jenkins.security.Messages.ApiTokenProperty_LegacyTokenName(Messages.java:57)
at jenkins.security.apitoken.ApiTokenStore$HashedToken.buildNewFromLegacy(ApiTokenStore.java:375)
at jenkins.security.apitoken.ApiTokenStore.addLegacyToken(ApiTokenStore.java:155)
at jenkins.security.apitoken.ApiTokenStore.deleteAllLegacyAndGenerateNewOne(ApiTokenStore.java:141)
at jenkins.security.apitoken.ApiTokenStore.regenerateTokenFromLegacyIfRequired(ApiTokenStore.java:135)
at jenkins.security.ApiTokenProperty.setUser(ApiTokenProperty.java:134)
at hudson.model.User.load(User.java:221)
at hudson.model.User.<init>(User.java:166)
at hudson.model.User.getOrCreate(User.java:537)
at hudson.model.User.access$300(User.java:137)
at hudson.model.User$AllUsers.scanAll(User.java:1175)
Caused: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
Caused: java.lang.Error
at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:110)
at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
at jenkins.model.Jenkins$5.runTask(Jenkins.java:1069)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused: org.jvnet.hudson.reactor.ReactorException
at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:282)
at jenkins.InitReactorRunner.run(InitReactorRunner.java:48)
at jenkins.model.Jenkins.executeReactor(Jenkins.java:1103)
at jenkins.model.Jenkins.<init>(Jenkins.java:907)
at hudson.model.Hudson.<init>(Hudson.java:85)
at hudson.model.Hudson.<init>(Hudson.java:81)
at hudson.WebAppMain$3.run(WebAppMain.java:233)
Caused: hudson.util.HudsonFailedToLoad
at hudson.WebAppMain$3.run(WebAppMain.java:250)
We are using this Jenkins through reverse proxy.
When I stopped Jenkins service and made a restore of old war file (2.121.1 LTS) with old deployed directory everything worked again.
This problem may relate to this new feature:
"Replace single per-user API token with new system of multiple, revocable, unrecoverable API tokens with usage tracking."
Tamas Fekete