You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by lh...@apache.org on 2022/06/01 14:43:09 UTC
[pulsar] 02/10: Fail proxy startup if brokerServiceURL is missing scheme (#14682)
This is an automated email from the ASF dual-hosted git repository.
lhotari pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 6bafef1beb062414196dd877dadff2bc55485b03
Author: Michael Marshall <mm...@apache.org>
AuthorDate: Mon Mar 14 19:29:58 2022 -0500
Fail proxy startup if brokerServiceURL is missing scheme (#14682)
Make Pulsar Proxy fail on start up with a helpful error message if the `brokerServiceURL` or the `brokerServiceURLTLS` configurations are invalid.
I recently ran into an issue where the configured URL did not have the `pulsar://` or the `pulsar+ssl://` prefix. It would have been very helpful if the proxy had just failed on startup when it had an invalid config.
* Update documentation
* Add validation checks to the `ProxyServiceStarter` class.
(cherry picked from commit 342a5df24ca9dcf142e471ac0aafebc253042ceb)
(cherry picked from commit 0a169d9f7c5c646dff1c24ba81957263579dcce8)
---
conf/proxy.conf | 3 ++-
.../org/apache/pulsar/proxy/server/ProxyConfiguration.java | 4 ++--
.../org/apache/pulsar/proxy/server/ProxyServiceStarter.java | 10 ++++++++++
site2/docs/reference-configuration.md | 4 ++--
4 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/conf/proxy.conf b/conf/proxy.conf
index 91b01965310..5ac664ef48b 100644
--- a/conf/proxy.conf
+++ b/conf/proxy.conf
@@ -25,7 +25,8 @@ zookeeperServers=
# Configuration store connection string (as a comma-separated list)
configurationStoreServers=
-# if Service Discovery is Disabled this url should point to the discovery service provider.
+# If Service Discovery is Disabled this url should point to the discovery service provider.
+# The URL must begin with pulsar:// for plaintext or with pulsar+ssl:// for TLS.
brokerServiceURL=
brokerServiceURLTLS=
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java
index a5c44ee716d..a67099306a3 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java
@@ -105,12 +105,12 @@ public class ProxyConfiguration implements PulsarConfiguration {
@FieldContext(
category = CATEGORY_BROKER_DISCOVERY,
- doc = "The service url points to the broker cluster"
+ doc = "The service url points to the broker cluster. URL must have the pulsar:// prefix."
)
private String brokerServiceURL;
@FieldContext(
category = CATEGORY_BROKER_DISCOVERY,
- doc = "The tls service url points to the broker cluster"
+ doc = "The tls service url points to the broker cluster. URL must have the pulsar+ssl:// prefix."
)
private String brokerServiceURLTLS;
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java
index 2a01d5b6228..cf11355daad 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java
@@ -136,6 +136,16 @@ public class ProxyServiceStarter {
config.setConfigurationStoreServers(configurationStoreServers);
}
+ if (isNotBlank(config.getBrokerServiceURL())) {
+ checkArgument(config.getBrokerServiceURL().startsWith("pulsar://"),
+ "brokerServiceURL must start with pulsar://");
+ }
+
+ if (isNotBlank(config.getBrokerServiceURLTLS())) {
+ checkArgument(config.getBrokerServiceURLTLS().startsWith("pulsar+ssl://"),
+ "brokerServiceURLTLS must start with pulsar+ssl://");
+ }
+
if ((isBlank(config.getBrokerServiceURL()) && isBlank(config.getBrokerServiceURLTLS()))
|| config.isAuthorizationEnabled()) {
checkArgument(!isEmpty(config.getZookeeperServers()), "zookeeperServers must be provided");
diff --git a/site2/docs/reference-configuration.md b/site2/docs/reference-configuration.md
index 67ed800984d..d03cb2eae9d 100644
--- a/site2/docs/reference-configuration.md
+++ b/site2/docs/reference-configuration.md
@@ -693,8 +693,8 @@ The [Pulsar proxy](concepts-architecture-overview.md#pulsar-proxy) can be config
|forwardAuthorizationCredentials| Forward client authorization credentials to Broker for re-authorization, and make sure authentication is enabled for this to take effect. |false|
|zookeeperServers| The ZooKeeper quorum connection string (as a comma-separated list) ||
|configurationStoreServers| Configuration store connection string (as a comma-separated list) ||
-| brokerServiceURL | The service URL pointing to the broker cluster. | |
-| brokerServiceURLTLS | The TLS service URL pointing to the broker cluster | |
+| brokerServiceURL | The service URL pointing to the broker cluster. Must begin with `pulsar://`. | |
+| brokerServiceURLTLS | The TLS service URL pointing to the broker cluster. Must begin with `pulsar+ssl://`. | |
| brokerWebServiceURL | The Web service URL pointing to the broker cluster | |
| brokerWebServiceURLTLS | The TLS Web service URL pointing to the broker cluster | |
| functionWorkerWebServiceURL | The Web service URL pointing to the function worker cluster. It is only configured when you setup function workers in a separate cluster. | |