九零不老心
Published on 2026-10-09 / 3 Visits
0

jenkins

报错

jenkins页面报错:

java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded 	at jenkins.model.Jenkins.save(Jenkins.java:3379) 	at jenkins.model.Jenkins.saveQuietly(Jenkins.java:3398) 	at jenkins.model.Jenkins.setSecurityRealm(Jenkins.java:2637) 	at jenkins.model.Jenkins\(16.run(Jenkins.java:3342) 	at org.jvnet.hudson.reactor.TaskGraphBuilder\)TaskImpl.run(TaskGraphBuilder.java:169) 	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296) 	at jenkins.model.Jenkins$5.runTask(Jenkins.java:1129) 	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214) 	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117) 	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68) 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 	at java.lang.Thread.run(Thread.java:748) Caused: org.jvnet.hudson.reactor.ReactorException 	at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:282) 	at jenkins.InitReactorRunner.run(InitReactorRunner.java:49) 	at jenkins.model.Jenkins.executeReactor(Jenkins.java:1162) 	at jenkins.model.Jenkins.<init>(Jenkins.java:962) 	at hudson.model.Hudson.<init>(Hudson.java:85) 	at hudson.model.Hudson.<init>(Hudson.java:81) 	at hudson.WebAppMain$3.run(WebAppMain.java:295) Caused: hudson.util.HudsonFailedToLoad 	at hudson.WebAppMain$3.run(WebAppMain.java:312)

catalina.out详细报错:

09-Oct-2026 17:39:06.711 INFO [pool-6-thread-4] jenkins.InitReactorRunner$1.onAttained Prepared all plugins
09-Oct-2026 17:39:06.720 INFO [pool-6-thread-2] jenkins.InitReactorRunner$1.onAttained Started all plugins
09-Oct-2026 17:39:08.422 INFO [pool-6-thread-12] jenkins.InitReactorRunner$1.onAttained Augmented all extensions
09-Oct-2026 17:39:08.440 WARNING [Loading global config] jenkins.model.Jenkins$5.runTask Loading global config failed perhaps due to plugin dependency issues
java.io.IOException: Unable to read /app/product_jenkins_home/config.xml
at hudson.XmlFile.unmarshal (XmlFile.java:183)
at hudson.XmlFile.unmarshal (XmlFile.java:163)
at jenkins.model.Jenkins.loadConfig (Jenkins.java:3157)
at jenkins.model.Jenkins.access$1200 (Jenkins.java:315)
at jenkins.model.Jenkins$13.run (Jenkins.java:3258)
at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run (TaskGraphBuilder.java:169)
at org.jvnet.hudson.reactor.Reactor.runTask (Reactor.java:296)
at jenkins.model.Jenkins$5.runTask (Jenkins.java:1129)
at org.jvnet.hudson.reactor.Reactor\(2.run(Reactor.java:214)
                at org.jvnet.hudson.reactor.Reactor\)Node.run(Reactor.java:117)
at jenkins.security.ImpersonatingExecutorService\(1.run(ImpersonatingExecutorService.java:68)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor\)Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodError: com.thoughtworks.xstream.io.HierarchicalStreamReader.peekNextChild()Ljava/lang/String;
at com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy\(ConverterImpl.unmarshal(RoleBasedAuthorizationStrategy.java:580)
                at hudson.util.XStream2\)AssociatedConverterImpl.unmarshal(XStream2.java:463)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at hudson.util.RobustReflectionConverter.unmarshalField(RobustReflectionConverter.java:439)
