SonarTsPlugin icon indicating copy to clipboard operation
SonarTsPlugin copied to clipboard

Does not work with 6.1

Open leoleovich opened this issue 7 years ago • 12 comments

2016.10.17 09:33:10 ERROR web[][o.a.c.c.C.[.[.[/sonar]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.web.PlatformServletContextListener
java.lang.IllegalStateException: Unable to load component class org.sonar.server.rule.RuleDefinitionsLoader
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69) ~[sonar-core-6.1.jar:na]
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.instantiateComponentAsIsStartable(DefaultPicoContainer.java:1034) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.addAdapterIfStartable(DefaultPicoContainer.java:1026) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1003) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767) ~[picocontainer-2.15.jar:na]
    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:141) ~[sonar-core-6.1.jar:na]
    at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:88) ~[sonar-server-6.1.jar:na]
    at org.sonar.server.platform.platformlevel.PlatformLevelStartup.access$001(PlatformLevelStartup.java:43) ~[sonar-server-6.1.jar:na]
    at org.sonar.server.platform.platformlevel.PlatformLevelStartup$1.doPrivileged(PlatformLevelStartup.java:76) ~[sonar-server-6.1.jar:na]
    at org.sonar.server.user.DoPrivileged.execute(DoPrivileged.java:44) ~[sonar-server-6.1.jar:na]
    at org.sonar.server.platform.platformlevel.PlatformLevelStartup.start(PlatformLevelStartup.java:73) ~[sonar-server-6.1.jar:na]
    at org.sonar.server.platform.Platform.executeStartupTasks(Platform.java:201) ~[sonar-server-6.1.jar:na]
    at org.sonar.server.platform.Platform.doStart(Platform.java:114) ~[sonar-server-6.1.jar:na]
    at org.sonar.server.platform.Platform.doStart(Platform.java:99) ~[sonar-server-6.1.jar:na]
    at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:45) ~[sonar-server-6.1.jar:na]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) [tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) [tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) [tomcat-embed-core-8.0.32.jar:8.0.32]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [tomcat-embed-core-8.0.32.jar:8.0.32]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_66]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_66]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_66]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66]
Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.server.rule.RuleDefinitionsLoader
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69) ~[sonar-core-6.1.jar:na]
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:621) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.containers.ImmutablePicoContainer.getComponent(ImmutablePicoContainer.java:40) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:718) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) ~[picocontainer-2.15.jar:na]
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67) ~[sonar-core-6.1.jar:na]
    ... 34 common frames omitted
Caused by: java.lang.IllegalStateException: Unable to load component class com.pablissimo.sonar.TsRulesDefinition
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69) ~[sonar-core-6.1.jar:na]
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:621) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.parameters.CollectionComponentParameter.getArrayInstance(CollectionComponentParameter.java:334) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.parameters.CollectionComponentParameter.access$100(CollectionComponentParameter.java:49) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.parameters.CollectionComponentParameter$1.resolveInstance(CollectionComponentParameter.java:139) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:141) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) ~[picocontainer-2.15.jar:na]
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67) ~[sonar-core-6.1.jar:na]
    ... 39 common frames omitted
Caused by: java.lang.IllegalArgumentException: Multiple entries with same key: sonar.forceAuthentication=true and sonar.forceAuthentication=false
    at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150) ~[guava-18.0.jar:na]
    at com.google.common.collect.RegularImmutableMap.checkNoConflictInBucket(RegularImmutableMap.java:104) ~[guava-18.0.jar:na]
    at com.google.common.collect.RegularImmutableMap.<init>(RegularImmutableMap.java:70) ~[guava-18.0.jar:na]
    at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:254) ~[guava-18.0.jar:na]
    at org.sonar.server.setting.ThreadLocalSettings.getProperties(ThreadLocalSettings.java:154) ~[sonar-server-6.1.jar:na]
    at org.sonar.api.config.Settings.getKeysStartingWith(Settings.java:495) ~[sonar-plugin-api-6.1.jar:na]
    at com.pablissimo.sonar.TsRulesDefinition.loadCustomRules(TsRulesDefinition.java:62) ~[na:na]
    at com.pablissimo.sonar.TsRulesDefinition.<init>(TsRulesDefinition.java:50) ~[na:na]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_66]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_66]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_66]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_66]
    at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:145) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:342) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) ~[picocontainer-2.15.jar:na]
    at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) ~[picocontainer-2.15.jar:na]
    at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67) ~[sonar-core-6.1.jar:na]
    ... 55 common frames omitted
