Sonarqube server starting failed after upgrading to 10.2.1 community

Version: 10.2.1-community
Deployed in kubertaens
Google auth plugin version: sonar-auth-googleoauth-plugin-1.6.1.jar

Issue:
Sonar qube failed to start after upgrading the version from 9.2.1community to 10.2.1-community.
We have installed the Google authenticator plugin to enable login with Google:

Logs:

2023.09.26 09:35:47 WARN  web[][o.s.c.a.AnnotationConfigApplicationContext] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@6ee6f53-org.sonar.server.plugins.ServerPluginManager': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Fail to instantiate class [org.sonarqube.auth.googleoauth.AuthGooglePlugin] of plugin [authgoogleoauth]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@6ee6f53-org.sonar.server.plugins.ServerPluginManager': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Fail to instantiate class [org.sonarqube.auth.googleoauth.AuthGooglePlugin] of plugin [authgoogleoauth]
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:628)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
  at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)
  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:920)
  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
  at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:187)
  at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:80)
  at org.sonar.server.platform.platformlevel.PlatformLevel2.start(PlatformLevel2.java:101)
  at org.sonar.server.platform.PlatformImpl.start(PlatformImpl.java:214)
  at org.sonar.server.platform.PlatformImpl.startLevel2Container(PlatformImpl.java:186)
  at org.sonar.server.platform.PlatformImpl.init(PlatformImpl.java:80)
  at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:45)
  at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4494)
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4946)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
  at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
  at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
  at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
  at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871)
  at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:795)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322)
  at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
  at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
  at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
  at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871)
  at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:249)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:917)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  at org.sonar.server.app.EmbeddedTomcat.start(EmbeddedTomcat.java:71)
  at org.sonar.server.app.WebServer.start(WebServer.java:55)
  at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:97)
  at org.sonar.process.ProcessEntryPoint.launch(ProcessEntryPoint.java:81)
  at org.sonar.server.app.WebServer.main(WebServer.java:104)
Caused by: java.lang.IllegalStateException: Fail to instantiate class [org.sonarqube.auth.googleoauth.AuthGooglePlugin] of plugin [authgoogleoauth]
  at org.sonar.core.platform.PluginClassLoader.instantiatePluginClasses(PluginClassLoader.java:135)
  at org.sonar.core.platform.PluginClassLoader.load(PluginClassLoader.java:67)
  at org.sonar.core.platform.PluginClassLoader.load(PluginClassLoader.java:61)
  at org.sonar.server.plugins.ServerPluginManager.start(ServerPluginManager.java:66)
  at org.sonar.core.platform.StartableBeanPostProcessor.postProcessBeforeInitialization(StartableBeanPostProcessor.java:33)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)
  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
  ... 44 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/sonar/api/SonarPlugin
  at java.base/java.lang.ClassLoader.defineClass1(Native Method)
  at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
  at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
  at java.base/java.net.URLClassLoader.defineClass(Unknown Source)
  at java.base/java.net.URLClassLoader$1.run(Unknown Source)
  at java.base/java.net.URLClassLoader$1.run(Unknown Source)
  at java.base/java.security.AccessController.doPrivileged(Unknown Source)
  at java.base/java.net.URLClassLoader.findClass(Unknown Source)
  at org.sonar.classloader.ClassRealm.loadClassFromSelf(ClassRealm.java:125)
  at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:37)
  at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
  at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
  at org.sonar.core.platform.PluginClassLoader.instantiatePluginClasses(PluginClassLoader.java:131)
  ... 51 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.sonar.api.SonarPlugin
  at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:39)
  at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
  at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
  ... 64 common frames omitted
2023.09.26 09:35:47 INFO  web[][c.z.h.HikariDataSource] HikariPool-1 - Shutdown initiated...
2023.09.26 09:35:47 INFO  web[][c.z.h.HikariDataSource] HikariPool-1 - Shutdown completed.
2023.09.26 09:35:47 INFO  web[][o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000

Thanks for checking out.

What should be the value of the newExternalProvider in the case of a bit bucket?

I tried with the below, the HTTP response code is 204. but the login is till not working.

curl --location --request POST 'https://host/api/users/update_identity_provider?login=username&newExternalProvider=bitbucket' \
--header 'Authorization: Basic token'

image

Sorry for never following-up here. Just for completeness, the newExternalProvider should indeed be Bitbucket.

Whiel logged in as another user (as an admin), you should be able to verify that the migration worked by searching for the user with GET api/users/search, which returns externalProvider.