at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:341)
at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:280)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:72)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1409)
at hudson.util.XStream2.unmarshal(XStream2.java:161)
at hudson.util.XStream2.unmarshal(XStream2.java:132)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1388)
at hudson.XmlFile.unmarshal(XmlFile.java:180)
... 13 more
09-Oct-2026 17:39:08.441 INFO [pool-6-thread-6] jenkins.InitReactorRunner$1.onAttained System config loaded
09-Oct-2026 17:39:08.582 INFO [pool-6-thread-5] jenkins.InitReactorRunner$1.onAttained System config adapted
09-Oct-2026 17:39:08.601 INFO [pool-6-thread-3] jenkins.InitReactorRunner$1.onAttained Loaded all jobs
09-Oct-2026 17:39:08.601 INFO [pool-6-thread-9] jenkins.InitReactorRunner$1.onAttained Configuration for all jobs updated
09-Oct-2026 17:39:08.638 INFO [Download metadata thread] hudson.model.AsyncPeriodicWork.lambda$doRun$0 Started Download metadata
09-Oct-2026 17:39:08.644 INFO [Download metadata thread] hudson.util.Retrier.start Attempt #1 to do the action check updates server
09-Oct-2026 17:39:08.654 SEVERE [Finalizing set up] jenkins.model.Jenkins.save An attempt to save Jenkins'' global configuration before it has been loaded has been made during milestone Configuration for all jobs updated.  This is indicative of a bug in the caller and may lead to full or partial loss of configuration.
java.lang.IllegalStateException: call trace
at jenkins.model.Jenkins.save(Jenkins.java:3370)
at jenkins.model.Jenkins.saveQuietly(Jenkins.java:3398)
at jenkins.model.Jenkins.setSecurityRealm(Jenkins.java:2637)
at jenkins.model.Jenkins\(16.run(Jenkins.java:3342)
                at org.jvnet.hudson.reactor.TaskGraphBuilder\)TaskImpl.run(TaskGraphBuilder.java:169)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
at jenkins.model.Jenkins$5.runTask(Jenkins.java:1129)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
09-Oct-2026 17:39:08.656 SEVERE [pool-6-thread-7] jenkins.InitReactorRunner$1.onTaskFailed Failed Finalizing set up
java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded
at jenkins.model.Jenkins.save(Jenkins.java:3379)
at jenkins.model.Jenkins.saveQuietly(Jenkins.java:3398)
at jenkins.model.Jenkins.setSecurityRealm(Jenkins.java:2637)
at jenkins.model.Jenkins\(16.run(Jenkins.java:3342)
                at org.jvnet.hudson.reactor.TaskGraphBuilder\)TaskImpl.run(TaskGraphBuilder.java:169)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
at jenkins.model.Jenkins$5.runTask(Jenkins.java:1129)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
09-Oct-2026 17:39:08.658 SEVERE [Jenkins initialization thread] hudson.util.BootFailure.publish Failed to initialize Jenkins
hudson.util.HudsonFailedToLoad: org.jvnet.hudson.reactor.ReactorException: java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded
at hudson.WebAppMain$3.run(WebAppMain.java:312)
Caused by: org.jvnet.hudson.reactor.ReactorException: java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded
at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:282)
at jenkins.InitReactorRunner.run(InitReactorRunner.java:49)
at jenkins.model.Jenkins.executeReactor(Jenkins.java:1162)
at jenkins.model.Jenkins.<init>(Jenkins.java:962)
at hudson.model.Hudson.<init>(Hudson.java:85)
at hudson.model.Hudson.<init>(Hudson.java:81)
at hudson.WebAppMain$3.run(WebAppMain.java:295)
Caused by: java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded
at jenkins.model.Jenkins.save(Jenkins.java:3379)
at jenkins.model.Jenkins.saveQuietly(Jenkins.java:3398)
at jenkins.model.Jenkins.setSecurityRealm(Jenkins.java:2637)
at jenkins.model.Jenkins$16.run(Jenkins.java:3342)
at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
at jenkins.model.Jenkins$5.runTask(Jenkins.java:1129)
at org.jvnet.hudson.reactor.Reactor\(2.run(Reactor.java:214)
                at org.jvnet.hudson.reactor.Reactor\)Node.run(Reactor.java:117)
