micronaut-projects / micronaut-object-storage

Micronaut Object Storage provides a uniform API to create, read and delete objects in the major cloud providers.
Apache License 2.0
9 stars 6 forks source link

Application running in OCI fails to initialize ObjectStorage bean #192

Open jhorvath opened 1 year ago

jhorvath commented 1 year ago

Expected Behavior

No response

Actual Behaviour

Application running in OCI fails to initialize ObjectStorage bean until dependency on micronaut-discovery-client is added to the project.

Message: No bean of type [com.oracle.bmc.objectstorage.ObjectStorage] exists. Make sure the bean is not disabled by bean requirements (enable trace logging for 'io.micronaut.context.condition' to check) and if the bean is enabled then ensure the class is declared a bean and annotation processing is enabled (for Java and Kotlin the 'micronaut-inject-java' dependency should be configured as an annotation processor).
Path Taken: new ProfilePicturesController(ObjectStorageOperations objectStorage,HttpHostResolver httpHostResolver) --> new ProfilePicturesController([ObjectStorageOperations objectStorage],HttpHostResolver httpHostResolver) --> new OracleCloudStorageOperations(OracleCloudStorageConfiguration configuration,[ObjectStorage client],RegionProvider regionProvider)
    at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2087)
    at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1297)
    at io.micronaut.objectstorage.oraclecloud.$OracleCloudStorageOperations$Definition.doBuild(Unknown Source)
    at io.micronaut.context.AbstractInitializableBeanDefinition.build(AbstractInitializableBeanDefinition.java:769)
    at io.micronaut.context.BeanDefinitionDelegate.build(BeanDefinitionDelegate.java:158)
    at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
    at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
    at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
    at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
    at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
    at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
    at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
    at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2800)
    at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1617)
    at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:66)
    at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2065)
    at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1297)
    at com.example.$ProfilePicturesController$Definition.build(Unknown Source)
    at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
    at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
    at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
    at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
    at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
    at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
    at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
    at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2853)
    at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1583)
    at io.micronaut.context.DefaultBeanContext$4.getTarget(DefaultBeanContext.java:559)
    at io.micronaut.context.DefaultBeanContext$4.invoke(DefaultBeanContext.java:594)
    at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:303)
    at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:111)
    at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:103)
    at io.micronaut.http.server.RouteExecutor.lambda$executeRoute$14(RouteExecutor.java:659)
    at reactor.core.publisher.FluxDeferContextual.subscribe(FluxDeferContextual.java:49)
    at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62)
    at reactor.core.publisher.FluxSubscribeOn$SubscribeOnSubscriber.run(FluxSubscribeOn.java:194)
    at io.micronaut.reactive.reactor.instrument.ReactorInstrumentation.lambda$init$0(ReactorInstrumentation.java:62)
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
    at io.micronaut.scheduling.instrument.InvocationInstrumenterWrappedCallable.call(InvocationInstrumenterWrappedCallable.java:53)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: io.micronaut.context.exceptions.NoSuchBeanException: No bean of type [com.oracle.bmc.objectstorage.ObjectStorage] exists. Make sure the bean is not disabled by bean requirements (enable trace logging for 'io.micronaut.context.condition' to check) and if the bean is enabled then ensure the class is declared a bean and annotation processing is enabled (for Java and Kotlin the 'micronaut-inject-java' dependency should be configured as an annotation processor).
    at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2805)
    at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1617)
    at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:66)
    at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2065)
    ... 43 common frames omitted`

Steps To Reproduce

  1. Create Micronaut application using launcher, add just Object Storage feature
  2. Create proper policies in OCI
  3. Deploy application to OCI

Environment Information

No response

Example Application

No response

Version

3.8.4

alvarosanchez commented 1 year ago

Did you configure Micronaut Oracle Cloud authentication? In OCI you will likely want instance principal authentication.

See https://micronaut-projects.github.io/micronaut-oracle-cloud/latest/guide/#instance-principals

jhorvath commented 1 year ago

Yes, instance principal was configured.

alvarosanchez commented 1 year ago

Please set io.micronaut.context.condition log level to trace and share logs