This is an automated email from the ASF dual-hosted git repository.

kimmking 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 1bb0cd2  Try to get lock before DDL execution (#8472)
1bb0cd2 is described below

commit 1bb0cd2097ee3c223d686be10887650121c210d7
Author: Haoran Meng <[email protected]>
AuthorDate: Wed Dec 2 17:59:26 2020 +0800

    Try to get lock before DDL execution (#8472)
---
 .../metadata/GovernanceMetaDataContexts.java       | 20 +++++++-----
 .../metadata/GovernanceMetaDataContextsTest.java   |  5 +++
 .../core}/lock/GovernanceLockStrategy.java         |  7 +++--
 .../governance/core/lock/LockCenter.java           |  4 ++-
 .../shardingsphere/infra/lock/LockContext.java     | 24 +++++++--------
 .../shardingsphere/infra/lock/LockStrategy.java    |  6 ++--
 .../infra}/lock/StandardLockStrategy.java          | 13 +++++---
 .../communication/DatabaseCommunicationEngine.java | 36 ++++++++++++++++------
 .../exception/LockWaitTimeoutException.java}       | 18 +++--------
 .../impl/AbstractBootstrapInitializer.java         |  4 +--
 .../impl/GovernanceBootstrapInitializer.java       |  8 ++---
 .../impl/StandardBootstrapInitializer.java         |  8 ++---
 12 files changed, 88 insertions(+), 65 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 087cbe6..a80b921 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
