Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when running ignis-submit in wsl2 #3

Open
sh0rt2l0ng opened this issue Feb 20, 2024 · 7 comments
Open

Error when running ignis-submit in wsl2 #3

sh0rt2l0ng opened this issue Feb 20, 2024 · 7 comments

Comments

@sh0rt2l0ng
Copy link

This should use jre and lib in ignis folder as I understand. But why it still report this error?

Exception in thread "main" java.lang.NoSuchMethodError: 'void com.fasterxml.jackson.core.JsonGenerator.writeStartArray(java.lang.Object, int)' at com.fasterxml.jackson.databind.ser.impl.StringArraySerializer.serialize(StringArraySerializer.java:170) at com.fasterxml.jackson.databind.ser.impl.StringArraySerializer.serialize(StringArraySerializer.java:22) 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.ObjectMapper._configAndWriteValue(ObjectMapper.java:4110) at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsBytes(ObjectMapper.java:3437) at com.github.dockerjava.core.DefaultInvocationBuilder.encode(DefaultInvocationBuilder.java:292) at com.github.dockerjava.core.DefaultInvocationBuilder.post(DefaultInvocationBuilder.java:121) at com.github.dockerjava.core.exec.CreateContainerCmdExec.execute(CreateContainerCmdExec.java:37) at com.github.dockerjava.core.exec.CreateContainerCmdExec.execute(CreateContainerCmdExec.java:13) at com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21) at com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35) at com.github.dockerjava.core.command.CreateContainerCmdImpl.exec(CreateContainerCmdImpl.java:609) at org.ignis.scheduler.Docker.createDriverContainer(Docker.java:318) at org.ignis.submitter.Submit.call(Submit.java:186) at org.ignis.submitter.Submit.call(Submit.java:46) at picocli.CommandLine.executeUserObject(CommandLine.java:1953) at picocli.CommandLine.access$1300(CommandLine.java:145) at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352) at picocli.CommandLine$RunLast.handle(CommandLine.java:2346) at picocli.CommandLine$RunLast.handle(CommandLine.java:2311) at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179) at picocli.CommandLine.execute(CommandLine.java:2078) at org.ignis.submitter.Submit.main(Submit.java:284)

@cesarpomar
Copy link
Member

The error you're seeing, java.lang.NoSuchMethodError, indicates that the method writeStartArray(Object, int) is not found in the class com.fasterxml.jackson.core.JsonGenerator. This suggests that there's a discrepancy between the versions of the libraries you're using.

Are you running the submit within a container or on your local machine? In the latter case, could there be any other libraries in the CLASSPATH that might interfere with those from IgnisHPC?

@sh0rt2l0ng
Copy link
Author

sh0rt2l0ng commented Feb 20, 2024

I am just following the guide and run like this.

./ignis/bin/ignis-submit ignishpc/full bigseqkit

I created a clean environment for bigseqkit with conda. Everything is fine until running into this. Not sure what libraries you are mentioning. Contents in submit script:

#!/bin/bash #script is inside IGNIS_HOME so if it is not set, we can discover it. if [[ -z "${IGNIS_HOME}" ]]; then export IGNIS_HOME=$(builtin cd $(dirname "$0"); cd ..; pwd) fi exec ${IGNIS_HOME}/backend/jre/bin/java -cp "${IGNIS_HOME}/lib/java/*" org.ignis.submitter.Submit "$@"

Do I miss anything here?

Is this because of incompatible jackson lib in wsl2? This is the wsl2 version.
Package: libjackson-json-java Version: 1.9.13-1

From submit script, I just thought bigseqkit should use own jre and lib in ${IGNIS_HOME}. But maybe I am wrong.

@cesarpomar
Copy link
Member

The image "ignishpc/full", did you build it yourself?

I downloaded the latest version from DockerHub and here are the Java libraries (ls ./ignis/lib/java/jackson*):

jackson-annotations-2.10.3.jar jackson-core-2.10.3.jar jackson-databind-2.10.3.jar jackson-dataformat-cbor-2.6.7.jar jackson-datatype-jdk8-2.9.9.jar jackson-annotations-2.9.9.jar jackson-core-2.9.9.jar jackson-databind-2.9.9.3.jar jackson-datatype-guava-2.9.9.jar jackson-datatype-protobuf-0.9.10-jackson2.9-proto3.jar

The version you mentioned isn't included.

@sh0rt2l0ng
Copy link
Author

I just pulled the docker not built it. What I mean is that whether the jackson version in wsl2 will affect ignis. The exported lib dir contains those you list here.

jackson-annotations-2.10.3.jar jackson-core-2.10.3.jar jackson-databind-2.10.3.jar jackson-dataformat-cbor-2.6.7.jar jackson-datatype-jdk8-2.9.9.jar jackson-annotations-2.9.9.jar jackson-core-2.9.9.jar jackson-databind-2.9.9.3.jar jackson-datatype-guava-2.9.9.jar jackson-datatype-protobuf-0.9.10-jackson2.9-proto3.jar

I assumed ignis should use them instead of jackson lib in wsl2, right?

@cesarpomar
Copy link
Member

Yes, to avoid incompatibilities, you shouldn't add any extra libraries. The error you showed is because you're trying to use jackson-core-2.10.3.jar with libjackson-json-java-1.*. Remove 1.9.13-1 from your WSL2's CLASSPATH, and the issue should disappear.

@sh0rt2l0ng
Copy link
Author

My WSL2's CLASSPATH is empty. I don't think we are using anything other than those in $IGNIS_HOME/lib/java/. But the error is still the same. Any other thing needs to be set in order to run this tool? Thanks.

@cesarpomar
Copy link
Member

Is this because of incompatible jackson lib in wsl2? This is the wsl2 version.
Package: libjackson-json-java Version: 1.9.13-1

Where is that Java library located then?

As you can see in the stack trace, the error indicates that the method com.fasterxml.jackson.core.JsonGenerator.writeStartArray(java.lang.Object, int) does not exist. And it matches with that library because if we look at the Javadoc for version 1.9.13 (link), we can see that this method doesn't exist with those parameters, whereas if we look at version 2.10 (link), we see that it does exist.

Can you remove that library and try again?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants