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

Reply via email to