You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by si...@apache.org on 2018/05/21 07:53:29 UTC

[incubator-pulsar] branch master updated: Improve logging when we fail to bind on server ports (#1811)

This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 2e4362d  Improve logging when we fail to bind on server ports (#1811)
2e4362d is described below

commit 2e4362d376511a1349d2508bd666d026cb79f180
Author: Matteo Merli <mm...@apache.org>
AuthorDate: Mon May 21 00:53:27 2018 -0700

    Improve logging when we fail to bind on server ports (#1811)
---
 .../pulsar/broker/service/BrokerService.java       |  8 +++++-
 .../apache/pulsar/proxy/server/ProxyService.java   |  9 +++++--
 .../org/apache/pulsar/proxy/server/WebServer.java  | 29 ++++++++++++++++------
 3 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java
index 115c30c..6a823f4 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java
@@ -287,8 +287,14 @@ public class BrokerService implements Closeable, ZooKeeperCacheListener<Policies
         ServiceConfiguration serviceConfig = pulsar.getConfiguration();
 
         bootstrap.childHandler(new PulsarChannelInitializer(this, serviceConfig, false));
+
         // Bind and start to accept incoming connections.
-        bootstrap.bind(new InetSocketAddress(pulsar.getBindAddress(), port)).sync();
+        InetSocketAddress addr = new InetSocketAddress(pulsar.getBindAddress(), port);
+        try {
+            bootstrap.bind(addr).sync();
+        } catch (Exception e) {
+            throw new IOException("Failed to bind Pulsar broker on " + addr, e);
+        }
         log.info("Started Pulsar Broker service on port {}", port);
 
         if (serviceConfig.isTlsEnabled()) {
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java
index 28af1ab..48d643b 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java
@@ -24,6 +24,7 @@ import static org.apache.commons.lang3.StringUtils.isBlank;
 import java.io.Closeable;
 import java.io.IOException;
 import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.net.UnknownHostException;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.atomic.AtomicReference;
@@ -113,7 +114,11 @@ public class ProxyService implements Closeable {
 
         bootstrap.childHandler(new ServiceChannelInitializer(this, proxyConfig, false));
         // Bind and start to accept incoming connections.
-        bootstrap.bind(proxyConfig.getServicePort()).sync();
+        try {
+            bootstrap.bind(proxyConfig.getServicePort()).sync();
+        } catch (Exception e) {
+            throw new IOException("Failed to bind Pulsar Proxy on port " + proxyConfig.getServicePort(), e);
+        }
         LOG.info("Started Pulsar Proxy at {}", serviceUrl);
 
         if (proxyConfig.isTlsEnabledInProxy()) {
@@ -175,7 +180,7 @@ public class ProxyService implements Closeable {
     public Semaphore getLookupRequestSemaphore() {
         return lookupRequestSemaphore.get();
     }
-    
+
     public EventLoopGroup getWorkerGroup() {
         return workerGroup;
     }
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/WebServer.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/WebServer.java
index c8a60cb..f7a4f28 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/WebServer.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/WebServer.java
@@ -18,8 +18,15 @@
  */
 package org.apache.pulsar.proxy.server;
 
+import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+import com.google.common.collect.Lists;
+
+import io.netty.util.concurrent.DefaultThreadFactory;
+
+import java.io.IOException;
 import java.net.URI;
 import java.security.GeneralSecurityException;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.TimeZone;
@@ -29,6 +36,7 @@ import java.util.concurrent.Executors;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.pulsar.common.util.ObjectMapperFactory;
 import org.apache.pulsar.common.util.SecurityUtility;
+import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.Handler;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
@@ -46,11 +54,6 @@ import org.glassfish.jersey.servlet.ServletContainer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
-import com.google.common.collect.Lists;
-
-import io.netty.util.concurrent.DefaultThreadFactory;
-
 /**
  * Manages web-service startup/stop on jetty server.
  *
@@ -78,7 +81,7 @@ public class WebServer {
                         config.isTlsAllowInsecureConnection(),
                         config.getTlsTrustCertsFilePath(),
                         config.getTlsCertificateFilePath(),
-                        config.getTlsKeyFilePath(), 
+                        config.getTlsKeyFilePath(),
                         config.getTlsRequireTrustedClientCertOnConnect());
                 ServerConnector tlsConnector = new ServerConnector(server, 1, 1, sslCtxFactory);
                 tlsConnector.setPort(config.getWebServicePortTls());
@@ -124,7 +127,7 @@ public class WebServer {
         context.setAttribute(attribute, attributeValue);
         handlers.add(context);
     }
-    
+
     public int getExternalServicePort() {
         return externalServicePort;
     }
@@ -146,7 +149,17 @@ public class WebServer {
         handlerCollection.setHandlers(new Handler[] { contexts, new DefaultHandler(), requestLogHandler });
         server.setHandler(handlerCollection);
 
-        server.start();
+        try {
+            server.start();
+        } catch (Exception e) {
+            List<Integer> ports = new ArrayList<>();
+            for (Connector c : server.getConnectors()) {
+                if (c instanceof ServerConnector) {
+                    ports.add(((ServerConnector) c).getPort());
+                }
+            }
+            throw new IOException("Failed to start HTTP server on ports " + ports, e);
+        }
 
         log.info("Server started at end point {}", getServiceUri());
     }

-- 
To stop receiving notification emails like this one, please contact
sijie@apache.org.