-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
Describe the bug
For Quarkus 3.28.1, CI reports j,u.z.ZipException: duplicate entry...
errors for every quarkusBuild
Gradle task execution. 3.27.0 looks fine.
Renovate Quarkus 3.28.1 bump PR. Can be reproduced locally as well.
The issue is not particularly in the quarkusBuild
task implementation, but raised in a custom Gradle code to make the quarkus-run.jar
, generated-bytecode.jar
and transformed-bytecode.jar
files a (bit more) reproducible by re-recreating those with a fixed file modification timestamp for all zip entries.
However, the exception is thrown because there is a duplicate entry in at least one of the jars created by Quarkus.
In the particular case it is duplicate entry: io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$$CMImpl.class
.
Reproducer: checkout the renovate-PR branch, run ./gradlew :polaris-server:quarkusBuild --stacktrace
.
The above works fine up to Quarkus 3.27.0.
Noting: the ZipException
is not raised from Quarkus code, but our custom code, but the duplicate ZIP entry in the Quarkus generated jar is real.
From generated-bytecode.jar
:
6018 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$$CMImpl.class
6018 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$$CMImpl.class
2775 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$KeyCert$$CMImpl.class
2775 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$KeyCert$$CMImpl.class
3579 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$ProxyConfig$$CMImpl.class
3579 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$ProxyConfig$$CMImpl.class
2565 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$TrustCert$$CMImpl.class
2565 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterConfig$TrustCert$$CMImpl.class
6026 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterLogsConfig$$CMImpl.class
6556 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterMetricsConfig$$CMImpl.class
10065 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterRuntimeConfig$$CMImpl.class
6030 1970-01-02 01:00 io/quarkus/opentelemetry/runtime/config/runtime/exporter/OtlpExporterTracesConfig$$CMImpl.class
(Noticed the hard-coded modification timestamp, which is nice to see :) )