@@ -202,15 +202,19 @@ public final class GovernanceMetaDataContexts implements 
MetaDataContexts {
      */
     @Subscribe
     public synchronized void renew(final SchemaChangedEvent event) {
-        Map<String, ShardingSphereMetaData> newMetaDataMap = new 
HashMap<>(metaDataContexts.getMetaDataMap().size(), 1);
-        for (Entry<String, ShardingSphereMetaData> entry : 
metaDataContexts.getMetaDataMap().entrySet()) {
-            String schemaName = entry.getKey();
-            ShardingSphereMetaData oldMetaData = entry.getValue();
-            ShardingSphereMetaData newMetaData = 
event.getSchemaName().equals(schemaName) ? getChangedMetaData(oldMetaData, 
event.getSchema(), schemaName) : oldMetaData;
-            newMetaDataMap.put(schemaName, newMetaData);
+        try {
+            Map<String, ShardingSphereMetaData> newMetaDataMap = new 
HashMap<>(metaDataContexts.getMetaDataMap().size(), 1);
+            for (Entry<String, ShardingSphereMetaData> entry : 
metaDataContexts.getMetaDataMap().entrySet()) {
+                String schemaName = entry.getKey();
+                ShardingSphereMetaData oldMetaData = entry.getValue();
+                ShardingSphereMetaData newMetaData = 
event.getSchemaName().equals(schemaName) ? getChangedMetaData(oldMetaData, 
event.getSchema(), schemaName) : oldMetaData;
+                newMetaDataMap.put(schemaName, newMetaData);
+            }
+            metaDataContexts = new StandardMetaDataContexts(
+                    newMetaDataMap, metaDataContexts.getExecutorEngine(), 
metaDataContexts.getAuthentication(), metaDataContexts.getProps(), 
metaDataContexts.getDatabaseType());
+        } finally {
+            governanceFacade.getLockCenter().unlock();
         }
-        metaDataContexts = new StandardMetaDataContexts(
-                newMetaDataMap, metaDataContexts.getExecutorEngine(), 
metaDataContexts.getAuthentication(), metaDataContexts.getProps(), 
metaDataContexts.getDatabaseType());
     }
     
     /**
diff --git 
a/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
 
b/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
index f62090b..9aeef51 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-context/src/test/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContextsTest.java
@@ -26,6 +26,7 @@ import 
org.apache.shardingsphere.governance.core.event.model.props.PropertiesCha
 import 
org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsChangedEvent;
 import 
org.apache.shardingsphere.governance.core.event.model.schema.SchemaChangedEvent;
 import org.apache.shardingsphere.governance.core.facade.GovernanceFacade;
+import org.apache.shardingsphere.governance.core.lock.LockCenter;
 import org.apache.shardingsphere.governance.core.registry.RegistryCenter;
 import 
org.apache.shardingsphere.governance.core.registry.event.DisabledStateChangedEvent;
 import 
org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchema;
@@ -90,6 +91,9 @@ public final class GovernanceMetaDataContextsTest {
     @Mock
     private ConfigCenter configCenter;
     
+    @Mock
+    private LockCenter lockCenter;
+    
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private ShardingSphereMetaData metaData;
     
@@ -104,6 +108,7 @@ public final class GovernanceMetaDataContextsTest {
         when(databaseType.getDataSourceMetaData(any(), 
any())).thenReturn(mock(DataSourceMetaData.class));
         when(governanceFacade.getRegistryCenter()).thenReturn(registryCenter);
         when(governanceFacade.getConfigCenter()).thenReturn(configCenter);
+        when(governanceFacade.getLockCenter()).thenReturn(lockCenter);
         
when(registryCenter.loadDisabledDataSources("schema")).thenReturn(Collections.singletonList("schema.ds_1"));
         governanceMetaDataContexts = new GovernanceMetaDataContexts(
                 new StandardMetaDataContexts(createMetaDataMap(), 
mock(ExecutorEngine.class), authentication, props, databaseType), 
governanceFacade);
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/GovernanceLockStrategy.java
 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/GovernanceLockStrategy.java
similarity index 86%
rename from 
shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/GovernanceLockStrategy.java
rename to 
shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/GovernanceLockStrategy.java
index ca03b01..fa570e2 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/GovernanceLockStrategy.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/GovernanceLockStrategy.java
@@ -15,14 +15,15 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.lock;
+package org.apache.shardingsphere.governance.core.lock;
 
 import org.apache.shardingsphere.governance.core.facade.GovernanceFacade;
+import org.apache.shardingsphere.infra.lock.LockStrategy;
 
 /**
- * Governance proxy lock strategy.
+ * Governance lock strategy.
  */
-public final class GovernanceLockStrategy implements ProxyLockStrategy {
+public final class GovernanceLockStrategy implements LockStrategy {
     
     private final GovernanceFacade governanceFacade;
     
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/LockCenter.java
 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/LockCenter.java
index 73636c61..9dadeef 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/LockCenter.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/lock/LockCenter.java
@@ -67,7 +67,9 @@ public final class LockCenter {
      * Unlock instance.
      */
     public void unlock() {
-        
registryCenter.persistInstanceData(governedState.recoverState().toString());
+        if 
(governedState.getState().toString().equalsIgnoreCase(RegistryCenterNodeStatus.LOCKED.toString()))
 {
+            
registryCenter.persistInstanceData(governedState.recoverState().toString());    
+        }
     }
     
     /**
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockContext.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockContext.java
similarity index 63%
rename from 
shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockContext.java
rename to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockContext.java
index afbffe3..cb5a258 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockContext.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockContext.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.lock;
+package org.apache.shardingsphere.infra.lock;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
@@ -23,28 +23,28 @@ import lombok.NoArgsConstructor;
 import java.util.concurrent.atomic.AtomicReference;
 
 /**
- * Proxy lock context.
+ * Lock context.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class ProxyLockContext {
+public final class LockContext {
     
-    private static final AtomicReference<ProxyLockStrategy> 
PROXY_LOCK_STRATEGY = new AtomicReference<>();
+    private static final AtomicReference<LockStrategy> LOCK_STRATEGY = new 
AtomicReference<>();
     
     /**
-     * Init proxy lock strategy.
+     * Init lock strategy.
      * 
-     * @param proxyLockStrategy proxy lock strategy
+     * @param lockStrategy lock strategy
      */
-    public static void init(final ProxyLockStrategy proxyLockStrategy) {
-        PROXY_LOCK_STRATEGY.set(proxyLockStrategy);
+    public static void init(final LockStrategy lockStrategy) {
+        LOCK_STRATEGY.set(lockStrategy);
     }
     
     /**
-     * Get proxy lock strategy.
+     * Get lock strategy.
      * 
-     * @return proxy lock strategy
+     * @return lock strategy
      */
-    public static ProxyLockStrategy getProxyLockStrategy() {
-        return PROXY_LOCK_STRATEGY.get();
+    public static LockStrategy getLockStrategy() {
+        return LOCK_STRATEGY.get();
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockStrategy.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockStrategy.java
similarity index 90%
copy from 
shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockStrategy.java
copy to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockStrategy.java
index 1090736..2f67c31 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockStrategy.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/LockStrategy.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.lock;
+package org.apache.shardingsphere.infra.lock;
 
 /**
- * Proxy lock strategy.
+ * Lock strategy.
  */
-public interface ProxyLockStrategy {
+public interface LockStrategy {
     
     /**
      * Try to get lock.
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/StandardLockStrategy.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/StandardLockStrategy.java
similarity index 77%
rename from 
shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/StandardLockStrategy.java
rename to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/StandardLockStrategy.java
index d6503ac..b889313 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/StandardLockStrategy.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/lock/StandardLockStrategy.java
@@ -15,21 +15,24 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.lock;
+package org.apache.shardingsphere.infra.lock;
+
+import java.util.concurrent.locks.ReentrantLock;
 
 /**
  * Standard lock strategy.
  */
-public final class StandardLockStrategy implements ProxyLockStrategy {
+public final class StandardLockStrategy implements LockStrategy {
+    
+    private final ReentrantLock lock = new ReentrantLock();
     
     @Override
     public boolean tryLock() {
-        // TODO
-        return false;
+        return lock.tryLock();
     }
     
     @Override
     public void releaseLock() {
-        // TODO
+        lock.unlock();
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
index 3ba3699..f21fd20 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/DatabaseCommunicationEngine.java
@@ -18,17 +18,20 @@
 package org.apache.shardingsphere.proxy.backend.communication;
 
 import lombok.RequiredArgsConstructor;
+import 
org.apache.shardingsphere.governance.core.event.model.schema.SchemaPersistEvent;
 import org.apache.shardingsphere.infra.binder.LogicSQL;
 import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
 import 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.context.kernel.KernelProcessor;
+import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResult;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.update.UpdateResult;
 import org.apache.shardingsphere.infra.executor.sql.log.SQLLogger;
 import 
org.apache.shardingsphere.infra.executor.sql.prepare.driver.jdbc.JDBCDriverType;
+import org.apache.shardingsphere.infra.lock.LockContext;
 import org.apache.shardingsphere.infra.merge.MergeEngine;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
@@ -36,11 +39,10 @@ import 
org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
 import 
org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
 import 
org.apache.shardingsphere.infra.metadata.schema.refresher.SchemaRefresher;
 import 
org.apache.shardingsphere.infra.metadata.schema.refresher.SchemaRefresherFactory;
-import 
org.apache.shardingsphere.infra.metadata.schema.refresher.spi.SchemaChangedNotifier;
 import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
-import org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import 
org.apache.shardingsphere.proxy.backend.exception.LockWaitTimeoutException;
 import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseCell;
 import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
 import 
org.apache.shardingsphere.proxy.backend.response.data.impl.BinaryQueryResponseCell;
@@ -55,7 +57,6 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -110,6 +111,9 @@ public final class DatabaseCommunicationEngine {
         if (executionContext.getExecutionUnits().isEmpty()) {
             return new 
UpdateResponseHeader(executionContext.getSqlStatementContext().getSqlStatement());
         }
+        if (needLock(executionContext) && 
!LockContext.getLockStrategy().tryLock()) {
+            throw new LockWaitTimeoutException();
+        }
         proxySQLExecutor.checkExecutePrerequisites(executionContext);
         Collection<ExecuteResult> executeResults = 
proxySQLExecutor.execute(executionContext);
         ExecuteResult executeResultSample = executeResults.iterator().next();
@@ -118,6 +122,14 @@ public final class DatabaseCommunicationEngine {
                 : processExecuteUpdate(executionContext, 
executeResults.stream().map(each -> (UpdateResult) 
each).collect(Collectors.toList()));
     }
     
+    private boolean needLock(final ExecutionContext executionContext) {
+        SQLStatement sqlStatement = 
executionContext.getSqlStatementContext().getSqlStatement();
+        if (null == sqlStatement) {
+            return false;
+        }
+        return SchemaRefresherFactory.newInstance(sqlStatement).isPresent();
+    }
+    
     private QueryResponseHeader processExecuteQuery(final ExecutionContext 
executionContext, final List<QueryResult> queryResults, final QueryResult 
queryResultSample) throws SQLException {
         queryHeaders = createQueryHeaders(executionContext, queryResultSample);
         mergedResult = mergeQuery(executionContext.getSqlStatementContext(), 
queryResults);
@@ -165,16 +177,22 @@ public final class DatabaseCommunicationEngine {
         }
         Optional<SchemaRefresher> schemaRefresher = 
SchemaRefresherFactory.newInstance(sqlStatement);
         if (schemaRefresher.isPresent()) {
-            Collection<String> routeDataSourceNames = 
executionContext.getRouteContext().getRouteUnits().stream().map(each -> 
each.getDataSourceMapper().getLogicName()).collect(Collectors.toList());
-            SchemaBuilderMaterials materials = new 
SchemaBuilderMaterials(ProxyContext.getInstance().getMetaDataContexts().getDatabaseType(),
 
-                    metaData.getResource().getDataSources(), 
metaData.getRuleMetaData().getRules(), 
ProxyContext.getInstance().getMetaDataContexts().getProps());
-            schemaRefresher.get().refresh(metaData.getSchema(), 
routeDataSourceNames, sqlStatement, materials);
-            notifySchemaChanged(metaData.getName(), metaData.getSchema());
+            try {
+                Collection<String> routeDataSourceNames = 
executionContext.getRouteContext().getRouteUnits().stream()
+                        .map(each -> 
each.getDataSourceMapper().getLogicName()).collect(Collectors.toList());
+                SchemaBuilderMaterials materials = new 
SchemaBuilderMaterials(ProxyContext.getInstance().getMetaDataContexts().getDatabaseType(),
+                        metaData.getResource().getDataSources(), 
metaData.getRuleMetaData().getRules(), 
ProxyContext.getInstance().getMetaDataContexts().getProps());
+                schemaRefresher.get().refresh(metaData.getSchema(), 
routeDataSourceNames, sqlStatement, materials);
+                notifySchemaChanged(metaData.getName(), metaData.getSchema());
+            } finally {
+                LockContext.getLockStrategy().releaseLock();
+            }
         }
     }
     
     private void notifySchemaChanged(final String schemaName, final 
ShardingSphereSchema schema) {
-        
OrderedSPIRegistry.getRegisteredServices(Collections.singletonList(schema), 
SchemaChangedNotifier.class).values().forEach(each -> each.notify(schemaName, 
schema));
+        // TODO need check
+        ShardingSphereEventBus.getInstance().post(new 
SchemaPersistEvent(schemaName, schema));
     }
     
     private void mergeUpdateCount(final SQLStatementContext<?> 
sqlStatementContext, final UpdateResponseHeader response) {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockStrategy.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/LockWaitTimeoutException.java
similarity index 73%
rename from 
shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockStrategy.java
rename to 
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/LockWaitTimeoutException.java
index 1090736..f968c05 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/lock/ProxyLockStrategy.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/exception/LockWaitTimeoutException.java
@@ -15,22 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.lock;
+package org.apache.shardingsphere.proxy.backend.exception;
 
 /**
- * Proxy lock strategy.
+ * Lock wait timeout exception.
  */
-public interface ProxyLockStrategy {
+public final class LockWaitTimeoutException extends BackendException {
     
-    /**
-     * Try to get lock.
-     * 
-     * @return true if get the lock, false if not
-     */
-    boolean tryLock();
-    
-    /**
-     * Release lock.
-     */
-    void releaseLock();
+    private static final long serialVersionUID = 2599713085782288003L;
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
index e28c453..8bac5a5 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/AbstractBootstrapInitializer.java
@@ -65,7 +65,7 @@ public abstract class AbstractBootstrapInitializer implements 
BootstrapInitializ
         ProxyContext.getInstance().init(metaDataContexts, transactionContexts);
         initOpenTracing();
         setDatabaseServerInfo();
-        initProxyLockContext();
+        initLockContext();
         shardingSphereProxy.start(port);
     }
     
@@ -129,5 +129,5 @@ public abstract class AbstractBootstrapInitializer 
implements BootstrapInitializ
     
     protected abstract TransactionContexts 
decorateTransactionContexts(TransactionContexts transactionContexts);
     
-    protected abstract void initProxyLockContext();
+    protected abstract void initLockContext();
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
index 94508bb..755f09b 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.proxy.initializer.impl;
 import 
org.apache.shardingsphere.governance.context.metadata.GovernanceMetaDataContexts;
 import 
org.apache.shardingsphere.governance.context.transaction.GovernanceTransactionContexts;
 import org.apache.shardingsphere.governance.core.facade.GovernanceFacade;
+import org.apache.shardingsphere.governance.core.lock.GovernanceLockStrategy;
 import 
org.apache.shardingsphere.governance.core.yaml.swapper.GovernanceConfigurationYamlSwapper;
 import org.apache.shardingsphere.infra.auth.Authentication;
 import 
org.apache.shardingsphere.infra.auth.yaml.config.YamlAuthenticationConfiguration;
@@ -28,6 +29,7 @@ import 
org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
 import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
+import org.apache.shardingsphere.infra.lock.LockContext;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.ProxyConfigurationUpdater;
@@ -35,8 +37,6 @@ import 
org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
 import 
org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter;
 import org.apache.shardingsphere.proxy.config.yaml.YamlProxyRuleConfiguration;
 import 
org.apache.shardingsphere.proxy.config.yaml.YamlProxyServerConfiguration;
-import org.apache.shardingsphere.proxy.lock.GovernanceLockStrategy;
-import org.apache.shardingsphere.proxy.lock.ProxyLockContext;
 import org.apache.shardingsphere.transaction.context.TransactionContexts;
 
 import java.util.Collection;
@@ -125,7 +125,7 @@ public final class GovernanceBootstrapInitializer extends 
AbstractBootstrapIniti
     }
     
     @Override
-    protected void initProxyLockContext() {
-        ProxyLockContext.init(new GovernanceLockStrategy(governanceFacade));
+    protected void initLockContext() {
+        LockContext.init(new GovernanceLockStrategy(governanceFacade));
     }
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializer.java
 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializer.java
index aff566c..7e0064a 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializer.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/StandardBootstrapInitializer.java
@@ -18,11 +18,11 @@
 package org.apache.shardingsphere.proxy.initializer.impl;
 
 import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
+import org.apache.shardingsphere.infra.lock.LockContext;
+import org.apache.shardingsphere.infra.lock.StandardLockStrategy;
 import org.apache.shardingsphere.proxy.config.ProxyConfiguration;
 import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration;
 import 
org.apache.shardingsphere.proxy.config.yaml.swapper.YamlProxyConfigurationSwapper;
-import org.apache.shardingsphere.proxy.lock.ProxyLockContext;
-import org.apache.shardingsphere.proxy.lock.StandardLockStrategy;
 import org.apache.shardingsphere.transaction.context.TransactionContexts;
 
 /**
@@ -46,7 +46,7 @@ public final class StandardBootstrapInitializer extends 
AbstractBootstrapInitial
     }
     
     @Override
-    protected void initProxyLockContext() {
-        ProxyLockContext.init(new StandardLockStrategy());
+    protected void initLockContext() {
+        LockContext.init(new StandardLockStrategy());
     }
 }

Reply via email to