2016.10.17 09:33:10 ERROR web[][o.a.c.c.StandardContext] One or more listeners failed to start. Full details will be found in the appropriate container log file

leoleovich avatar Oct 17 '16 09:10 leoleovich

Will try to repro tonight, never seen that one before I'm afraid. Presumably 6.0 worked fine?

Pablissimo avatar Oct 17 '16 10:10 Pablissimo

@Pablissimo Yes, 6.0 works fine.

ThYpHo0n avatar Oct 17 '16 10:10 ThYpHo0n

K, thanks - no idea what that setting is, assume that it's something to do with the way we're loading custom properties files to configure rules.

Pablissimo avatar Oct 17 '16 10:10 Pablissimo

FYI the core problem was this error: Caused by: java.lang.IllegalArgumentException: Multiple entries with same key: sonar.forceAuthentication=true and sonar.forceAuthentication=false which was triggered at com.pablissimo.sonar.TsRulesDefinition.loadCustomRules(TsRulesDefinition.java:62) ~[na:na] due to the fact that at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150) ~[guava-18.0.jar:na] complained. I don't know why this problem don't occur with 6.0

ThYpHo0n avatar Oct 20 '16 08:10 ThYpHo0n

Caused by: java.lang.IllegalArgumentException: Multiple entries with same key: sonar.forceAuthentication=true and sonar.forceAuthentication=true

Come on, this is just wrong :)

leoleovich avatar Oct 20 '16 10:10 leoleovich

Haven't had a chance to root cause it yet (I have a full-time job that isn't this...) but it's not a key that should be in the tslint.properties file and isn't one I've seen before. And the line it's blowing up on isn't actually insensible - it's a Sonar API method that's detonating in getKeysStartingWith, so will need to dig into that.

Pablissimo avatar Oct 20 '16 10:10 Pablissimo

Was this an upgrade? I've just done the following and cannot repro:

  • Installed 6.1 on Windows 7 x64
  • Installed SonarTsPlugin 0.93
  • Ran analysis with sonar-runner (though also ran it with sonar-scanner for kicks)
  • No errors

I'd be searching your install folders for the string sonar.forceAuthentication and seeing if there's been a merge there that's gone wrong during upgrade (if you upgraded in-place). I've seen similar oddities with an upgrade on Linux before but for now I can't manage to get this to repro.

Pablissimo avatar Oct 26 '16 17:10 Pablissimo

Yes, we had upgrade on linux. So far we found workaround to remove sonar.forceAuthentication from config file and set it in web interface. Then plugin works fine. But with this option in config file (and yes, I greped while dir, there is only 1 result) it crashes. I think it somehow gets it from Database or wherever option from web-interface is stored.

leoleovich avatar Oct 28 '16 09:10 leoleovich

I face the same issue, it seems that TSPlugin is conflicting with LDAP plugin, this error message occurs when trying to run with TSPlugin installed :

Multiple entries with same key: sonar.forceAuthentication=true and sonar.forceAuthentication=true

Here is the full trace :

