Skip to content

3.28.1: java.util.zip.ZipException: duplicate entry in Quarkus generated jar(s) #50265

@snazy

Description

@snazy

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 :) )

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions