micronaut-aws
micronaut-aws copied to clipboard
Enhanced Dynmodb Compatibility Issue with graalvm and micronaut framework
Expected Behavior
Micronaut should create object for Pojos annotaed with @Dynmodbbean
Actual Behaviour
BeanContext.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.ikano.pp.pricematrix.clients.$PnpPersistenceClient$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.loadContextScopeBean(DefaultBeanContext.java:2746)
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1915)
... 14 more
Caused by: java.lang.IllegalArgumentException: Class 'class com.xxxx.xx.xxxxxx.model.v1.Product' appears to have no default constructor thus cannot be used with the BeanTableSchema
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.newObjectSupplierForClass(BeanTableSchema.java:377)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.createStaticTableSchema(BeanTableSchema.java:181)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.create(BeanTableSchema.java:137)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.create(BeanTableSchema.java:128)
at software.amazon.awssdk.enhanced.dynamodb.TableSchema.fromBean(TableSchema.java:83)
at com.ikano.pp.pricematrix.clients.PnpDynamoDbConfig.initWithTablePrefix(PnpDynamoDbConfig.java:52)
at com.ikano.pp.pricematrix.clients.PnpDynamoDbConfig.
Steps To Reproduce
No response
Environment Information
No response
Example Application
No response
Version
3.9.1
I tried using @ReflectiveAccess on annotation on my pojo but i still got the issue mentioned on https://github.com/oracle/graal/issues/3386. I am not sure when this issue will be fixed?
I am using graalvm version 22.3.2 and trying to deploy native image build using micronaut framework, graalvm and enhanced dynmodb on aws lambda.
.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.ikano.pp.pricematrix.clients.$PnpPersistenceClient$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.loadContextScopeBean(DefaultBeanContext.java:2746)
at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1915)
... 14 more
Caused by: java.lang.IllegalArgumentException: Failed to generate method handle.
at software.amazon.awssdk.enhanced.dynamodb.internal.mapper.LambdaToMethodBridgeBuilder.build(LambdaToMethodBridgeBuilder.java:92)
at software.amazon.awssdk.enhanced.dynamodb.internal.mapper.ObjectConstructor.create(ObjectConstructor.java:37)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.newObjectSupplierForClass(BeanTableSchema.java:382)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.createStaticTableSchema(BeanTableSchema.java:189)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.create(BeanTableSchema.java:145)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.lambda$create$0(BeanTableSchema.java:135)
at [email protected]/java.util.Map.computeIfAbsent(Map.java:1003)
at [email protected]/java.util.Collections$SynchronizedMap.computeIfAbsent(Collections.java:2682)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.create(BeanTableSchema.java:135)
at software.amazon.awssdk.enhanced.dynamodb.TableSchema.fromBean(TableSchema.java:86)
at com.ikano.pp.pricematrix.clients.PnpDynamoDbConfig.initWithTablePrefix(PnpDynamoDbConfig.java:52)
at com.ikano.pp.pricematrix.clients.PnpDynamoDbConfig.
END RequestId: 7022019a-a04a-465e-bbc7-65caf822e415 REPORT RequestId: 7022019a-a04a-465e-bbc7-65caf822e415 Duration: 3024.90 ms Billed Duration: 3000 ms Memory Size: 128 MB Max Memory Used: 49 MB
@amitmelbourne do you have a sample app?
Hi Micronaut-Projects/Micronaut-Aws,
We decided that we are not going with graal. Simple micronaut app is working.
But we have some issues with micronaut_environments.
When we deploy a micronaut app on aws lambda which tries to access the AWS Parameter store. We are getting below error.
{ "errorMessage": "Error starting Micronaut container: Read timeout occurred reading distributed configuration from client: compositeConfigurationClient(AWS Parameter Store)", "errorType": "com.amazonaws.serverless.exceptions.ContainerInitializationException" }
We tried passing ec2,lambda,cloud and function as environment under aws lambda environment configurations.
I am attaching sample files for your reference.
Thanks, Amit Pandey
On Thu, May 18, 2023 at 1:04 PM Sergio del Amo @.***> wrote:
@amitmelbourne https://github.com/amitmelbourne do you have a sample app?
— Reply to this email directly, view it on GitHub https://github.com/micronaut-projects/micronaut-aws/issues/1712#issuecomment-1552649713, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALGQO33V64HGC73LE46Y67LXGXGJVANCNFSM6AAAAAAX56OI5I . You are receiving this because you were mentioned.Message ID: @.***>
Hi Team @graemerocher is there any update on the above issue.
I mentioned adding Enhanced dynamodb beans https://github.com/micronaut-projects/micronaut-aws/pull/1664. Not sure if our solution is the best either as I just found https://github.com/agorapulse/micronaut-aws-sdk