java.lang.IllegalStateException: Unable to load component class org.sonar.server.qualityprofile.ws.QProfilesWs at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69) ~[sonar-core-6.1.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:621) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter.getArrayInstance(CollectionComponentParameter.java:334) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter.access$100(CollectionComponentParameter.java:49) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter$1.resolveInstance(CollectionComponentParameter.java:139) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:141) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.instantiateComponentAsIsStartable(DefaultPicoContainer.java:1034) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.addAdapterIfStartable(DefaultPicoContainer.java:1026) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1003) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:767) ~[picocontainer-2.15.jar:na] at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:141) ~[sonar-core-6.1.jar:na] at org.sonar.server.platform.platformlevel.PlatformLevel.start(PlatformLevel.java:88) ~[sonar-server-6.1.jar:na] at org.sonar.server.platform.platformlevel.PlatformLevel4.start(PlatformLevel4.java:613) ~[sonar-server-6.1.jar:na] at org.sonar.server.platform.Platform.start(Platform.java:216) ~[sonar-server-6.1.jar:na] at org.sonar.server.platform.Platform.startLevel34Containers(Platform.java:190) ~[sonar-server-6.1.jar:na] at org.sonar.server.platform.Platform.doStart(Platform.java:113) ~[sonar-server-6.1.jar:na] at org.sonar.server.platform.Platform.doStart(Platform.java:99) ~[sonar-server-6.1.jar:na] at org.sonar.server.platform.web.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:45) ~[sonar-server-6.1.jar:na] at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) [tomcat-embed-core-8.0.32.jar:8.0.32] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) [tomcat-embed-core-8.0.32.jar:8.0.32] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_66] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_66] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_66] at java.lang.Thread.run(Unknown Source) [na:1.8.0_66] Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.server.qualityprofile.ws.CreateAction at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69) ~[sonar-core-6.1.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:621) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter.getArrayInstance(CollectionComponentParameter.java:334) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter.access$100(CollectionComponentParameter.java:49) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter$1.resolveInstance(CollectionComponentParameter.java:139) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:141) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) ~[picocontainer-2.15.jar:na] at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67) ~[sonar-core-6.1.jar:na] ... 34 common frames omitted Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.server.qualityprofile.QProfileExporters at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69) ~[sonar-core-6.1.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) ~[picocontainer-2.15.jar:na] at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67) ~[sonar-core-6.1.jar:na] ... 50 common frames omitted Caused by: java.lang.IllegalStateException: Unable to load component class org.sonar.plugins.csharp.RoslynProfileExporter at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69) ~[sonar-core-6.1.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:621) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter.getArrayInstance(CollectionComponentParameter.java:334) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter.access$100(CollectionComponentParameter.java:49) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter$1.resolveInstance(CollectionComponentParameter.java:139) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:141) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) ~[picocontainer-2.15.jar:na] at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67) ~[sonar-core-6.1.jar:na] ... 64 common frames omitted Caused by: java.lang.IllegalStateException: Unable to load component class com.pablissimo.sonar.TsRulesDefinition at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:69) ~[sonar-core-6.1.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:621) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter.getArrayInstance(CollectionComponentParameter.java:334) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter.access$100(CollectionComponentParameter.java:49) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.CollectionComponentParameter$1.resolveInstance(CollectionComponentParameter.java:139) ~[picocontainer-2.15.jar:na] at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:141) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:78) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:309) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) ~[picocontainer-2.15.jar:na] at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67) ~[sonar-core-6.1.jar:na] ... 80 common frames omitted Caused by: java.lang.IllegalArgumentException: Multiple entries with same key: sonar.forceAuthentication=true and sonar.forceAuthentication=true at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150) ~[guava-18.0.jar:na] at com.google.common.collect.RegularImmutableMap.checkNoConflictInBucket(RegularImmutableMap.java:104) ~[guava-18.0.jar:na] at com.google.common.collect.RegularImmutableMap.(RegularImmutableMap.java:70) ~[guava-18.0.jar:na] at com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:254) ~[guava-18.0.jar:na] at org.sonar.server.setting.ThreadLocalSettings.getProperties(ThreadLocalSettings.java:154) ~[sonar-server-6.1.jar:na] at org.sonar.api.config.Settings.getKeysStartingWith(Settings.java:495) ~[sonar-plugin-api-6.1.jar:na] at com.pablissimo.sonar.TsRulesDefinition.loadCustomRules(TsRulesDefinition.java:63) ~[na:na] at com.pablissimo.sonar.TsRulesDefinition.(TsRulesDefinition.java:51) ~[na:na] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_66] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_66] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_66] at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_66] at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:145) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:342) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:270) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:364) ~[picocontainer-2.15.jar:na] at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.15.jar:na] at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:699) ~[picocontainer-2.15.jar:na] at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:647) ~[picocontainer-2.15.jar:na] at org.sonar.core.platform.ComponentContainer$ExtendedDefaultPicoContainer.getComponent(ComponentContainer.java:67) ~[sonar-core-6.1.jar:na] ... 96 common frames omitted

