Migration from 1.13.3 to 2.0.2 leads to NoSuchMethodError

327 views
Skip to first unread message

Werner Gresshoff

unread,
Jul 19, 2021, 6:39:54 AM7/19/21
to Quarkus Development mailing list
Hello,

I'm trying to migrate a service from Quarkus 1.13.3 to Quarkus 2.0.2 but the build process ends with a NoSuchMethodError:


[ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:2.0.2.Final:build (default) on project datasafe-big-file-transfer: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR]     [error]: Build step io.quarkus.kubernetes.deployment.KubernetesProcessor#build threw an exception: java.lang.NoSuchMethodError: 'io.fabric8.kubernetes.api.model.PersistentVolumeClaimVolumeSourceFluent io.fabric8.kubernetes.api.model.VolumeFluent$PersistentVolumeClaimNested.withNewReadOnly(boolean)'
[ERROR]     at io.dekorate.kubernetes.decorator.AddPvcVolumeDecorator.visit(AddPvcVolumeDecorator.java:37)
[ERROR]     at io.dekorate.kubernetes.decorator.AddPvcVolumeDecorator.visit(AddPvcVolumeDecorator.java:22)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.acceptInternal(BaseFluent.java:106)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:83)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:14)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.acceptInternal(BaseFluent.java:102)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:83)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:14)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.acceptInternal(BaseFluent.java:102)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:83)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:14)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.acceptInternal(BaseFluent.java:102)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:83)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:14)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.acceptInternal(BaseFluent.java:102)
[ERROR]     at io.fabric8.kubernetes.api.builder.BaseFluent.accept(BaseFluent.java:83)
[ERROR]     at io.dekorate.ResourceRegistry.lambda$generate$3(ResourceRegistry.java:178)
[ERROR]     at java.base/java.util.HashMap.forEach(HashMap.java:1336)
[ERROR]     at io.dekorate.ResourceRegistry.generate(ResourceRegistry.java:172)
[ERROR]     at io.dekorate.Session.generate(Session.java:285)
[ERROR]     at io.dekorate.Session.close(Session.java:248)
[ERROR]     at io.quarkus.kubernetes.deployment.KubernetesProcessor.lambda$build$4(KubernetesProcessor.java:162)
[ERROR]     at java.base/java.util.Optional.ifPresent(Optional.java:183)
[ERROR]     at io.quarkus.kubernetes.deployment.KubernetesProcessor.build(KubernetesProcessor.java:120)
[ERROR]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ERROR]     at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:820)
[ERROR]     at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[ERROR]     at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
[ERROR]     at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2442)
[ERROR]     at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1476)
[ERROR]     at java.base/java.lang.Thread.run(Thread.java:829)
[ERROR]     at org.jboss.threads.JBossThread.run(JBossThread.java:501)

My application.yml looks like this:

quarkus:
http:
non-application-root-path: /big-file-transfer/q
resteasy:
path: /big-file-transfer/api/v1
smallrye-openapi:
path: openapi
swagger-ui:
path: swagger-ui
always-include: true
smallrye-health:
root-path: health
ui:
always-include: true
log:
level: INFO
kubernetes-config:
enabled: true
fail-on-missing-config: true
secrets:
~: bft-secret
enabled: true
container-image:
build: true
push: true
group: wwuulb
name: datasafe-big-file-transfer
registry: ulb.wwu.io
kubernetes:
part-of: datasafe
name: big-file-transfer-service
version: 2.0.0
image-pull-secrets: ulbreg
env:
vars:
quarkus-profile: development
resources:
limits:
cpu: 2
memory: 4Gi
requests:
cpu: 2
memory: 4Gi
mounts:
jwt-key-volume:
path: /tls
read-only: true
rdm-bagit:
path: /downloads
read-only: false
secret-volumes:
jwt-key-volume:
secret-name: rdm-tls
read-only: true
pvc-volumes:
rdm-bagit:
claim-name: wwu-rdm-pvc
read-only: false

I'm sorry, the editor removed the formatting :(

Best regards
Werner

Georgios Andrianakis

unread,
Jul 19, 2021, 6:44:24 AM7/19/21
to werner.g...@gmail.com, Quarkus Development mailing list

--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/4b17f03e-23a3-4fec-a6ca-184622528d82n%40googlegroups.com.

George Gastaldi

