This is an automated email from the ASF dual-hosted git repository.
menghaoran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new af77eecefc5 Refactor
ClusterPersistRepository.persistExclusiveEphemeral (#31326)
af77eecefc5 is described below
commit af77eecefc5f2ca9361b85dc7d8cbe881385da04
Author: Liang Zhang <[email protected]>
AuthorDate: Tue May 21 15:53:17 2024 +0800
Refactor ClusterPersistRepository.persistExclusiveEphemeral (#31326)
---
.../registry/workerid/generator/ClusterWorkerIdGenerator.java | 3 +--
.../coordinator/fixture/ClusterPersistRepositoryFixture.java | 3 ++-
.../process/ProcessListClusterPersistRepositoryFixture.java | 3 ++-
.../mode/repository/cluster/ClusterPersistRepository.java | 3 ++-
.../repository/cluster/lock/impl/DefaultDistributedLock.java | 3 +--
.../mode/repository/cluster/etcd/EtcdRepository.java | 3 ++-
.../mode/repository/cluster/zookeeper/ZookeeperRepository.java | 10 +++++-----
.../proxy/fixture/ClusterPersistRepositoryFixture.java | 3 ++-
8 files changed, 17 insertions(+), 14 deletions(-)
diff --git
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGenerator.java
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGenerator.java
index 48de6201d19..eb3e9ba8f3d 100644
---
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGenerator.java
+++
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/workerid/generator/ClusterWorkerIdGenerator.java
@@ -83,8 +83,7 @@ public final class ClusterWorkerIdGenerator implements
WorkerIdGenerator {
Integer preselectedWorkerId = availableWorkerIds.poll();
Preconditions.checkNotNull(preselectedWorkerId, "Preselected worker-id
can not be null.");
try {
-
repository.persistExclusiveEphemeral(WorkerIdReservationNode.getWorkerIdReservationPath(preselectedWorkerId),
instanceId);
- return Optional.of(preselectedWorkerId);
+ return
repository.persistExclusiveEphemeral(WorkerIdReservationNode.getWorkerIdReservationPath(preselectedWorkerId),
instanceId) ? Optional.of(preselectedWorkerId) : Optional.empty();
} catch (final ClusterPersistRepositoryException ignore) {
return Optional.empty();
}
diff --git
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/fixture/ClusterPersistRepositoryFixture.java
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/fixture/ClusterPersistRepositoryFixture.java
index 149a82771a5..ccdf17cc44e 100644
---
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/fixture/ClusterPersistRepositoryFixture.java
+++
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/fixture/ClusterPersistRepositoryFixture.java
@@ -59,7 +59,8 @@ public final class ClusterPersistRepositoryFixture implements
ClusterPersistRepo
}
@Override
- public void persistExclusiveEphemeral(final String key, final String
value) {
+ public boolean persistExclusiveEphemeral(final String key, final String
value) {
+ return true;
}
@Override
diff --git
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/process/ProcessListClusterPersistRepositoryFixture.java
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/process/ProcessListClusterPersistRepositoryFixture.java
index e2514ab760d..37ec0c2e135 100644
---
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/process/ProcessListClusterPersistRepositoryFixture.java
+++
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/process/ProcessListClusterPersistRepositoryFixture.java
@@ -65,7 +65,8 @@ public final class ProcessListClusterPersistRepositoryFixture
implements Cluster
}
@Override
- public void persistExclusiveEphemeral(final String key, final String
value) {
+ public boolean persistExclusiveEphemeral(final String key, final String
value) {
+ return true;
}
@Override
diff --git
a/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/ClusterPersistRepository.java
b/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/ClusterPersistRepository.java
index 77cebe72341..6554332ad04 100644
---
a/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/ClusterPersistRepository.java
+++
b/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/ClusterPersistRepository.java
@@ -46,8 +46,9 @@ public interface ClusterPersistRepository extends
PersistRepository {
*
* @param key key of data
* @param value value of data
+ * @return persist exclusive node sucess or not
*/
- void persistExclusiveEphemeral(String key, String value);
+ boolean persistExclusiveEphemeral(String key, String value);
/**
* Get distributed lock holder.
diff --git
a/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/lock/impl/DefaultDistributedLock.java
b/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/lock/impl/DefaultDistributedLock.java
index 5f4a4075b2c..f2fb48689be 100644
---
a/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/lock/impl/DefaultDistributedLock.java
+++
b/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/lock/impl/DefaultDistributedLock.java
@@ -63,8 +63,7 @@ public final class DefaultDistributedLock implements
DistributedLock {
}
private boolean persist(final String value) {
- client.persistExclusiveEphemeral(lockKey, value);
- return true;
+ return client.persistExclusiveEphemeral(lockKey, value);
}
@Override
diff --git
a/mode/type/cluster/repository/provider/etcd/src/main/java/org/apache/shardingsphere/mode/repository/cluster/etcd/EtcdRepository.java
b/mode/type/cluster/repository/provider/etcd/src/main/java/org/apache/shardingsphere/mode/repository/cluster/etcd/EtcdRepository.java
index 18bf3d24746..6f565f297df 100644
---
a/mode/type/cluster/repository/provider/etcd/src/main/java/org/apache/shardingsphere/mode/repository/cluster/etcd/EtcdRepository.java
+++
b/mode/type/cluster/repository/provider/etcd/src/main/java/org/apache/shardingsphere/mode/repository/cluster/etcd/EtcdRepository.java
@@ -127,8 +127,9 @@ public final class EtcdRepository implements
ClusterPersistRepository {
}
@Override
- public void persistExclusiveEphemeral(final String key, final String
value) {
+ public boolean persistExclusiveEphemeral(final String key, final String
value) {
persistEphemeral(key, value);
+ return true;
}
private void buildParentPath(final String key) throws ExecutionException,
InterruptedException {
diff --git
a/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
b/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
index 57c743a3b6d..3b4b4d7e2cd 100644
---
a/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
+++
b/mode/type/cluster/repository/provider/zookeeper/src/main/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepository.java
@@ -30,11 +30,10 @@ import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.curator.utils.CloseableUtils;
import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext;
import
org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContextAware;
-import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
-import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration;
-import
org.apache.shardingsphere.mode.repository.cluster.exception.ClusterPersistRepositoryException;
import org.apache.shardingsphere.mode.event.DataChangedEvent;
import org.apache.shardingsphere.mode.event.DataChangedEvent.Type;
+import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository;
+import
org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration;
import
org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener;
import
org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder;
import
org.apache.shardingsphere.mode.repository.cluster.zookeeper.handler.ZookeeperExceptionHandler;
@@ -206,16 +205,17 @@ public final class ZookeeperRepository implements
ClusterPersistRepository, Comp
}
@Override
- public void persistExclusiveEphemeral(final String key, final String
value) {
+ public boolean persistExclusiveEphemeral(final String key, final String
value) {
try {
client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath(key,
value.getBytes(StandardCharsets.UTF_8));
} catch (final NodeExistsException ex) {
- throw new ClusterPersistRepositoryException(ex);
+ return false;
// CHECKSTYLE:OFF
} catch (final Exception ex) {
ZookeeperExceptionHandler.handleException(ex);
// CHECKSTYLE:ON
}
+ return true;
}
@Override
diff --git
a/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/ClusterPersistRepositoryFixture.java
b/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/ClusterPersistRepositoryFixture.java
index 57971f2ee54..3b4328eb33d 100644
---
a/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/ClusterPersistRepositoryFixture.java
+++
b/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/ClusterPersistRepositoryFixture.java
@@ -65,7 +65,8 @@ public final class ClusterPersistRepositoryFixture implements
ClusterPersistRepo
}
@Override
- public void persistExclusiveEphemeral(final String key, final String
value) {
+ public boolean persistExclusiveEphemeral(final String key, final String
value) {
+ return true;
}
@Override