at jenkins.security.ImpersonatingExecutorService\(1.run(ImpersonatingExecutorService.java:68)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor\)Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
09-Oct-2026 17:39:08.658 SEVERE [AllUsers.scanAll] hudson.model.User.loadFromUserConfigFile Failed to load /app/product_jenkins_home/users/ghs12345_8188695307926474524/config.xml
java.io.IOException: Unable to read /app/product_jenkins_home/users/ghs12345_8188695307926474524/config.xml
at hudson.XmlFile.unmarshal(XmlFile.java:183)
at hudson.XmlFile.unmarshal(XmlFile.java:163)
at hudson.model.User.loadFromUserConfigFile(User.java:220)
at hudson.model.User.load(User.java:190)
at hudson.model.User.<init>(User.java:185)
at hudson.model.User.<init>(User.java:120)
at hudson.model.User\(AllUsers.scanAll(User.java:1071)
                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:498)
                at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
                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:1129)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.thoughtworks.xstream.io.StreamException:
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:126)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:148)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:141)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:118)
at com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:103)
at com.thoughtworks.xstream.io.xml.XppReader.<init>(XppReader.java:63)
at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:54)
at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:65)
at hudson.XmlFile.unmarshal(XmlFile.java:180)
... 20 more
Caused by: java.nio.channels.ClosedByInterruptException
at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
at sun.nio.ch.FileChannelImpl.position(FileChannelImpl.java:269)
at sun.nio.ch.ChannelInputStream.available(ChannelInputStream.java:116)
at java.io.BufferedInputStream.read(BufferedInputStream.java:353)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.PushbackInputStream.read(PushbackInputStream.java:186)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at com.thoughtworks.xstream.core.util.XmlHeaderAwareReader.read(XmlHeaderAwareReader.java:223)
at org.kxml2.io.KXmlParser.peek(Unknown Source)
at org.kxml2.io.KXmlParser.peekType(Unknown Source)
at org.kxml2.io.KXmlParser.nextImpl(Unknown Source)
at org.kxml2.io.KXmlParser.next(Unknown Source)
at com.thoughtworks.xstream.io.xml.XppReader.pullNextEvent(XppReader.java:109)
... 28 more
09-Oct-2026 17:39:08.663 INFO [Jenkins initialization thread] jenkins.model.Jenkins.cleanUp Stopping Jenkins
09-Oct-2026 17:39:08.663 SEVERE [AllUsers.scanAll] hudson.model.User.loadFromUserConfigFile Failed to load /app/product_jenkins_home/users/wxed39a2163913_399140708892933626/config.xml

定位

```
Caused by: java.lang.NoSuchMethodError: com.thoughtworks.xstream.io.HierarchicalStreamReader.peekNextChild()Ljava/lang/String;
at com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy$ConverterImpl.unmarshal
```

**核心问题:`rolestrategy(Role Strategy 角色权限插件)版本 和 当前 Jenkins 核心版本不兼容!**

> 
> `NoSuchMethodError` = 插件代码调用了一个 Xstream 库里不存在的方法。
> 旧版 rolestrategy 插件依赖的 Xstream 方法,新版 Jenkins 核心已经移除;或者反过来:新版 rolestrategy 跑在老 Jenkins 上。

整个故障链路:

1. Jenkins 启动加载全局`config.xml`
2. 读到 `<authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy">`
3. 加载 rolestrategy 插件,插件代码尝试调用`peekNextChild()`,**方法不存在 → config.xml 解析失败**
4. 全局配置加载半截失败,但 Jenkins 继续初始化流程,尝试设置安全域、保存配置
5. 触发后续经典报错:`An attempt to save the global configuration was made before it was loaded`

> 
> 后面用户目录`users/xxx/config.xml`的`ClosedByInterruptException`是**连锁次生报错**,不是根因;主问题就是 rolestrategy 插件版本不匹配。

解决方式

### 1. 备份原始 config.xml(必做!)

```
cd /var/lib/jenkins
cp config.xml config.xml.bak.$(date +%Y%m%d)
```

### 2. 修改 config.xml,临时清空安全配置
找到这段:

```
<authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy">
  ......这里一大段角色策略配置......
</authorizationStrategy>
```

**整段删除**,替换为 Jenkins 默认的简单授权,例如:

```
<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
  <denyAnonymousReadAccess>true</denyAnonymousReadAccess>
</authorizationStrategy>
```

重启tomcat或者jenkins