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

technoboy pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 58e28bb343a Check the validity of config before start websocket 
service (#22231)
58e28bb343a is described below

commit 58e28bb343ac25e26e69fcc21ed33018ffa6696e
Author: Jiwe Guo <[email protected]>
AuthorDate: Fri Mar 15 16:28:54 2024 +0800

    Check the validity of config before start websocket service (#22231)
---
 .../java/org/apache/pulsar/websocket/ProducerHandler.java  | 14 +++++++++++---
 .../pulsar/websocket/service/WebSocketServiceStarter.java  | 12 +++++++++---
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git 
a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/ProducerHandler.java
 
b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/ProducerHandler.java
index 1dc3f202fe0..15acfa9467a 100644
--- 
a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/ProducerHandler.java
+++ 
b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/ProducerHandler.java
@@ -36,6 +36,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLongFieldUpdater;
 import java.util.concurrent.atomic.LongAdder;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import org.apache.pulsar.broker.authentication.AuthenticationDataSource;
 import org.apache.pulsar.client.api.CompressionType;
 import org.apache.pulsar.client.api.HashingScheme;
@@ -100,11 +101,18 @@ public class ProducerHandler extends 
AbstractWebSocketHandler {
                         request.getRemotePort(), topic);
             }
         } catch (Exception e) {
-            log.warn("[{}:{}] Failed in creating producer on topic {}: {}", 
request.getRemoteAddr(),
-                    request.getRemotePort(), topic, e.getMessage());
+            int errorCode = getErrorCode(e);
+            boolean isKnownError = errorCode != 
HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
+            if (isKnownError) {
+                log.warn("[{}:{}] Failed in creating producer on topic {}: 
{}", request.getRemoteAddr(),
+                        request.getRemotePort(), topic, e.getMessage());
+            } else {
+                log.error("[{}:{}] Failed in creating producer on topic {}: 
{}", request.getRemoteAddr(),
+                        request.getRemotePort(), topic, e.getMessage(), e);
+            }
 
             try {
-                response.sendError(getErrorCode(e), getErrorMessage(e));
+                response.sendError(errorCode, getErrorMessage(e));
             } catch (IOException e1) {
                 log.warn("[{}:{}] Failed to send error: {}", 
request.getRemoteAddr(), request.getRemotePort(),
                         e1.getMessage(), e1);
diff --git 
a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketServiceStarter.java
 
b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketServiceStarter.java
index 6231ef1a2aa..e9eac5934fa 100644
--- 
a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketServiceStarter.java
+++ 
b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketServiceStarter.java
@@ -74,9 +74,7 @@ public class WebSocketServiceStarter {
         try {
             // load config file and start proxy service
             String configFile = args[0];
-            log.info("Loading configuration from {}", configFile);
-            WebSocketProxyConfiguration config = 
PulsarConfigurationLoader.create(configFile,
-                    WebSocketProxyConfiguration.class);
+            WebSocketProxyConfiguration config = loadConfig(configFile);
             ProxyServer proxyServer = new ProxyServer(config);
             WebSocketService service = new WebSocketService(config);
             start(proxyServer, service);
@@ -106,6 +104,14 @@ public class WebSocketServiceStarter {
         service.start();
     }
 
+    private static WebSocketProxyConfiguration loadConfig(String configFile) 
throws Exception {
+        log.info("Loading configuration from {}", configFile);
+        WebSocketProxyConfiguration config = 
PulsarConfigurationLoader.create(configFile,
+                WebSocketProxyConfiguration.class);
+        PulsarConfigurationLoader.isComplete(config);
+        return config;
+    }
+
     private static final Logger log = 
LoggerFactory.getLogger(WebSocketServiceStarter.class);
 
 }

Reply via email to