Dávid Paksy created ZOOKEEPER-5029:
--------------------------------------
Summary: Port unification for PrometheusMetricsProvider
Key: ZOOKEEPER-5029
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-5029
Project: ZooKeeper
Issue Type: Task
Reporter: Dávid Paksy
The Jetty admin server has a port unification feature, meaning both secure and
insecure connections can be established on the same port. It can be enabled
with the
admin.portUnification=true configuration setting.
In order to make it more consistent, PrometheusMetricsProvider could also
provide such feature when metricsProvider.httpPort and
metricsProvider.httpsPort are the same.
For example:
{noformat}
metricsProvider.httpPort=7000
metricsProvider.httpsPort=7000{noformat}
At the moment ZooKeeper fails to start up when metricsProvider.httpPort and
metricsProvider.httpsPort are the same:
{noformat}
2026-03-18 14:33:14,221 [myid:] - ERROR
[main:o.a.z.m.p.PrometheusMetricsProvider@194] - Failed to start Prometheus
Jetty server
java.io.IOException: Failed to bind to /0.0.0.0:7000
at
org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:349)
at
org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:310)
at
org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at
org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:234)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at org.eclipse.jetty.server.Server.doStart(Server.java:401)
at
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73)
at
org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider.start(PrometheusMetricsProvider.java:188)
at
org.apache.zookeeper.metrics.impl.MetricsProviderBootstrap.startMetricsProvider(MetricsProviderBootstrap.java:45)
at
org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:126)
at
org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:112)
at
org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:67)
at
org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:141)
at
org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:91)
Caused by: java.net.BindException: Address already in use
at java.base/sun.nio.ch.Net.bind0(Native Method)
at java.base/sun.nio.ch.Net.bind(Net.java:555)
at
java.base/sun.nio.ch.ServerSocketChannelImpl.netBind(ServerSocketChannelImpl.java:337)
at
java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:294)
at
java.base/sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:89)
at
org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:344)
... 13 common frames omitted
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)