This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new ea93dec079 NIFI-10481 Support disabling ZooKeeper Ensemble Tracking
ea93dec079 is described below
commit ea93dec079d13157abd53d09374120eb55481004
Author: nathluu <[email protected]>
AuthorDate: Mon Sep 12 07:19:47 2022 +0700
NIFI-10481 Support disabling ZooKeeper Ensemble Tracking
This closes #6400
Signed-off-by: David Handermann <[email protected]>
---
.../src/main/java/org/apache/nifi/util/NiFiProperties.java | 13 +++++++++++++
nifi-docs/src/main/asciidoc/administration-guide.adoc | 3 ++-
.../nifi/controller/cluster/ZooKeeperClientConfig.java | 12 ++++++++++--
.../leader/election/CuratorLeaderElectionManager.java | 1 +
4 files changed, 26 insertions(+), 3 deletions(-)
diff --git
a/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java
b/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java
index 73c3ae20c0..65b885d536 100644
---
a/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java
+++
b/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java
@@ -277,6 +277,7 @@ public class NiFiProperties extends ApplicationProperties {
public static final String ZOOKEEPER_CONNECT_TIMEOUT =
"nifi.zookeeper.connect.timeout";
public static final String ZOOKEEPER_SESSION_TIMEOUT =
"nifi.zookeeper.session.timeout";
public static final String ZOOKEEPER_ROOT_NODE =
"nifi.zookeeper.root.node";
+ public static final String ZOOKEEPER_CLIENT_ENSEMBLE_TRACKER =
"nifi.zookeeper.client.ensembleTracker";
public static final String ZOOKEEPER_CLIENT_SECURE =
"nifi.zookeeper.client.secure";
public static final String ZOOKEEPER_SECURITY_KEYSTORE =
"nifi.zookeeper.security.keystore";
public static final String ZOOKEEPER_SECURITY_KEYSTORE_TYPE =
"nifi.zookeeper.security.keystoreType";
@@ -369,6 +370,7 @@ public class NiFiProperties extends ApplicationProperties {
public static final String DEFAULT_ZOOKEEPER_SESSION_TIMEOUT = "3 secs";
public static final String DEFAULT_ZOOKEEPER_ROOT_NODE = "/nifi";
public static final boolean DEFAULT_ZOOKEEPER_CLIENT_SECURE = false;
+ public static final boolean DEFAULT_ZOOKEEPER_CLIENT_ENSEMBLE_TRACKER =
true;
public static final String DEFAULT_ZOOKEEPER_AUTH_TYPE = "default";
public static final String
DEFAULT_ZOOKEEPER_KERBEROS_REMOVE_HOST_FROM_PRINCIPAL = "true";
public static final String
DEFAULT_ZOOKEEPER_KERBEROS_REMOVE_REALM_FROM_PRINCIPAL = "true";
@@ -1719,6 +1721,17 @@ public class NiFiProperties extends
ApplicationProperties {
return Boolean.parseBoolean(clientSecure);
}
+ public boolean isZookeeperClientWithEnsembleTracker() {
+ final String defaultValue =
String.valueOf(DEFAULT_ZOOKEEPER_CLIENT_ENSEMBLE_TRACKER);
+ final String withEnsembleTracker =
getProperty(ZOOKEEPER_CLIENT_ENSEMBLE_TRACKER, defaultValue).trim();
+
+ if (!"true".equalsIgnoreCase(withEnsembleTracker) &&
!"false".equalsIgnoreCase(withEnsembleTracker)) {
+ throw new RuntimeException(String.format("%s was '%s', expected
true or false", NiFiProperties.ZOOKEEPER_CLIENT_ENSEMBLE_TRACKER,
withEnsembleTracker));
+ }
+
+ return Boolean.parseBoolean(withEnsembleTracker);
+ }
+
public boolean isZooKeeperTlsConfigurationPresent() {
return
StringUtils.isNotBlank(getProperty(NiFiProperties.ZOOKEEPER_CLIENT_SECURE))
&&
StringUtils.isNotBlank(getProperty(NiFiProperties.ZOOKEEPER_SECURITY_KEYSTORE))
diff --git a/nifi-docs/src/main/asciidoc/administration-guide.adoc
b/nifi-docs/src/main/asciidoc/administration-guide.adoc
index e1cbbea80e..94f4f69c55 100644
--- a/nifi-docs/src/main/asciidoc/administration-guide.adoc
+++ b/nifi-docs/src/main/asciidoc/administration-guide.adoc
@@ -2869,7 +2869,8 @@ in the _$NIFI_HOME/conf/nifi.properties_ file:
[options="header,footer"]
|===
|Property Name|Description|Default
-|`nifi.zookeeper.client.secure`|Whether to acccess ZooKeeper using client
TLS.|false
+|`nifi.zookeeper.client.ensembleTracker`|Whether to enable ZooKeeper client
Ensemble Tracking.|true
+|`nifi.zookeeper.client.secure`|Whether to access ZooKeeper using client
TLS.|false
|`nifi.zookeeper.security.keystore`|Filename of the Keystore containing the
private key to use when communicating with ZooKeeper.|_none_
|`nifi.zookeeper.security.keystoreType`|Optional. The type of the Keystore.
Must be `PKCS12`, `JKS`, or `PEM`. If not specified the type will be determined
from the file extension (`.p12`, `.jks`, `.pem`).|_none_
|`nifi.zookeeper.security.keystorePasswd`|The password for the Keystore.|_none_
diff --git
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/cluster/ZooKeeperClientConfig.java
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/cluster/ZooKeeperClientConfig.java
index 7a09a8ef3c..aba41036dc 100644
---
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/cluster/ZooKeeperClientConfig.java
+++
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/cluster/ZooKeeperClientConfig.java
@@ -44,6 +44,7 @@ public class ZooKeeperClientConfig {
private final int connectionTimeoutMillis;
private final String rootPath;
private final boolean clientSecure;
+ private final boolean withEnsembleTracker;
private final String keyStore;
private final String keyStoreType;
private final String keyStorePassword;
@@ -60,7 +61,7 @@ public class ZooKeeperClientConfig {
String rootPath, String authType, String
authPrincipal, String removeHostFromPrincipal,
String removeRealmFromPrincipal, boolean
clientSecure, String keyStore, String keyStoreType,
String keyStorePassword, String trustStore,
String trustStoreType, String trustStorePassword,
- final int juteMaxbuffer) {
+ final int juteMaxbuffer, boolean
withEnsembleTracker) {
this.connectString = connectString;
this.sessionTimeoutMillis = sessionTimeoutMillis;
this.connectionTimeoutMillis = connectionTimeoutMillis;
@@ -77,6 +78,7 @@ public class ZooKeeperClientConfig {
this.removeHostFromPrincipal = removeHostFromPrincipal;
this.removeRealmFromPrincipal = removeRealmFromPrincipal;
this.juteMaxbuffer = juteMaxbuffer;
+ this.withEnsembleTracker = withEnsembleTracker;
}
public String getConnectString() {
@@ -99,6 +101,10 @@ public class ZooKeeperClientConfig {
return clientSecure;
}
+ public boolean isWithEnsembleTracker() {
+ return withEnsembleTracker;
+ }
+
public String getConnectionSocket() {
return (isClientSecure() ? NETTY_CLIENT_CNXN_SOCKET :
NIO_CLIENT_CNXN_SOCKET);
}
@@ -169,6 +175,7 @@ public class ZooKeeperClientConfig {
final long connectionTimeoutMs = getTimePeriod(nifiProperties,
NiFiProperties.ZOOKEEPER_CONNECT_TIMEOUT,
NiFiProperties.DEFAULT_ZOOKEEPER_CONNECT_TIMEOUT);
final String rootPath =
nifiProperties.getProperty(NiFiProperties.ZOOKEEPER_ROOT_NODE,
NiFiProperties.DEFAULT_ZOOKEEPER_ROOT_NODE);
final boolean clientSecure = nifiProperties.isZooKeeperClientSecure();
+ final boolean withEnsembleTracker =
nifiProperties.isZookeeperClientWithEnsembleTracker();
final String keyStore = getPreferredProperty(nifiProperties,
NiFiProperties.ZOOKEEPER_SECURITY_KEYSTORE, NiFiProperties.SECURITY_KEYSTORE);
final String keyStoreType =
StringUtils.stripToNull(getPreferredProperty(nifiProperties,
NiFiProperties.ZOOKEEPER_SECURITY_KEYSTORE_TYPE,
NiFiProperties.SECURITY_KEYSTORE_TYPE));
final String keyStorePassword = getPreferredProperty(nifiProperties,
NiFiProperties.ZOOKEEPER_SECURITY_KEYSTORE_PASSWD,
NiFiProperties.SECURITY_KEYSTORE_PASSWD);
@@ -205,7 +212,8 @@ public class ZooKeeperClientConfig {
trustStore,
trustStoreType,
trustStorePassword,
- juteMaxbuffer
+ juteMaxbuffer,
+ withEnsembleTracker
);
}
diff --git
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/leader/election/CuratorLeaderElectionManager.java
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/leader/election/CuratorLeaderElectionManager.java
index f1d729f11d..1b44793869 100644
---
a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/leader/election/CuratorLeaderElectionManager.java
+++
b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/leader/election/CuratorLeaderElectionManager.java
@@ -427,6 +427,7 @@ public class CuratorLeaderElectionManager implements
LeaderElectionManager {
.connectString(zkConfig.getConnectString())
.sessionTimeoutMs(zkConfig.getSessionTimeoutMillis())
.connectionTimeoutMs(zkConfig.getConnectionTimeoutMillis())
+ .ensembleTracker(zkConfig.isWithEnsembleTracker())
.retryPolicy(retryPolicy)
.aclProvider(aclProviderFactory.create(zkConfig))
.defaultData(new byte[0]);