Skip to content

Runtime reflection error when using JSON output format #504

@ejseqera

Description

@ejseqera

When trying to list organizations or workspaces with JSON output format (tw -o json organizations list), the command fails with a GraalVM native-image reflection registration error.

The command fails with the following error:

Exception in thread "main" org.graalvm.nativeimage.MissingReflectionRegistrationError: The program tried to reflectively invoke method public java.lang.String io.seqera.tower.model.OrgType.getValue() without it being registered for runtime reflection. Add public java.lang.String io.seqera.tower.model.OrgType.getValue() to the reflection metadata to solve this problem. See https://www.graalvm.org/latest/reference-manual/native-image/metadata/#reflection for help.
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.reflect.MissingReflectionRegistrationUtils.forQueriedOnlyExecutable(MissingReflectionRegistrationUtils.java:83)
        at java.base@21.0.6/java.lang.reflect.Method.acquireMethodAccessor(Method.java:77)
        at java.base@21.0.6/java.lang.reflect.Method.invoke(Method.java:577)
        at com.fasterxml.jackson.databind.introspect.AnnotatedMethod.getValue(AnnotatedMethod.java:183)
        at com.fasterxml.jackson.databind.ser.std.JsonValueSerializer.serialize(JsonValueSerializer.java:166)
        at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
        at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:722)
        at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:166)
        at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
        at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
        at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
        at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
        at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:722)
        at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:166)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
        at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
        at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1433)
        at com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1135)
        at com.fasterxml.jackson.databind.ObjectWriter.writeValueAsString(ObjectWriter.java:1005)
        at io.seqera.tower.cli.utils.JsonHelper.prettyJson(JsonHelper.java:29)
        at io.seqera.tower.cli.utils.ResponseHelper.outputFormat(ResponseHelper.java:52)
        at io.seqera.tower.cli.commands.AbstractApiCmd.call(AbstractApiCmd.java:450)
        at io.seqera.tower.cli.commands.AbstractApiCmd.call(AbstractApiCmd.java:70)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
        at picocli.CommandLine.execute(CommandLine.java:2078)
        at io.seqera.tower.cli.Tower.main(Tower.java:103)
        at java.base@21.0.6/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)

Version info:

tw info

    Details
    -------------------------+-----------------------------
     Tower API endpoint      | https://api.cloud.seqera.io 
     Tower API version       | 1.37.0                      
     Tower version           | 25.1.0-cycle5               
     CLI version             | 0.11.2 (2a4e8d5)            
     CLI minimum API version | 1.38.0                      
     Authenticated user      | eshajoshi                   

    System health status
    ---------------------------------------+--------
     Remote API server connection check    | OK     
     Tower API version check               | FAILED 
     Authentication API credential's token | OK     

    Tower API version is 1.37.0 while the minimum required version to be fully compatible is 1.38.0
  • JDK version: 21.0.6
  • OS: MacOS M2

Metadata

Metadata

Assignees

No one assigned

    Labels

    squad-coreOwned by Platform Core Squad

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions