Issue
The issue can manifest when we have two Operation Center instances running in High Availability (active/passive). The issue avoids the secondary node connects to the Cluster, showing the following error message in the Jenkins.log
file of the secondary node during the connection:
SEVERE c.c.j.h.AbstractJenkinsSingleton#licenseCheck: /var/lib/jenkins-oc/license.xml not found or invalid. Bailing out from a standby role java.lang.ClassNotFoundException: com.cloudbees.bouncycastle.v160.util.io.pem.PemReader at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:543) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) Caused: java.lang.NoClassDefFoundError: com/cloudbees/bouncycastle/v160/util/io/pem/PemReader at com.cloudbees.jenkins.ha.AbstractJenkinsSingleton.licenseCheck(AbstractJenkinsSingleton.java:418) at com.cloudbees.jenkins.ha.AbstractJenkinsSingleton.demote(AbstractJenkinsSingleton.java:380) at com.cloudbees.jenkins.ha.singleton.HASingleton.reactToPrimarySwitch(HASingleton.java:225) at com.cloudbees.jenkins.ha.singleton.HASingleton$3$1.run(HASingleton.java:135) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 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)
The error is located in the cloudbees-ha
plugin version 4.20
when the CloudBees Jenkins Operation Center version is 2.222.2.1
either 2.222.4.3
.
Therefore, we will need to check if we are running any of those CloudBees Jenkins Operation Center versions and we have installed the cloudbees-ha
plugin version 4.20
.
Explanation
The root cause of the error is the lcrypto-jdk15on-1.60-1.jar
library is requested by any cloudbees-ha
plugin version less or equal than 4.20
and in the CloudBees Jenkins Operation Center version 2.222.2.1
this library was replaced by the newer lcrypto-jdk15on:jar:1.64-1.jar
library. Therefore, the cloudbees-ha
plugin isn’t able to find the correct version of the lcrypto
library.
The CloudBees Jenkins Operation Center version 2.235.1.2
fixes the issue. We can see the issue resolved in the Resolved issues page for CloudBees Jenkins Operation Center version 2.235.1.2
.