This is an automated email from the ASF dual-hosted git repository. zhangliang 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 f5a4dd8c752 Remove DistributedLockHolder (#35112) f5a4dd8c752 is described below commit f5a4dd8c7520834b6bd7698085ed5ebabb90417f Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Sun Mar 30 23:07:03 2025 +0800 Remove DistributedLockHolder (#35112) --- .../fixture/ClusterPersistRepositoryFixture.java | 8 --- .../cluster/ClusterPersistRepository.java | 8 --- .../cluster/lock/holder/DistributedLockHolder.java | 57 ---------------------- .../repository/cluster/etcd/EtcdRepository.java | 9 ---- .../cluster/zookeeper/ZookeeperRepository.java | 9 ---- .../cluster/zookeeper/ZookeeperRepositoryTest.java | 12 ----- .../fixture/ProxyPersistRepositoryFixture.java | 8 --- 7 files changed, 111 deletions(-) diff --git a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/fixture/ClusterPersistRepositoryFixture.java b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/fixture/ClusterPersistRepositoryFixture.java index b2ed671279d..6a5a175d53f 100644 --- a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/fixture/ClusterPersistRepositoryFixture.java +++ b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/fixture/ClusterPersistRepositoryFixture.java @@ -22,13 +22,10 @@ import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositor 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.DistributedLock; -import org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder; -import org.apache.shardingsphere.mode.repository.cluster.core.lock.props.DefaultLockTypedProperties; import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.Properties; public final class ClusterPersistRepositoryFixture implements ClusterPersistRepository { @@ -68,11 +65,6 @@ public final class ClusterPersistRepositoryFixture implements ClusterPersistRepo return true; } - @Override - public Optional<DistributedLockHolder> getDistributedLockHolder() { - return Optional.of(new DistributedLockHolder("default", this, new DefaultLockTypedProperties(new Properties()))); - } - @Override public Optional<DistributedLock> getDistributedLock(final String lockKey) { return Optional.empty(); 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 bd1db5ab955..6e31b7579e6 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 @@ -20,7 +20,6 @@ package org.apache.shardingsphere.mode.repository.cluster; import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext; import org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener; import org.apache.shardingsphere.mode.repository.cluster.lock.DistributedLock; -import org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder; import org.apache.shardingsphere.mode.spi.repository.PersistRepository; import java.util.Optional; @@ -55,13 +54,6 @@ public interface ClusterPersistRepository extends PersistRepository { */ boolean persistExclusiveEphemeral(String key, String value); - /** - * Get distributed lock holder. - * - * @return distributed lock holder - */ - Optional<DistributedLockHolder> getDistributedLockHolder(); - /** * Get distributed lock. * diff --git a/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/lock/holder/DistributedLockHolder.java b/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/lock/holder/DistributedLockHolder.java deleted file mode 100644 index 1970effb765..00000000000 --- a/mode/type/cluster/repository/api/src/main/java/org/apache/shardingsphere/mode/repository/cluster/lock/holder/DistributedLockHolder.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.shardingsphere.mode.repository.cluster.lock.holder; - -import org.apache.shardingsphere.infra.props.TypedProperties; -import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader; -import org.apache.shardingsphere.mode.repository.cluster.lock.DistributedLock; -import org.apache.shardingsphere.mode.repository.cluster.lock.creator.DistributedLockCreator; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * Distributed lock holder. - */ -public final class DistributedLockHolder { - - private final DistributedLockCreator<Object, TypedProperties<?>> creator; - - private final Object client; - - private final TypedProperties<?> props; - - private final Map<String, DistributedLock> locks = new ConcurrentHashMap<>(); - - @SuppressWarnings("unchecked") - public DistributedLockHolder(final String type, final Object client, final TypedProperties<?> props) { - creator = TypedSPILoader.getService(DistributedLockCreator.class, type); - this.client = client; - this.props = props; - } - - /** - * Get distributed lock. - * - * @param lockKey lock key - * @return distributed lock - */ - public DistributedLock getDistributedLock(final String lockKey) { - return locks.computeIfAbsent(lockKey, key -> creator.create(key, client, props)); - } -} 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 09ad849800a..59394a6bdf1 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 @@ -44,7 +44,6 @@ import org.apache.shardingsphere.mode.repository.cluster.etcd.props.EtcdProperti import org.apache.shardingsphere.mode.repository.cluster.etcd.props.EtcdPropertyKey; import org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener; import org.apache.shardingsphere.mode.repository.cluster.lock.DistributedLock; -import org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder; import java.nio.charset.StandardCharsets; import java.util.List; @@ -67,8 +66,6 @@ public final class EtcdRepository implements ClusterPersistRepository { private EtcdProperties etcdProps; - private DistributedLockHolder distributedLockHolder; - @Override public void init(final ClusterPersistRepositoryConfiguration config, final ComputeNodeInstanceContext computeNodeInstanceContext) { etcdProps = new EtcdProperties(config.getProps()); @@ -76,7 +73,6 @@ public final class EtcdRepository implements ClusterPersistRepository { .namespace(ByteSequence.from(config.getNamespace(), StandardCharsets.UTF_8)) .maxInboundMessageSize((int) 32e9) .build(); - distributedLockHolder = new DistributedLockHolder(getType(), client, etcdProps); } @SneakyThrows({InterruptedException.class, ExecutionException.class}) @@ -134,11 +130,6 @@ public final class EtcdRepository implements ClusterPersistRepository { return true; } - @Override - public Optional<DistributedLockHolder> getDistributedLockHolder() { - return Optional.of(distributedLockHolder); - } - @Override public Optional<DistributedLock> getDistributedLock(final String lockKey) { return Optional.of(new EtcdDistributedLock(lockKey, client, etcdProps)); 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 e1f15a850f8..f8ffdc9ef75 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 @@ -34,7 +34,6 @@ import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositor import org.apache.shardingsphere.mode.repository.cluster.exception.ClusterRepositoryPersistException; import org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener; import org.apache.shardingsphere.mode.repository.cluster.lock.DistributedLock; -import org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder; import org.apache.shardingsphere.mode.repository.cluster.zookeeper.exception.ZookeeperExceptionHandler; import org.apache.shardingsphere.mode.repository.cluster.zookeeper.listener.SessionConnectionReconnectListener; import org.apache.shardingsphere.mode.repository.cluster.zookeeper.lock.ZookeeperDistributedLock; @@ -70,13 +69,10 @@ public final class ZookeeperRepository implements ClusterPersistRepository { private CuratorFramework client; - private DistributedLockHolder distributedLockHolder; - @Override public void init(final ClusterPersistRepositoryConfiguration config, final ComputeNodeInstanceContext computeNodeInstanceContext) { ZookeeperProperties zookeeperProps = new ZookeeperProperties(config.getProps()); client = buildCuratorClient(config, zookeeperProps); - distributedLockHolder = new DistributedLockHolder(getType(), client, zookeeperProps); client.getConnectionStateListenable().addListener(new SessionConnectionReconnectListener(computeNodeInstanceContext, this)); initCuratorClient(zookeeperProps); } @@ -224,11 +220,6 @@ public final class ZookeeperRepository implements ClusterPersistRepository { return true; } - @Override - public Optional<DistributedLockHolder> getDistributedLockHolder() { - return Optional.of(distributedLockHolder); - } - @Override public Optional<DistributedLock> getDistributedLock(final String lockKey) { return Optional.of(new ZookeeperDistributedLock(lockKey, client)); diff --git a/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java b/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java index c282b74c4c4..1e1a51852ab 100644 --- a/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java +++ b/mode/type/cluster/repository/provider/zookeeper/src/test/java/org/apache/shardingsphere/mode/repository/cluster/zookeeper/ZookeeperRepositoryTest.java @@ -32,9 +32,6 @@ import org.apache.curator.framework.api.SetDataBuilder; import org.apache.curator.framework.listen.Listenable; import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration; -import org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder; -import org.apache.shardingsphere.mode.repository.cluster.zookeeper.lock.ZookeeperDistributedLock; -import org.apache.shardingsphere.mode.repository.cluster.zookeeper.props.ZookeeperProperties; import org.apache.shardingsphere.mode.repository.cluster.zookeeper.props.ZookeeperPropertyKey; import org.apache.shardingsphere.test.util.PropertiesBuilder; import org.apache.shardingsphere.test.util.PropertiesBuilder.Property; @@ -51,7 +48,6 @@ import org.mockito.quality.Strictness; import java.nio.charset.StandardCharsets; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Properties; import java.util.concurrent.TimeUnit; @@ -110,7 +106,6 @@ class ZookeeperRepositoryTest { mockBuilder(); ClusterPersistRepositoryConfiguration config = new ClusterPersistRepositoryConfiguration(REPOSITORY.getType(), "governance", SERVER_LISTS, new Properties()); REPOSITORY.init(config, mock(ComputeNodeInstanceContext.class)); - mockDistributedLockHolder(); } @SneakyThrows({ReflectiveOperationException.class, InterruptedException.class}) @@ -128,13 +123,6 @@ class ZookeeperRepositoryTest { when(client.blockUntilConnected(anyInt(), eq(TimeUnit.MILLISECONDS))).thenReturn(true); } - @SneakyThrows(ReflectiveOperationException.class) - private void mockDistributedLockHolder() { - DistributedLockHolder distributedLockHolder = new DistributedLockHolder("ZooKeeper", client, new ZookeeperProperties(new Properties())); - Plugins.getMemberAccessor().set(DistributedLockHolder.class.getDeclaredField("locks"), distributedLockHolder, Collections.singletonMap("/locks/glock", mock(ZookeeperDistributedLock.class))); - Plugins.getMemberAccessor().set(ZookeeperRepository.class.getDeclaredField("distributedLockHolder"), REPOSITORY, distributedLockHolder); - } - private void mockBuilder() { when(client.checkExists()).thenReturn(existsBuilder); when(client.create()).thenReturn(createBuilder); diff --git a/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/ProxyPersistRepositoryFixture.java b/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/ProxyPersistRepositoryFixture.java index ac867a86597..d32dd98fa34 100644 --- a/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/ProxyPersistRepositoryFixture.java +++ b/proxy/bootstrap/src/test/java/org/apache/shardingsphere/proxy/fixture/ProxyPersistRepositoryFixture.java @@ -20,17 +20,14 @@ package org.apache.shardingsphere.proxy.fixture; import org.apache.shardingsphere.infra.instance.ComputeNodeInstanceContext; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepository; import org.apache.shardingsphere.mode.repository.cluster.ClusterPersistRepositoryConfiguration; -import org.apache.shardingsphere.mode.repository.cluster.core.lock.props.DefaultLockTypedProperties; import org.apache.shardingsphere.mode.repository.cluster.listener.DataChangedEventListener; import org.apache.shardingsphere.mode.repository.cluster.lock.DistributedLock; -import org.apache.shardingsphere.mode.repository.cluster.lock.holder.DistributedLockHolder; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Properties; public final class ProxyPersistRepositoryFixture implements ClusterPersistRepository { @@ -74,11 +71,6 @@ public final class ProxyPersistRepositoryFixture implements ClusterPersistReposi return true; } - @Override - public Optional<DistributedLockHolder> getDistributedLockHolder() { - return Optional.of(new DistributedLockHolder("default", this, new DefaultLockTypedProperties(new Properties()))); - } - @Override public Optional<DistributedLock> getDistributedLock(final String lockKey) { return Optional.empty();