configuration-as-code-plugin: Jenkins Master fails to boot after CASC Plugin upgrade to release 1.48
Hello,
- Jenkins version : 2.277.3
- Plugin version : 1.48
- OS : Debian Docker image (jenkins/jenkins:lts)
We rebuild our own Jenkins Master from the base Jenkins LTS image, incorporating many plugins and the configuration-as-code one.
Since the release of 1.48, our masters fails to boot without any relevant logs and just hangs at jenkins.InitReactorRunner$1#onAttained: System config loaded
.
The only diff in our plugins list is :
- configuration-as-code:1.48 (was 1.47)
- caffeine-api:2.9.0-17.v79e9099a51e3
When we rebuild with version 1.47, masters boot as expected.
Please find attached our CASC YAML, full plugin list and Jenkins logs.
Kind regards,
jenkins_casc.yaml.txt jenkins_stderr.txt jenkins_stdout.txt jenkins_plugins_list.txt
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 29 (19 by maintainers)
(and many thanks to @ben-manes for the near-real-time tech support)
Caffeine does not support recursive computations, as this is not allowed by ConcurrentHashMap. In jdk8 this will livelock, while later releases will throw an exception if detected. The faq discusses a workaround, but it is not wonderful.
Guava does not support this either, but will more often work and can detect only when the same entry is recursed to. It is susceptible to deadlocks if A=>B and B=>A. If a stack overflow occurs, it can lead to ReentrantLock being corrupted and never be released.
The alternative is to not compute through the cache and use a racy load. Even better if this recursion can be removed.
@jtnord you able to take a look? ^^
Is someone who can reproduce this able to test the hpi from https://repo.jenkins-ci.org/incrementals/io/jenkins/configuration-as-code/1.50-rc1193.ce2ce287cf96/ please?
Capture a thread dump. (
kill -QUIT $pid
orjstack $pid
)