confluentinc / openmessaging-benchmark

Apache License 2.0
5 stars 59 forks source link

Align jetty-util version to jetty-server version #29

Open mrk-andreev opened 8 months ago

mrk-andreev commented 8 months ago

In upstream jetty-server is not compatible with jetty-util that cause NoClassDefFoundError at AbstractConnector:

root@b4189abf2fba:/opt/app# bin/benchmark-worker \
  --port 9090 \
  --stats-port 9091
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/root/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.13.3/log4j-slf4j-impl-2.13.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/root/.m2/repository/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
11:10:37.528 [main] INFO - Logging initialized @604ms to org.eclipse.jetty.util.log.Slf4jLog
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/util/component/Graceful$Shutdown
        at org.eclipse.jetty.server.AbstractConnector.<init>(AbstractConnector.java:156)
        at org.eclipse.jetty.server.AbstractNetworkConnector.<init>(AbstractNetworkConnector.java:44)
        at org.eclipse.jetty.server.ServerConnector.<init>(ServerConnector.java:219)
        at org.eclipse.jetty.server.ServerConnector.<init>(ServerConnector.java:94)
        at org.eclipse.jetty.server.Server.<init>(Server.java:122)
        at org.apache.bookkeeper.stats.prometheus.PrometheusMetricsProvider.start(PrometheusMetricsProvider.java:103)
        at io.openmessaging.benchmark.worker.BenchmarkWorker.main(BenchmarkWorker.java:77)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.util.component.Graceful$Shutdown
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
        ... 7 more

Because old jetty-util contains different interface

public interface Graceful {
    Future<Void> shutdown();
}

but AbstractConnector expected different signature:

private final Graceful.Shutdown _shutdown = new Graceful.Shutdown();