unread,
Jul 19, 2021, 6:44:34 AM7/19/21
to werner.g...@gmail.com, Quarkus Development mailing list
It looks like your pom.xml is enforcing a different dekorate version?

Werner Gresshoff

unread,
Jul 19, 2021, 6:53:48 AM7/19/21
to Quarkus Development mailing list
I'm not aware of a different dekorate version. This is my pom.xml:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>

<parent>
<artifactId>datasafe</artifactId>
<groupId>de.wwu.ulb</groupId>
<version>3.0.0</version>
</parent>
<artifactId>datasafe-big-file-transfer</artifactId>
<groupId>de.wwu.ulb</groupId>
<version>3.0.0</version>

<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-config-yaml</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-container-image-jib</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kubernetes</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kubernetes-config</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-health</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-jwt</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-opentracing</artifactId>
</dependency>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-jwt</artifactId>
</dependency>
<dependency>
<groupId>de.wwu.ulb</groupId>
<artifactId>datasafe-access</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>de.wwu.ulb</groupId>
<artifactId>datasafe-files</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>de.wwu.ulb</groupId>
<artifactId>datasafe-metadata</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>de.wwu.ulb</groupId>
<artifactId>datasafe-mail</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>de.wwu.ulb</groupId>
<artifactId>datasafe-jwt</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-vfs2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
</dependency>
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.3.5</version>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.platform.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>build</goal>
<goal>generate-code</goal>
<goal>generate-code-tests</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
<configuration>
<parameters>${maven.compiler.parameters}</parameters>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<configuration>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<systemPropertyVariables>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home>
</systemPropertyVariables>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
</profile>
</profiles>
</project>

And the parent pom.xml looks like this:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>de.wwu.ulb</groupId>
<artifactId>datasafe</artifactId>
<version>3.0.0</version>
<packaging>pom</packaging>

<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.parameters>true</maven.compiler.parameters>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus.platform.version>2.0.2.Final</quarkus.platform.version>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
<quarkus-plugin.version>2.0.2.Final</quarkus-plugin.version>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
<jandex-plugin.version>1.1.0</jandex-plugin.version>
<openhtml.version>1.0.9</openhtml.version>
</properties>

<licenses>
<license>
<name>MIT License</name>
<url>http://www.opensource.org/licenses/mit-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>

<organization>
<name>Universitäts- und Landesbibliothek Münster</name>
<url>http://www.ulb.uni-muenster.de</url>
</organization>

<developers>
<developer>
<id>myid</id>
<name>My Name</name>
<email>m...@mail.address</email>
<organization>Universitäts- und Landesbibliothek Münster</organization>
<organizationUrl>https://www.ulb.uni-muenster.de</organizationUrl>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
</developer>
</developers>

<modules>
<module>datasafe-metadata</module>
<module>datasafe-access</module>
<module>datasafe-big-file-transfer</module>
<module>datasafe-html-to-pdf</module>
<module>datasafe-mail</module>
<module>datasafe-send-mail</module>
<module>datasafe-bagit-manager</module>
<module>datasafe-jwt</module>
<module>datasafe-niss-generator</module>
<module>datasafe-chunk-db</module>
<module>datasafe-files</module>
<module>datasafe-chunked-file-transfer</module>
<module>datasafe-cris-manager</module>
</modules>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>${quarkus.platform.artifact-id}</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-mutiny</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-jwt</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-junit5</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.platform.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>build</goal>
<goal>generate-code</goal>
<goal>generate-code-tests</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
<configuration>
<parameters>${maven.compiler.parameters}</parameters>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<configuration>
<systemPropertyVariables>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>native</id>
<activation>
<property>
<name>native</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${surefire-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<systemPropertyVariables>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home>
</systemPropertyVariables>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<quarkus.package.type>native</quarkus.package.type>
</properties>
</profile>
</profiles>
</project>

George Gastaldi

unread,
Jul 19, 2021, 7:04:59 AM7/19/21
to werner.g...@gmail.com, Quarkus Development mailing list
Thanks. As Georgios pointed out someone also reported the same issue. We'll have a look 

Werner Gresshoff

unread,
Jul 19, 2021, 7:07:30 AM7/19/21
to Quarkus Development mailing list
And I can confirm the analysis from https://github.com/quarkusio/quarkus/issues/18294
When I remove the `pvc-volumes` the code compiles!
Reply all
Reply to author
Forward
0 new messages