aws / aws/aws-sdk-java-v2

dynamodb-enhanced cannot be used with GraalVM 21.1

Offen
#2,445 12 Kommentare 5 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
dynamodb-enhanced feature-request graalvm p3
Vorherrschende Sprache
Java
Sterne
2.6k
Forks
1k
Ø Merge
2 T. 9 Std.
Gemergte PRs (30 T.)
51

Beschreibung

Hi,

I'm trying to compile dynamodb-enhanced client with Graalvm 21.1 and awssdk.version=2.16.50
Here the code:
` DynamoDbTable dynamoDbTable = dynamoDbEnhancedClient.table(TABLE_NAME, TableSchema.fromBean(Book.class));`

Reflection config doesn't help. I generated native-image artifacts with -agentlib: but it still doesn't help.
GraalVM 21.1 supports Method Handler, I hope it can be fixed.
https://github.com/aws/aws-sdk-java-v2/blob/master/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/mapper/LambdaToMethodBridgeBuilder.java#L76

Error:
`Exception in thread "main" java.lang.ExceptionInInitializerError
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:315)
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:361)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.createStaticTableSchema(BeanTableSchema.java:172)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.create(BeanTableSchema.java:129)
at software.amazon.awssdk.enhanced.dynamodb.mapper.BeanTableSchema.create(BeanTableSchema.java:121)
at software.amazon.awssdk.enhanced.dynamodb.TableSchema.fromBean(TableSchema.java:81)
at com.filichkin.blog.lambda.v3.handler.test.Main.initDispatcher(Main.java:39)`

No problem with simple dynamoDb client, it can be compiled with GraalVM

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginnen Sie bei LambdaToMethodBridgeBuilder.java am fehlschlagenden Build-Aufruf und verfolgen Sie dann ObjectConstructor und BeanTableSchema anhand des bereitgestellten Stack Traces zurück. Reproduzieren Sie den native-image-Build von TableSchema.fromBean(Book.class) mit GraalVM 21.1 und AWS SDK 2.16.50; abgeschlossen ist die Aufgabe, wenn der enhanced DynamoDB client ohne die method-handle exception kompiliert und initialisiert wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.