Skip to content

Jackson afterburner module is not compatible with Java11 and GraalVM native image #428

Open
@mokmnovatti

Description

@mokmnovatti

Not sure i'm missing something or not but Jackson AfterBurner module is not compatible with java11 and throwing following error when it is compiled with graalvm-21.01 native image

Error loading class my.service.StreamLambdaHandler: Target_java_lang_ClassLoader.getClassLoadingLock(String): com.oracle.svm.core.jdk.UnsupportedFeatureError
--
com.oracle.svm.core.jdk.UnsupportedFeatureError: Target_java_lang_ClassLoader.getClassLoadingLock(String)
at com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:88)
at java.lang.ClassLoader.getClassLoadingLock(ClassLoader.java:259)
at com.fasterxml.jackson.module.afterburner.util.MyClassLoader.loadAndResolve(MyClassLoader.java:79)
at com.fasterxml.jackson.module.afterburner.deser.PropertyMutatorCollector.generateMutatorClass(PropertyMutatorCollector.java:176)
at com.fasterxml.jackson.module.afterburner.deser.PropertyMutatorCollector.buildMutator(PropertyMutatorCollector.java:102)
at com.fasterxml.jackson.module.afterburner.deser.DeserializerModifier.updateBuilder(DeserializerModifier.java:65)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:287)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:150)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:414)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:349)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:591)
at com.fasterxml.jackson.databind.ObjectReader._prefetchRootDeserializer(ObjectReader.java:2340)
at com.fasterxml.jackson.databind.ObjectReader.<init>(ObjectReader.java:192)
at com.fasterxml.jackson.databind.ObjectMapper._newReader(ObjectMapper.java:736)
at com.fasterxml.jackson.databind.ObjectMapper.readerFor(ObjectMapper.java:4051)
at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.<init>(LambdaContainerHandler.java:107)
at com.amazonaws.serverless.proxy.internal.LambdaContainerHandler.<init>(LambdaContainerHandler.java:118)
at com.amazonaws.serverless.proxy.internal.servlet.AwsLambdaServletContainerHandler.<init>(AwsLambdaServletContainerHandler.java:75)
at com.amazonaws.serverless.proxy.spring.SpringBootLambdaContainerHandler.<init>(SpringBootLambdaContainerHandler.java:135)
at com.amazonaws.serverless.proxy.spring.SpringBootProxyHandlerBuilder.build(SpringBootProxyHandlerBuilder.java:61)
at com.amazonaws.serverless.proxy.spring.SpringBootProxyHandlerBuilder.buildAndInitialize(SpringBootProxyHandlerBuilder.java:80)
at com.amazonaws.serverless.proxy.spring.SpringBootLambdaContainerHandler.getAwsProxyHandler(SpringBootLambdaContainerHandler.java:93)
at my.service.StreamLambdaHandler.<clinit>(StreamLambdaHandler.java:27)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:375)
at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:295)
at java.lang.Class.ensureInitialized(DynamicHub.java:548)
at com.oracle.svm.core.hub.ClassForNameSupport.forNameOrNull(ClassForNameSupport.java:63)
at com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:69)
at java.lang.Class.forName(DynamicHub.java:1319)

https://github.com/awslabs/aws-serverless-java-container/blob/a72bad46a263d07d71fc2765be94899bfddbba11/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/LambdaContainerHandler.java#L88

but when the afterburner module is removed it is working fine !

might be good idea to migrate to https://github.com/stevenschlansker/jackson-blackbird which is promising with Java11

Find the code at https://github.com/mokmnovatti/my-service

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions