TeamCity 2020.2.2 agent log errors
axel3rd opened this issue ยท 8 comments
Issue for #59 PR
On TeamCity 2020.2.2, v1.4 of plugin provide some errors on agent side initialization.
WIP: Testing v1.5-SNAPSHOT (cloud-openstack.zip) on some TeamCity v2020.2.2 before releasing v1.5.
WIP: Testing v1.5-SNAPSHOT (cloud-openstack.zip) on some TeamCity v2020.2.2 before releasing v1.5.
Even with this SNAPSHOT the log seems always present ๐ค
[2021-02-25 14:25:52,557] WARN - inLoader$TeamCityPluginContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jetbrains.buildServer.clouds.openstack.OpenstackAgentProperties#0' defined in Byte array resource [plugin: cloud-openstack-agent#cloud-openstack-agent-1.4.jar!/META-INF/build-agent-plugin-cloud-openstack.xml]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'jetbrains.buildServer.util.EventDispatcher<jetbrains.buildServer.agent.AgentLifeCycleAdapter>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
[2021-02-25 14:25:52,588] ERROR - gins.spring.SpringPluginLoader - Error loading plugin 'cloud-openstack-agent': Failed to initialize spring context: Error creating bean with name 'jetbrains.buildServer.clouds.openstack.OpenstackAgentProperties#0' defined in Byte array resource [plugin: cloud-openstack-agent#cloud-openstack-agent-1.4.jar!/META-INF/build-agent-plugin-cloud-openstack.xml]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'jetbrains.buildServer.util.EventDispatcher<jetbrains.buildServer.agent.AgentLifeCycleAdapter>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jetbrains.buildServer.clouds.openstack.OpenstackAgentProperties#0' defined in Byte array resource [plugin: cloud-openstack-agent#cloud-openstack-agent-1.4.jar!/META-INF/build-agent-plugin-cloud-openstack.xml]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'jetbrains.buildServer.util.EventDispatcher<jetbrains.buildServer.agent.AgentLifeCycleAdapter>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1196)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1098)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:757)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
at jetbrains.buildServer.plugins.spring.SpringPluginLoader.pluginClassesLoaded(SpringPluginLoader.java:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at jetbrains.buildServer.util.EventDispatcher$3.run(EventDispatcher.java:138)
at jetbrains.buildServer.util.NamedThreadFactory.executeWithNewThreadName(NamedThreadFactory.java:76)
at jetbrains.buildServer.util.EventDispatcher.dispatch(EventDispatcher.java:132)
at jetbrains.buildServer.util.EventDispatcher$2.invoke(EventDispatcher.java:82)
at com.sun.proxy.$Proxy11.pluginClassesLoaded(Unknown Source)
at jetbrains.buildServer.plugins.PluginManagerImpl$5.visitPlugin(PluginManagerImpl.java:422)
at jetbrains.buildServer.plugins.PluginsCollection$1.run(PluginsCollection.java:98)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
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)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'jetbrains.buildServer.util.EventDispatcher<jetbrains.buildServer.agent.AgentLifeCycleAdapter>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1490)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1101)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1063)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
... 29 more
It occurs on agent previously builded/started on TeamCity 2020.1. Perhaps the "agent update" fixes the problem, but the name of agent is not correctly updated. In this case.
Error synthesis:
Error creating bean with name 'jetbrains.buildServer.clouds.openstack.OpenstackAgentProperties#0'
Unsatisfied dependency expressed through constructor parameter 1
No qualifying bean of type 'jetbrains.buildServer.util.EventDispatcher<jetbrains.buildServer.agent.AgentLifeCycleAdapter>' available
=> Potential problem with second arg of constructor:
But no explicit change on jetbrains.buildServer.agent.AgentLifeCycleListener (agent-api-2020.2.2.jar
), always says:
* You should not implement this interface directly in your code. Use {@link AgentLifeCycleAdapter} instead
* <br />
* To subscribe to this event listener you should use
* Spring bean of type {@link jetbrains.buildServer.util.EventDispatcher} of {@link AgentLifeCycleListener }
* and call {@link jetbrains.buildServer.util.EventDispatcher#addListener(java.util.EventListener)}}
* method.
@paksv : Sorry to call you like that ๐๐ , but if there is an evident change between TeamCity 2020.1 -> 2020.2 about that ... I'll take it ๐.
@axel3rd , np, jetbrains.buildServer.agent.AgentLifeCycleAdapter is a class (i.e. adapter), but EventDispatcher requires an interface, so you need to declare a constructor parameter as EventDispatcher<AgentLifeCycleListener>.
But when you add a new listener you'd rather want to use Adapter (otherwise you'll have to implement a ton of methods, but this is allowed too)
@captain-bamboo : FYI LGTM with the cloud-openstack.zip (last 1.5-SNAPSHOT), release will coming soon.