Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sonarqube 10.2 fails to start with sonar-javamelody 1.95.0 #6

Closed
rebse opened this issue Sep 8, 2023 · 7 comments
Closed

Sonarqube 10.2 fails to start with sonar-javamelody 1.95.0 #6

rebse opened this issue Sep 8, 2023 · 7 comments

Comments

@rebse
Copy link

rebse commented Sep 8, 2023

Hi,

the warning
WARN web[][o.s.c.p.PluginClassLoader] API compatibility mode is no longer supported. In case of error, plugin JavaMelody [javamelody] should package its dependencies.
was visible in $SONARQUBE_HOME/logs/web.log for a long time already.

But now with the latest Sonarqube 10.2, Sonarqube fails to start with this error
2023.09.08 07:12:03 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@659e0bfd-org.sonar.server.plugins.ServerPluginManager': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Fail to instantiate class [org.sonar.plugins.javamelody.SonarJavaMelodyPlugin] of plugin [javamelody] 2023.09.08 07:12:03 ERROR web[][o.s.s.p.w.PlatformServletContextListener] Web server startup failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@659e0bfd-org.sonar.server.plugins.ServerPluginManager': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Fail to instantiate class [org.sonar.plugins.javamelody.SonarJavaMelodyPlugin] of plugin [javamelody] 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(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) 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(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) 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.apache.catalina.startup.Tomcat.start(Tomcat.java:486) 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.sonar.plugins.javamelody.SonarJavaMelodyPlugin] of plugin [javamelody] 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(ClassLoader.java:1012) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524) at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427) at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421) at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420) 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.08 07:12:03 INFO web[][c.z.h.HikariDataSource] HikariPool-1 - Shutdown initiated...
Would be great, if Javamelody would also work with the latest Sonarqube version.

Gilbert

@evernat
Copy link
Member

evernat commented Jan 8, 2024

evernat added a commit that referenced this issue Jan 8, 2024
@evernat
Copy link
Member

evernat commented Jan 8, 2024

I have written a pull request #7 to fix this.
And I have built a snapshot build : http://javamelody.org/downloads/sonar-javamelody-plugin-1.95.01.jar
Are you able to test it ?

@rebse
Copy link
Author

rebse commented Jan 8, 2024

Hi, thanks :-)
Just tested with the latest Sonarqube 10.3 Enterprise but unfortunately

2024.01.08 08:17:58 ERROR web[][o.s.s.p.Platform] Background initialization failed. Stopping SonarQube
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@659e0bfd-org.sonar.server.ui.PageRepository': Initialization of bean failed; nested exception is java.lang.IllegalStateException: Page 'Monitoring' references plugin '' that does not exist
	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:200)
	at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:80)
	at org.sonar.server.platform.platformlevel.PlatformLevel4.start(PlatformLevel4.java:670)
	at org.sonar.server.platform.PlatformImpl.start(PlatformImpl.java:214)
	at org.sonar.server.platform.PlatformImpl.startLevel34Containers(PlatformImpl.java:194)
	at org.sonar.server.platform.PlatformImpl$AutoStarterRunnable.runIfNotAborted(PlatformImpl.java:362)
	at org.sonar.server.platform.PlatformImpl$1.doRun(PlatformImpl.java:113)
	at org.sonar.server.platform.PlatformImpl$AutoStarterRunnable.run(PlatformImpl.java:346)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalStateException: Page 'Monitoring' references plugin '' that does not exist
	at com.google.common.base.Preconditions.checkState(Preconditions.java:835)
	at org.sonar.server.ui.PageRepository.checkPluginExists(PageRepository.java:147)
	at java.base/java.util.HashMap$Values.forEach(HashMap.java:1065)
	at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1092)
	at org.sonar.server.ui.PageRepository.start(PageRepository.java:109)
	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)
	... 17 common frames omitted

@evernat
Copy link
Member

evernat commented Jan 9, 2024

ok, sorry.
I misunderstood what is a page definition in the new plugin api (JS for React SPA, not a link for our monitoring page like it was some time ago).
I have updated the pull request to remove the Monitoring link from Sonarqube and I have made a new snapshot build which is available at http://javamelody.org/downloads/sonar-javamelody-plugin-1.95.02.jar

You can test it if you find the time. Fingers crossed 🤞

@rebse
Copy link
Author

rebse commented Jan 22, 2024

@evernat
Copy link
Member

evernat commented Jan 24, 2024

ok, thanks.
Given the stack-trace at https://community.sonarsource.com/t/sonarqube-10-3-sonar-maven-required-class-was-missing-javax-servlet-filter/107677, this is now fixed in the pull request #7 and I have made a new snapshot build which is available at http://javamelody.org/downloads/sonar-javamelody-plugin-1.95.03.jar

I suppose I will merge the pull request soon and release in some time.

@rebse
Copy link
Author

rebse commented Jan 25, 2024

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants