Skip to content

Commit 1ee4a56

Browse files
authored
Allows to skip Ensemble Tracker for ZookeeperConfiguration to allow connecting to HA enabled Zookeeper clusters in Kubernetes (#2458)
1 parent a5478ea commit 1ee4a56

File tree

5 files changed

+30
-19
lines changed

5 files changed

+30
-19
lines changed

RELEASE-NOTES.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@
66

77
### New Features
88

9+
1. Bootstrap: Provides built-in GraalVM Reachability Metadata and nativeTest on Elasticjob Bootstrap - [#2268](https://github.com/apache/shardingsphere-elasticjob/pull/2268)
10+
1. Lifecycle: Support dynamic configuration of jobs through the Operation API in GraalVM Native Image - [#2426](https://github.com/apache/shardingsphere-elasticjob/pull/2426)
11+
1. Registry Center: Allows to skip Ensemble Tracker for ZookeeperConfiguration to allow connecting to HA enabled Zookeeper clusters in Kubernetes - [#2072](https://github.com/apache/shardingsphere-elasticjob/issues/2072)
12+
913
### Enhancements
1014

11-
1. Bootstrap: Provides built-in GraalVM Reachability Metadata and nativeTest on Elasticjob Bootstrap - [#2268](https://github.com/apache/shardingsphere-elasticjob/pull/2268)
1215
1. Build: Support for building with OpenJDK 22 - [#2407](https://github.com/apache/shardingsphere-elasticjob/issues/2407)
1316
1. Spring Boot Starter: Block `elasticjob-spring-boot-starter` from passing `spring-boot-starter` test scope dependencies - [#2418](https://github.com/apache/shardingsphere-elasticjob/issues/2418)
14-
1. Lifecycle: Support dynamic configuration of jobs through the Operation API in GraalVM Native Image - [#2426](https://github.com/apache/shardingsphere-elasticjob/pull/2426)
1517
1. Doc: Adds documentation for connecting to Zookeeper Server with SASL enabled - [#2442](https://github.com/apache/shardingsphere-elasticjob/pull/2442)
1618
1. Build: Support building and using ElasticJob with JDK23 - [#2453](https://github.com/apache/shardingsphere-elasticjob/issues/2453)
17-
1. Build: Support building and using ElasticJob with JDK23 - [#2453](https://github.com/apache/shardingsphere-elasticjob/issues/2453)
1819

1920
### Bug Fixes
2021

docs/content/user-manual/configuration/external-integration/sasl.cn.md

+7-8
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,15 @@ public class ExampleUtils {
4848
Configuration configuration = new Configuration() {
4949
@Override
5050
public AppConfigurationEntry[] getAppConfigurationEntry(final String name) {
51-
Map<String, String> options = new HashMap<>();
52-
options.put("username", "bob");
53-
options.put("password", "bobsecret");
54-
AppConfigurationEntry entry = new AppConfigurationEntry(
51+
Map<String, String> conf = new HashMap<>();
52+
conf.put("username", "bob");
53+
conf.put("password", "bobsecret");
54+
AppConfigurationEntry[] entries = new AppConfigurationEntry[1];
55+
entries[0] = new AppConfigurationEntry(
5556
"org.apache.zookeeper.server.auth.DigestLoginModule",
5657
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
57-
options);
58-
AppConfigurationEntry[] array = new AppConfigurationEntry[1];
59-
array[0] = entry;
60-
return array;
58+
conf);
59+
return entries;
6160
}
6261
};
6362
Configuration.setConfiguration(configuration);

docs/content/user-manual/configuration/external-integration/sasl.en.md

+7-8
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,15 @@ public class ExampleUtils {
5252
Configuration configuration = new Configuration() {
5353
@Override
5454
public AppConfigurationEntry[] getAppConfigurationEntry(final String name) {
55-
Map<String, String> options = new HashMap<>();
56-
options.put("username", "bob");
57-
options.put("password", "bobsecret");
58-
AppConfigurationEntry entry = new AppConfigurationEntry(
55+
Map<String, String> conf = new HashMap<>();
56+
conf.put("username", "bob");
57+
conf.put("password", "bobsecret");
58+
AppConfigurationEntry[] entries = new AppConfigurationEntry[1];
59+
entries[0] = new AppConfigurationEntry(
5960
"org.apache.zookeeper.server.auth.DigestLoginModule",
6061
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
61-
options);
62-
AppConfigurationEntry[] array = new AppConfigurationEntry[1];
63-
array[0] = entry;
64-
return array;
62+
conf);
63+
return entries;
6564
}
6665
};
6766
Configuration.setConfiguration(configuration);

registry-center/provider/zookeeper-curator/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperConfiguration.java

+11
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,15 @@ public final class ZookeeperConfiguration {
7474
* Zookeeper digest.
7575
*/
7676
private String digest;
77+
78+
/**
79+
* Allows configuring if the ensemble configuration changes are watched.
80+
* If the HA enabled Zookeeper clusters are hidden under a virtual IP of Kubernetes,
81+
* the Zookeeper Client can return a URL during Ensemble Tracking,
82+
* which will cause an unresolved host exception within the Curator Framework.
83+
* At the ElasticJob level, this will cause a cluster restart.
84+
*
85+
* @see org.apache.curator.framework.CuratorFrameworkFactory.Builder#ensembleTracker(boolean)
86+
*/
87+
private boolean ensembleTracker = true;
7788
}

registry-center/provider/zookeeper-curator/src/main/java/org/apache/shardingsphere/elasticjob/reg/zookeeper/ZookeeperRegistryCenter.java

+1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public void init() {
9898
CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder()
9999
.connectString(zkConfig.getServerLists())
100100
.retryPolicy(new ExponentialBackoffRetry(zkConfig.getBaseSleepTimeMilliseconds(), zkConfig.getMaxRetries(), zkConfig.getMaxSleepTimeMilliseconds()))
101+
.ensembleTracker(zkConfig.isEnsembleTracker())
101102
.namespace(zkConfig.getNamespace());
102103
if (0 != zkConfig.getSessionTimeoutMilliseconds()) {
103104
builder.sessionTimeoutMs(zkConfig.getSessionTimeoutMilliseconds());

0 commit comments

Comments
 (0)