aubertaa avatar Jan 03 '17 09:01 aubertaa

So the thing that's blowing up is the call into the SonarQube API to request all settings that start with a given key, which doesn't seem to handle the case when a key is redefined (org.sonar.api.config.Settings.getKeysStartingWith(Settings.java:495))

The SonarTsPlugin doesn't define that key at all, so I can only assume that it's both stored on the server somewhere (or registered by the LDAP plugin) and exists in the server-wide configuration file for the installation. I can try to recode the plugin to discover rules a different way (and excellent work in narrowing down the thing that it's conflicting with, btw - very helpful) but ultimately I'm wondering if it's actually an issue with the LDAP plugin.

Shall investigate regardless.

Pablissimo avatar Jan 03 '17 10:01 Pablissimo

Hey Pablissimo, Do we have any new regarding this situation? We are facing this exact issue when executing our docker Sonar with the LDAP and SonatTSPlugin together. Have you made any progress on this subject? Thanks for the info.

cenarome avatar May 24 '17 10:05 cenarome

Hi there, I run into the very same issue, running 6.6 latest My original setup also did include LDAP but I then did some more testing. I removed every plugin, stripped down the config file to the bare minimum (baseurl+jdbc), downloaded the plugin and restarted... that worked! 👍 So then I simply uncommented the sonar.forceAuthentication=true and restarted. That failed big time with the very same error message about multiple entries of that configuration key (both set to true in my case). In fact, I believe LDAP might not have anything to do with it as I restored my full config - including LDAP - downloaded the LDAP plugin while commenting back out sonar.forceAuthentication=true and that did work fine as well. Looks to me like the issue may lie with sonar.forceAuthentication=true simply being specified in sonar.properties. Comment it out - with or without LDAP - it works fine.

== EDIT =

To be entirely accurate, I ALSO had to comment out another property in sonar.properties to get it to work - namely sonar.lf.logoUrl - here are the properties I specify explicitly within sonar.properties :

sonar.core.serverBaseURL
sonar.jdbc.username
sonar.jdbc.password
sonar.jdbc.url
#sonar.forceAuthentication
sonar.security.realm
ldap.url
ldap.bindDn
ldap.bindPassword
ldap.user.baseDn
ldap.user.request
ldap.user.realNameAttribute
ldap.user.emailAttribute
ldap.group.baseDn
ldap.group.request
#sonar.lf.logoUrl

Seems to me both these properties are pushed into the DB upon initial launch, so they do not actually need to be specifed upon subsequent restarts (or upon starting a new instance which attaches to the pre-existing DB already holding these settings).

So that kind of explains the multiple entries error message (i.e. sonar.properties + JDBC) , but then again, this is the only plugin triggering such odd behaviour.

However, this entirely rules out the lead of LDAP plugin incompatibility since as you can see, my config does include LDAP and now works fine with Pablissimo's plugin (along with several other core plugins).

For the sake of completeness, I'm running LDAP v2.2 (build 608).

MattMacD78 avatar Oct 31 '17 22:10 MattMacD78