Skip to content

Docker restart loop #127

@shenxianpeng

Description

@shenxianpeng

Environment

  • Jenkins Version: jenkins/jenkins:2.541.3-jdk21
  • Plugin Version: 136.vd9ddb_e7860a_8
  • Java Version: jdk21

Steps to Reproduce

explainError:
    aiProvider:
      openai:
        apiKey: "${AI_API_KEY}"
        model: "gpt-4.1"
    enableExplanation: true
    customContext: |
      Global context: This Jenkins instance is used to test the explain-error plugin.
      If the error is a simulated one, explain what the underlying real-world cause would be.

The root cause is:

setAiProvider() in GlobalConfigurationImpl lacks @DataBoundSetter. JCasC can't configure the aiProvider nested property, reports the
whole explainError block as invalid, and causes a ConfigurationAsCodeBootFailure → Docker restart loop

Expected Behavior

Docker start sucessfully.

Actual Behavior

Docker restart loop

Logs


2026-03-31 12:05:07.048+0000 [id=88]	INFO	jenkins.InitReactorRunner$1#onAttained: Listed all plugins

2026-03-31 12:05:08.703+0000 [id=90]	INFO	jenkins.InitReactorRunner$1#onAttained: Prepared all plugins

2026-03-31 12:05:08.715+0000 [id=92]	INFO	jenkins.InitReactorRunner$1#onAttained: Started all plugins

2026-03-31 12:05:08.717+0000 [id=100]	INFO	jenkins.InitReactorRunner$1#onAttained: Augmented all extensions

2026-03-31 12:05:09.452+0000 [id=100]	INFO	jenkins.InitReactorRunner$1#onAttained: System config loaded

2026-03-31 12:05:10.074+0000 [id=100]	SEVERE	jenkins.InitReactorRunner$1#onTaskFailed: Failed ConfigurationAsCode.init

io.jenkins.plugins.casc.UnknownAttributesException: unclassified: Invalid configuration elements for type: class jenkins.model.GlobalConfigurationCategory$Unclassified : explainError.

[LF]> Available attributes : administrativeMonitorsConfiguration, artifactManager, buildDiscarders, casCGlobalConfig, computerRetentionCheckInterval, defaultDisplayUrlProvider, defaultFolderConfiguration, defaultView, envVarsFilter, fingerprints, globalDefaultFlowDurabilityLevel, globalLibraries, globalUntrustedLibraries, location, mailer, myView, nodeProperties, plugin, pollSCM, projectNamingStrategy, proxyConfigurationManager, quietPeriod, resourceRoot, scmGit, scmRetryCount, shell, usageStatistics, viewsTabBar

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.BaseConfigurator.handleUnknown(BaseConfigurator.java:404)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:389)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.BaseConfigurator.check(BaseConfigurator.java:293)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.lambda$checkWith$8(ConfigurationAsCode.java:894)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:837)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:894)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:880)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:759)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:369)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:358)

Caused: io.jenkins.plugins.casc.ConfigurationAsCodeBootFailure

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:360)

Caused: java.lang.reflect.InvocationTargetException

	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)

	at java.base/java.lang.reflect.Method.invoke(Unknown Source)

	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:109)

Caused: java.lang.Error

	at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:115)

	at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:185)

	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:304)

	at jenkins.model.Jenkins$5.runTask(Jenkins.java:1152)

	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:221)

	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:120)

	at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)

	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

	at java.base/java.lang.Thread.run(Unknown Source)

2026-03-31 12:05:10.082+0000 [id=56]	SEVERE	hudson.util.BootFailure#publish: Failed to initialize Jenkins

io.jenkins.plugins.casc.UnknownAttributesException: unclassified: Invalid configuration elements for type: class jenkins.model.GlobalConfigurationCategory$Unclassified : explainError.

[LF]> Available attributes : administrativeMonitorsConfiguration, artifactManager, buildDiscarders, casCGlobalConfig, computerRetentionCheckInterval, defaultDisplayUrlProvider, defaultFolderConfiguration, defaultView, envVarsFilter, fingerprints, globalDefaultFlowDurabilityLevel, globalLibraries, globalUntrustedLibraries, location, mailer, myView, nodeProperties, plugin, pollSCM, projectNamingStrategy, proxyConfigurationManager, quietPeriod, resourceRoot, scmGit, scmRetryCount, shell, usageStatistics, viewsTabBar

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.BaseConfigurator.handleUnknown(BaseConfigurator.java:404)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.BaseConfigurator.configure(BaseConfigurator.java:389)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.BaseConfigurator.check(BaseConfigurator.java:293)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.lambda$checkWith$8(ConfigurationAsCode.java:894)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.invokeWith(ConfigurationAsCode.java:837)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.checkWith(ConfigurationAsCode.java:894)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:880)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.configureWith(ConfigurationAsCode.java:759)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.configure(ConfigurationAsCode.java:369)

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:358)

Caused: io.jenkins.plugins.casc.ConfigurationAsCodeBootFailure

	at PluginClassLoader for configuration-as-code//io.jenkins.plugins.casc.ConfigurationAsCode.init(ConfigurationAsCode.java:360)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugFor changelog: Minor bug. Will be listed after features

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions