This is an automated email from the ASF dual-hosted git repository.
xiaoyu 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 1fcf512 Refactor lock node & add default lock time out (#9748)
1fcf512 is described below
commit 1fcf51206f2ae818216b4008ac16e8def967c5d7
Author: Haoran Meng <[email protected]>
AuthorDate: Fri Mar 19 20:01:27 2021 +0800
Refactor lock node & add default lock time out (#9748)
---
.../metadata/GovernanceMetaDataContexts.java | 4 +-
.../governance/core/lock/GovernanceLock.java | 86 +++++++++++-----------
.../governance/core/lock/node/LockNode.java | 16 +++-
.../governance/core/registry/RegistryCenter.java | 55 +++-----------
.../registry/listener/LockChangedListener.java | 4 +-
.../governance/core/lock/GovernanceLockTest.java | 19 ++---
.../governance/core/lock/node/LockNodeTest.java | 2 +-
.../core/registry/RegistryCenterTest.java | 10 +--
.../registry/listener/LockChangedListenerTest.java | 17 -----
.../infra/lock/ShardingSphereLock.java | 34 ++++-----
.../driver/executor/DriverJDBCExecutor.java | 38 +---------
.../proxy/frontend/state/impl/LockProxyState.java | 2 +-
12 files changed, 103 insertions(+), 184 deletions(-)
diff --git
a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
index cd6832c..5007420 100644
---
a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
+++
b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
@@ -38,6 +38,7 @@ import
org.apache.shardingsphere.infra.config.RuleConfiguration;
import
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceConverter;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
+import
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import
org.apache.shardingsphere.infra.context.metadata.MetaDataContextsBuilder;
import
org.apache.shardingsphere.infra.context.metadata.impl.StandardMetaDataContexts;
@@ -86,7 +87,8 @@ public final class GovernanceMetaDataContexts implements
MetaDataContexts {
ShardingSphereEventBus.getInstance().register(this);
disableDataSources();
persistMetaData();
- lock = new GovernanceLock(governanceFacade.getRegistryCenter());
+ lock = new GovernanceLock(governanceFacade.getRegistryCenter(),
+
metaDataContexts.getProps().<Long>getValue(ConfigurationPropertyKey.LOCK_WAIT_TIMEOUT_MILLISECONDS));
}
private void disableDataSources() {
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/GovernanceLock.java
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/GovernanceLock.java
index 6ece835..7465381 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/GovernanceLock.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/GovernanceLock.java
@@ -17,19 +17,14 @@
package org.apache.shardingsphere.governance.core.lock;
-import com.google.common.base.Joiner;
import com.google.common.eventbus.Subscribe;
-import
org.apache.shardingsphere.governance.core.event.model.lock.LockNotificationEvent;
-import
org.apache.shardingsphere.governance.core.event.model.lock.LockReleasedEvent;
+import
org.apache.shardingsphere.governance.core.event.model.props.PropertiesChangedEvent;
import org.apache.shardingsphere.governance.core.registry.RegistryCenter;
-import
org.apache.shardingsphere.governance.core.registry.RegistryCenterNodeStatus;
+import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
+import
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.stream.Collectors;
-
/**
* Governance lock.
*/
@@ -37,60 +32,67 @@ public final class GovernanceLock implements
ShardingSphereLock {
private final RegistryCenter registryCenter;
- public GovernanceLock(final RegistryCenter registryCenter) {
+ private long lockTimeoutMilliseconds;
+
+ public GovernanceLock(final RegistryCenter registryCenter, final long
lockTimeoutMilliseconds) {
this.registryCenter = registryCenter;
+ this.lockTimeoutMilliseconds = lockTimeoutMilliseconds;
ShardingSphereEventBus.getInstance().register(this);
}
+ /**
+ * Try to get lock with default time out.
+ *
+ * @param lockName lock name
+ * @return true if get the lock, false if not
+ */
@Override
- public boolean tryLock(final String schemaName, final String tableName,
final long timeoutMilliseconds) {
- boolean result = registryCenter.tryLock(timeoutMilliseconds);
- if (result) {
-
registryCenter.addLockedResources(Arrays.asList(Joiner.on(".").join(schemaName,
tableName)));
- }
- return result;
- }
-
- @Override
- public boolean tryLock(final String schemaName, final Collection<String>
tableNames, final long timeoutMilliseconds) {
- boolean result = registryCenter.tryLock(timeoutMilliseconds);
- if (result) {
- registryCenter.addLockedResources(tableNames.stream()
- .map(each -> Joiner.on(".").join(schemaName,
each)).collect(Collectors.toList()));
- }
- return result;
+ public boolean tryLock(final String lockName) {
+ return registryCenter.tryLock(lockName, lockTimeoutMilliseconds);
}
+ /**
+ * Try to get lock.
+ *
+ * @param lockName lock name
+ * @param timeoutMilliseconds time out milliseconds to acquire lock
+ * @return true if get the lock, false if not
+ */
@Override
- public void releaseLock(final String schemaName, final String tableName) {
- registryCenter.releaseLock();
-
registryCenter.deleteLockedResources(Arrays.asList(Joiner.on(".").join(schemaName,
tableName)));
+ public boolean tryLock(final String lockName, final long
timeoutMilliseconds) {
+ return registryCenter.tryLock(lockName, timeoutMilliseconds);
}
+ /**
+ * Release lock.
+ *
+ * @param lockName lock name
+ */
@Override
- public void releaseLock(final String schemaName, final Collection<String>
tableNames) {
- registryCenter.releaseLock();
- registryCenter.deleteLockedResources(tableNames.stream()
- .map(each -> Joiner.on(".").join(schemaName,
each)).collect(Collectors.toList()));
+ public void releaseLock(final String lockName) {
+ registryCenter.releaseLock(lockName);
}
/**
- * Lock instance.
- *
- * @param event lock notification event
+ * Check if the lock is exist.
+ *
+ * @param lockName lockName
+ * @return true if exist, false if not
*/
- @Subscribe
- public void doLock(final LockNotificationEvent event) {
-
registryCenter.persistInstanceData(RegistryCenterNodeStatus.LOCKED.toString());
+ @Override
+ public boolean isLocked(final String lockName) {
+ //TODO
+ return false;
}
/**
- * Unlock instance.
+ * Renew lock time out.
*
- * @param event lock released event
+ * @param event properties changed event
*/
@Subscribe
- public void unlock(final LockReleasedEvent event) {
- registryCenter.persistInstanceData("");
+ public void renew(final PropertiesChangedEvent event) {
+ ConfigurationProperties props = new
ConfigurationProperties(event.getProps());
+ lockTimeoutMilliseconds =
props.<Long>getValue(ConfigurationPropertyKey.LOCK_WAIT_TIMEOUT_MILLISECONDS);
}
}
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/node/LockNode.java
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/node/LockNode.java
index aa4d52c..1eed1fb 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/node/LockNode.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/node/LockNode.java
@@ -26,17 +26,25 @@ public final class LockNode {
private static final String LOCK_NODE_ROOT = "lock";
- private static final String LOCK_NODE = "glock";
-
private static final String LOCKED_RESOURCES_NODE = "locked_resources";
/**
+ * Get lock root node path.
+ *
+ * @return lock root node path
+ */
+ public String getLockRootNodePath() {
+ return Joiner.on("/").join("", LOCK_NODE_ROOT);
+ }
+
+ /**
* Get lock node path.
*
+ * @param lockName lock name
* @return lock node path
*/
- public String getLockNodePath() {
- return Joiner.on("/").join("", LOCK_NODE_ROOT, LOCK_NODE);
+ public String getLockNodePath(final String lockName) {
+ return Joiner.on("/").join("", LOCK_NODE_ROOT, lockName);
}
/**
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenter.java
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenter.java
index b0b8b9e..a1ff1c3 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenter.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenter.java
@@ -86,6 +86,7 @@ public final class RegistryCenter {
repository = registryRepository;
instance = GovernanceInstance.getInstance();
lockNode = new LockNode();
+ initLockNode();
registryCacheManager = new RegistryCacheManager(registryRepository,
node);
ShardingSphereEventBus.getInstance().register(this);
}
@@ -492,25 +493,6 @@ public final class RegistryCenter {
}
/**
- * Load instance data.
- *
- * @param instanceId instance id
- * @return instance data
- */
- public String loadInstanceData(final String instanceId) {
- return repository.get(node.getProxyNodePath(instanceId));
- }
-
- /**
- * Load all instances.
- *
- * @return collection of all instances
- */
- public Collection<String> loadAllInstances() {
- return repository.getChildrenKeys(node.getProxyNodesPath());
- }
-
- /**
* Load disabled data sources.
*
* @param schemaName schema name
@@ -529,42 +511,27 @@ public final class RegistryCenter {
return repository.get(node.getDataSourcePath(schemaName,
dataSourceName));
}
+ private void initLockNode() {
+ repository.persist(lockNode.getLockRootNodePath(), "");
+ }
+
/**
* Try to get lock.
*
+ * @param lockName lock name
* @param timeout the maximum time in milliseconds to acquire lock
* @return true if get the lock, false if not
*/
- public boolean tryLock(final long timeout) {
- return repository.tryLock(lockNode.getLockNodePath(), timeout,
TimeUnit.MILLISECONDS);
+ public boolean tryLock(final String lockName, final long timeout) {
+ return repository.tryLock(lockNode.getLockNodePath(lockName), timeout,
TimeUnit.MILLISECONDS);
}
/**
* Release lock.
- */
- public void releaseLock() {
- repository.releaseLock(lockNode.getLockNodePath());
- }
-
- /**
- * Add locked resources.
*
- * @param resources collection of resources
- */
- public void addLockedResources(final Collection<String> resources) {
- List<String> lockedResources =
Splitter.on(",").splitToList(repository.get(lockNode.getLockedResourcesNodePath()));
- lockedResources.addAll(resources);
- repository.persist(lockNode.getLockedResourcesNodePath(),
Joiner.on(",").join(lockedResources));
- }
-
- /**
- * Delete locked resources.
- *
- * @param resources collection of resources
+ * @param lockName lock name
*/
- public void deleteLockedResources(final Collection<String> resources) {
- List<String> lockedResources =
Splitter.on(",").splitToList(repository.get(lockNode.getLockedResourcesNodePath()));
- lockedResources.removeAll(resources);
- repository.persist(lockNode.getLockedResourcesNodePath(),
Joiner.on(",").join(lockedResources));
+ public void releaseLock(final String lockName) {
+ repository.releaseLock(lockNode.getLockNodePath(lockName));
}
}
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/LockChangedListener.java
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/LockChangedListener.java
index cd6c683..b9f4edb 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/LockChangedListener.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/LockChangedListener.java
@@ -38,13 +38,13 @@ public final class LockChangedListener extends
PostGovernanceRepositoryEventList
private final LockNode lockNode;
public LockChangedListener(final RegistryRepository registryRepository) {
- super(registryRepository, Collections.singleton(new
LockNode().getLockNodePath()));
+ super(registryRepository, Collections.singleton(new
LockNode().getLockedResourcesNodePath()));
lockNode = new LockNode();
}
@Override
protected Optional<GovernanceEvent> createEvent(final DataChangedEvent
event) {
- if
(event.getKey().startsWith(Joiner.on("/").join(lockNode.getLockNodePath(),
""))) {
+ if
(event.getKey().startsWith(Joiner.on("/").join(lockNode.getLockedResourcesNodePath(),
""))) {
if (event.getType() == Type.ADDED) {
return Optional.of(new LockNotificationEvent());
} else if (event.getType() == Type.DELETED) {
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/GovernanceLockTest.java
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/GovernanceLockTest.java
index 2b47119..ba3e053 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/GovernanceLockTest.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/GovernanceLockTest.java
@@ -18,15 +18,12 @@
package org.apache.shardingsphere.governance.core.lock;
import org.apache.shardingsphere.governance.core.registry.RegistryCenter;
-import org.apache.shardingsphere.infra.lock.ShardingSphereLock;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
-import java.util.Arrays;
-
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -37,25 +34,23 @@ public final class GovernanceLockTest {
@Mock
private RegistryCenter registryCenter;
- private ShardingSphereLock lock;
+ private GovernanceLock lock;
@Before
public void setUp() {
- lock = new GovernanceLock(registryCenter);
+ lock = new GovernanceLock(registryCenter, 50L);
}
@Test
public void assertTryLock() {
- when(registryCenter.tryLock(eq(50L))).thenReturn(Boolean.TRUE);
- lock.tryLock("sharding_db", "t_order", 50L);
- verify(registryCenter).tryLock(eq(50L));
-
verify(registryCenter).addLockedResources(eq(Arrays.asList("sharding_db.t_order")));
+ when(registryCenter.tryLock(eq("test"),
eq(50L))).thenReturn(Boolean.TRUE);
+ lock.tryLock("test", 50L);
+ verify(registryCenter).tryLock(eq("test"), eq(50L));
}
@Test
public void assertReleaseLock() {
- lock.releaseLock("sharding_db", "t_order");
- verify(registryCenter).releaseLock();
-
verify(registryCenter).deleteLockedResources(eq(Arrays.asList("sharding_db.t_order")));
+ lock.releaseLock("test");
+ verify(registryCenter).releaseLock(eq("test"));
}
}
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/node/LockNodeTest.java
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/node/LockNodeTest.java
index 38d7a86..8182a87 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/node/LockNodeTest.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/lock/node/LockNodeTest.java
@@ -34,7 +34,7 @@ public final class LockNodeTest {
@Test
public void assertGetLockNodePath() {
- assertThat(lockNode.getLockNodePath(), is("/lock/glock"));
+ assertThat(lockNode.getLockNodePath("test"), is("/lock/test"));
}
@Test
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterTest.java
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterTest.java
index ded1b48..6f60016 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterTest.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterTest.java
@@ -141,7 +141,7 @@ public final class RegistryCenterTest {
@Test
public void assertPersistInstanceData() {
registryCenter.persistInstanceData("test");
- verify(registryRepository).persist(anyString(), anyString());
+ verify(registryRepository).persist(anyString(), eq("test"));
}
@Test
@@ -161,14 +161,14 @@ public final class RegistryCenterTest {
@Test
public void assertTryLock() {
- registryCenter.tryLock(50L);
- verify(registryRepository).tryLock(eq(new
LockNode().getLockNodePath()), eq(50L), eq(TimeUnit.MILLISECONDS));
+ registryCenter.tryLock("test", 50L);
+ verify(registryRepository).tryLock(eq(new
LockNode().getLockNodePath("test")), eq(50L), eq(TimeUnit.MILLISECONDS));
}
@Test
public void assertReleaseLock() {
- registryCenter.releaseLock();
- verify(registryRepository).releaseLock(eq(new
LockNode().getLockNodePath()));
+ registryCenter.releaseLock("test");
+ verify(registryRepository).releaseLock(eq(new
LockNode().getLockNodePath("test")));
}
@Test
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/LockChangedListenerTest.java
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/LockChangedListenerTest.java
index a272978..929ca79 100644
---
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/LockChangedListenerTest.java
+++
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/LockChangedListenerTest.java
@@ -18,8 +18,6 @@
package org.apache.shardingsphere.governance.core.registry.listener;
import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
-import
org.apache.shardingsphere.governance.core.event.model.lock.LockNotificationEvent;
-import
org.apache.shardingsphere.governance.core.event.model.lock.LockReleasedEvent;
import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
import
org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
import
org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
@@ -32,7 +30,6 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.util.Optional;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
@RunWith(MockitoJUnitRunner.class)
public final class LockChangedListenerTest {
@@ -52,18 +49,4 @@ public final class LockChangedListenerTest {
Optional<GovernanceEvent> actual = lockChangedListener.createEvent(new
DataChangedEvent("/lock/glock", "", Type.ADDED));
assertFalse(actual.isPresent());
}
-
- @Test
- public void assertCreateAddedEvent() {
- Optional<GovernanceEvent> actual = lockChangedListener.createEvent(new
DataChangedEvent("/lock/glock/lock-test-id", "", Type.ADDED));
- assertTrue(actual.isPresent());
- assertTrue(actual.get() instanceof LockNotificationEvent);
- }
-
- @Test
- public void assertCreateDeletedEvent() {
- Optional<GovernanceEvent> actual = lockChangedListener.createEvent(new
DataChangedEvent("/lock/glock/lock-test-id", "", Type.DELETED));
- assertTrue(actual.isPresent());
- assertTrue(actual.get() instanceof LockReleasedEvent);
- }
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/ShardingSphereLock.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/ShardingSphereLock.java
index c11fd40..903d86d 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/ShardingSphereLock.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/ShardingSphereLock.java
@@ -17,8 +17,6 @@
package org.apache.shardingsphere.infra.lock;
-import java.util.Collection;
-
/**
* ShardingSphere lock.
*/
@@ -27,34 +25,32 @@ public interface ShardingSphereLock {
/**
* Try to lock.
*
- * @param schemaName schema name
- * @param tableName table name
- * @param timeoutMilliseconds time out milliseconds to acquire lock
+ * @param lockName lock name
* @return true if get the lock, false if not
*/
- boolean tryLock(String schemaName, String tableName, long
timeoutMilliseconds);
+ boolean tryLock(String lockName);
/**
- * Try to lock.
- *
- * @param schemaName schema name
- * @param tableNames collections of table names
- * @param timeoutMilliseconds time out milliseconds to acquire lock
+ * Try to lock with time out.
+ *
+ * @param lockName lock name
+ * @param timeout the maximum time in milliseconds to acquire lock
* @return true if get the lock, false if not
*/
- boolean tryLock(String schemaName, Collection<String> tableNames, long
timeoutMilliseconds);
+ boolean tryLock(String lockName, long timeout);
/**
* Release lock.
- * @param schemaName schema name
- * @param tableName table name
+ *
+ * @param lockName lock name
*/
- void releaseLock(String schemaName, String tableName);
+ void releaseLock(String lockName);
/**
- * Release lock.
- * @param schemaName schema name
- * @param tableNames collection of table names
+ * Check whether resource is locked.
+ *
+ * @param lockName lock name
+ * @return true if locked ,false if not
*/
- void releaseLock(String schemaName, Collection<String> tableNames);
+ boolean isLocked(String lockName);
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
index 54b0b96..a5e4b08 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
@@ -21,11 +21,9 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.driver.executor.callback.ExecuteQueryCallback;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
-import
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.database.DefaultSchema;
import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
@@ -43,7 +41,6 @@ import
org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
-import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DDLStatement;
import javax.sql.DataSource;
import java.sql.SQLException;
@@ -124,35 +121,11 @@ public final class DriverJDBCExecutor {
private <T> List<T> doExecute(final
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext, final
SQLStatement sqlStatement,
final Collection<RouteUnit> routeUnits,
final JDBCExecutorCallback<T> callback) throws SQLException {
- List<T> results;
- boolean locked = false;
- try {
- locked = tryLock(sqlStatement,
metaDataContexts.getProps().<Long>getValue(ConfigurationPropertyKey.LOCK_WAIT_TIMEOUT_MILLISECONDS));
- results = jdbcExecutor.execute(executionGroupContext, callback);
- refreshSchema(metaDataContexts.getDefaultMetaData(), sqlStatement,
routeUnits);
- } finally {
- if (locked) {
- releaseLock();
- }
- }
+ List<T> results = jdbcExecutor.execute(executionGroupContext,
callback);
+ refreshSchema(metaDataContexts.getDefaultMetaData(), sqlStatement,
routeUnits);
return results;
}
- private boolean tryLock(final SQLStatement sqlStatement, final long
lockTimeoutMilliseconds) {
- if (metaDataContexts.getLock().isPresent() && needLock(sqlStatement)) {
- // TODO
- if (!metaDataContexts.getLock().get().tryLock("", "",
lockTimeoutMilliseconds)) {
- throw new ShardingSphereException("Service lock wait timeout
of %s ms exceeded", lockTimeoutMilliseconds);
- }
- return true;
- }
- return false;
- }
-
- private boolean needLock(final SQLStatement sqlStatement) {
- return sqlStatement instanceof DDLStatement;
- }
-
@SuppressWarnings("unchecked")
private void refreshSchema(final ShardingSphereMetaData metaData, final
SQLStatement sqlStatement, final Collection<RouteUnit> routeUnits) throws
SQLException {
Optional<MetadataRefresher> metadataRefresher =
MetadataRefresherFactory.newInstance(sqlStatement);
@@ -168,11 +141,4 @@ public final class DriverJDBCExecutor {
private void notifySchemaChanged(final ShardingSphereSchema schema) {
ShardingSphereEventBus.getInstance().post(new
SchemaAlteredEvent(DefaultSchema.LOGIC_NAME, schema));
}
-
- private void releaseLock() {
- // TODO
- if (metaDataContexts.getLock().isPresent()) {
- metaDataContexts.getLock().get().releaseLock("", "");
- }
- }
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/state/impl/LockProxyState.java
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/state/impl/LockProxyState.java
index 4d2be54..727a62c 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/state/impl/LockProxyState.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-core/src/main/java/org/apache/shardingsphere/proxy/frontend/state/impl/LockProxyState.java
@@ -29,6 +29,6 @@ public final class LockProxyState implements ProxyState {
@Override
public void execute(final ChannelHandlerContext context, final Object
message, final DatabaseProtocolFrontendEngine databaseProtocolFrontendEngine,
final BackendConnection backendConnection) {
- // TODO
+ throw new UnsupportedOperationException("LockProxyState");
}
}