gravitee-io / issues

Gravitee.io - API Platform - Issues
64 stars 26 forks source link

[3.20.22] API pod wont start when api.analytics.type is set to none #9375

Closed glorytiger closed 9 months ago

glorytiger commented 10 months ago

Describe the bug

API pod wont start when api.analytics.type is set to none in values.yaml.j2

To Reproduce

Set the value described above to none and deploy

Expected behaviour

API pod should start

Current behaviour

API pod won't start

Useful information

Stack trace from API pod

09:35:07.815 [graviteeio-node] ERROR i.g.r.a.s.node.GraviteeApisNode - An error occurred while starting component class io.gravitee.node.monitoring.healthcheck.NodeHealthCheckService java.lang.IllegalArgumentException: Cannot instantiate interface io.gravitee.node.api.healthcheck.Probe : io.gravitee.rest.api.repository.healthcheck.AnalyticsRepositoryProbe at io.gravitee.common.spring.factory.SpringFactoriesLoader.createSpringFactoriesInstances(SpringFactoriesLoader.java:96) at io.gravitee.common.spring.factory.SpringFactoriesLoader.getSpringFactoriesInstances(SpringFactoriesLoader.java:70) at io.gravitee.common.spring.factory.SpringFactoriesLoader.getFactoriesInstances(SpringFactoriesLoader.java:56) at io.gravitee.node.monitoring.healthcheck.ProbeManagerImpl.getProbes(ProbeManagerImpl.java:41) at io.gravitee.node.monitoring.healthcheck.NodeHealthCheckService.doStart(NodeHealthCheckService.java:76) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at io.gravitee.node.container.AbstractNode.startComponents(AbstractNode.java:178) at io.gravitee.node.container.AbstractNode.doStart(AbstractNode.java:76) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at io.gravitee.node.container.AbstractContainer.doStart(AbstractContainer.java:87) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at io.gravitee.rest.api.standalone.boostrap.Bootstrap.start(Bootstrap.java:155) at io.gravitee.rest.api.standalone.boostrap.Bootstrap.main(Bootstrap.java:164) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'io.gravitee.rest.api.repository.healthcheck.AnalyticsRepositoryProbe': Unsatisfied dependency expressed through field 'analyticsRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.gravitee.repository.analytics.api.AnalyticsRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:

{@org.springframework.beans.factory.annotation.Autowired(required=true)}

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:659)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639)

at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBean(AbstractAutowireCapableBeanFactory.java:343)

at io.gravitee.common.spring.factory.SpringFactoriesLoader.createSpringFactoriesInstances(SpringFactoriesLoader.java:90)

... 16 common frames omitted

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.gravitee.repository.analytics.api.AnalyticsRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1799) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1355) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) ... 22 common frames omitted 09:35:07.816 [graviteeio-node] ERROR i.g.r.a.s.GraviteeApisContainer - An unexpected error occurs while starting Gravitee.io - Rest APIs java.lang.IllegalArgumentException: Cannot instantiate interface io.gravitee.node.api.healthcheck.Probe : io.gravitee.rest.api.repository.healthcheck.AnalyticsRepositoryProbe at io.gravitee.common.spring.factory.SpringFactoriesLoader.createSpringFactoriesInstances(SpringFactoriesLoader.java:96) at io.gravitee.common.spring.factory.SpringFactoriesLoader.getSpringFactoriesInstances(SpringFactoriesLoader.java:70) at io.gravitee.common.spring.factory.SpringFactoriesLoader.getFactoriesInstances(SpringFactoriesLoader.java:56) at io.gravitee.node.monitoring.healthcheck.ProbeManagerImpl.getProbes(ProbeManagerImpl.java:41) at io.gravitee.node.monitoring.healthcheck.NodeHealthCheckService.doStart(NodeHealthCheckService.java:76) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at io.gravitee.node.container.AbstractNode.startComponents(AbstractNode.java:178) at io.gravitee.node.container.AbstractNode.doStart(AbstractNode.java:76) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at io.gravitee.node.container.AbstractContainer.doStart(AbstractContainer.java:87) at io.gravitee.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:32) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at io.gravitee.rest.api.standalone.boostrap.Bootstrap.start(Bootstrap.java:155) at io.gravitee.rest.api.standalone.boostrap.Bootstrap.main(Bootstrap.java:164) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'io.gravitee.rest.api.repository.healthcheck.AnalyticsRepositoryProbe': Unsatisfied dependency expressed through field 'analyticsRepository'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.gravitee.repository.analytics.api.AnalyticsRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:

{@org.springframework.beans.factory.annotation.Autowired(required=true)}

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:659)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639)

at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBean(AbstractAutowireCapableBeanFactory.java:343)

at io.gravitee.common.spring.factory.SpringFactoriesLoader.createSpringFactoriesInstances(SpringFactoriesLoader.java:90)

... 16 common frames omitted

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'io.gravitee.repository.analytics.api.AnalyticsRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1799) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1355) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:656) ... 22 common frames omitted 09:35:07.816 [graviteeio-node] INFO i.g.r.a.s.GraviteeApisContainer - Shutting-down Gravitee.io - Rest APIs... 09:35:07.816 [graviteeio-node] INFO i.g.r.a.s.node.GraviteeApisNode - Gravitee.io - Rest APIs is stopping

Environment

apim 3.20.22, chart 3.20.22

Potential impacts

Unable to run Gravitee without analytics

Dependencies

Deployed via Helm

gaetanmaisse commented 10 months ago

The 3.20.x values are indeed misleading as this feature requires a NoopRepository (https://download.gravitee.io/#graviteeio-apim/plugins/repositories/gravitee-apim-repository-noop/) which is available only for APIM 4.0+

exalate-issue-sync[bot] commented 9 months ago

This issue will be fixed, a new version will be available soon