Describe the bug
SonarQube 10.3 server crashes at startup when both ecoCode-android and Groovy plugins are onboard.
To Reproduce
Steps to reproduce the behavior:
Start SonarQube server with ecoCode-android and Groovy plugins onboard,
SonarQube crashes with the following error:
023.11.29 15:41:52 INFO web[][o.s.s.p.ServerPluginManager] Deploy ecoCode JavaScript plugin / 1.4.0 / null
2023.11.29 15:41:58 INFO ...
2023.11.29 15:42:00 INFO web[][o.s.s.p.DetectPluginChange] Detect plugin changes
2023.11.29 15:42:02 ERROR web[][o.s.s.p.Platform] Background initialization failed. Stopping SonarQube
java.lang.IllegalStateException: Fail to load plugin Groovy [groovy]
at org.sonar.server.plugins.ServerExtensionInstaller.installExtensions(ServerExtensionInstaller.java:81)
at org.sonar.server.platform.platformlevel.PlatformLevel4.start(PlatformLevel4.java:668)
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(Unknown Source)
Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'jdk.internal.loader.ClassLoaders$AppClassLoader@12bcd0c0-org.sonar.api.config.PropertyDefinition-sonar.groovy.file.suffixes' defined in null: Cannot register bean definition [Generic bean: class [org.sonar.api.config.PropertyDefinition]; scope=singleton; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] for bean 'jdk.internal.loader.ClassLoaders$AppClassLoader@12bcd0c0-org.sonar.api.config.PropertyDefinition-sonar.groovy.file.suffixes': There is already [Generic bean: class [org.sonar.api.config.PropertyDefinition]; scope=singleton; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] bound.
at org.springframework.beans.factory.support.DefaultListableBeanFactory.registerBeanDefinition(DefaultListableBeanFactory.java:1006)
at org.springframework.context.support.GenericApplicationContext.registerBeanDefinition(GenericApplicationContext.java:342)
at org.springframework.beans.factory.support.BeanDefinitionReaderUtils.registerBeanDefinition(BeanDefinitionReaderUtils.java:164)
at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.doRegisterBean(AnnotatedBeanDefinitionReader.java:285)
at org.springframework.context.annotation.AnnotatedBeanDefinitionReader.registerBean(AnnotatedBeanDefinitionReader.java:233)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.registerBean(AnnotationConfigApplicationContext.java:198)
at org.sonar.core.platform.SpringComponentContainer.registerInstance(SpringComponentContainer.java:126)
at org.sonar.core.platform.SpringComponentContainer.addExtension(SpringComponentContainer.java:142)
at org.sonar.core.platform.SpringComponentContainer.addExtension(SpringComponentContainer.java:236)
at org.sonar.core.platform.SpringComponentContainer.addExtension(SpringComponentContainer.java:41)
at org.sonar.server.plugins.ServerExtensionInstaller.installExtension(ServerExtensionInstaller.java:89)
at org.sonar.server.plugins.ServerExtensionInstaller.installExtensions(ServerExtensionInstaller.java:73)
... 7 common frames omitted
2023.11.29 15:42:02 INFO web[][o.s.p.ProcessEntryPoint] Hard stopping process
Expected behavior
SonarQube should start up with both plugins onboard.
SonarQube launches well with only one of the two plugins.
With the ecoCode-android plugins installed, there are 3 rules created for the Groovy language, whereas the Groovy plugin integrates 385 rules and activates 58 in the "Sonar way" profile.
Although the Groovy plugin is unmaintained, it still works on SonarQube versions 9.9 LTS, 10.2.1 and 10.3 and is used in our company.
It's a sad fact that these plugins look like to be incompatible, especially as it seems that much of the Groovy language analysis code of ecoCode-android plugin comes from the Groovy plugin.
Describe the bug SonarQube 10.3 server crashes at startup when both ecoCode-android and Groovy plugins are onboard.
To Reproduce Steps to reproduce the behavior:
Expected behavior SonarQube should start up with both plugins onboard.
Additional context
SonarQube version: 10.3.0 Enterprise Edition ecoCode-android version : 1.1.0 Groovy plugin: 1.8
SonarQube launches well with only one of the two plugins.
With the ecoCode-android plugins installed, there are 3 rules created for the Groovy language, whereas the Groovy plugin integrates 385 rules and activates 58 in the "Sonar way" profile.
Although the Groovy plugin is unmaintained, it still works on SonarQube versions 9.9 LTS, 10.2.1 and 10.3 and is used in our company.
It's a sad fact that these plugins look like to be incompatible, especially as it seems that much of the Groovy language analysis code of ecoCode-android plugin comes from the Groovy plugin.