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

panjuan 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 c5b86fa  Add lock switch (#10204)
c5b86fa is described below

commit c5b86fa8f3a5c541976b3c861603a94e47d16199
Author: Haoran Meng <[email protected]>
AuthorDate: Tue Apr 27 12:59:44 2021 +0800

    Add lock switch (#10204)
---
 .../context/metadata/GovernanceMetaDataContexts.java           | 10 +++++++---
 .../infra/config/properties/ConfigurationPropertyKey.java      |  7 ++++++-
 2 files changed, 13 insertions(+), 4 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 bc0c456..6e6fb68 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
@@ -86,8 +86,7 @@ public final class GovernanceMetaDataContexts implements 
MetaDataContexts {
         ShardingSphereEventBus.getInstance().register(this);
         disableDataSources();
         persistMetaData();
-        lock = new GovernanceLock(governanceFacade.getRegistryCenter(), 
-                
metaDataContexts.getProps().<Long>getValue(ConfigurationPropertyKey.LOCK_WAIT_TIMEOUT_MILLISECONDS));
+        lock = createShardingSphereLock();
     }
     
     private void disableDataSources() {
@@ -108,6 +107,11 @@ public final class GovernanceMetaDataContexts implements 
MetaDataContexts {
         metaDataContexts.getMetaDataMap().forEach((key, value) -> 
governanceFacade.getRegistryCenter().persistSchema(key, value.getSchema()));
     }
     
+    private ShardingSphereLock createShardingSphereLock() {
+        return 
metaDataContexts.getProps().<Boolean>getValue(ConfigurationPropertyKey.LOCK_ENABLED)
 ? new GovernanceLock(governanceFacade.getRegistryCenter(),
+                
metaDataContexts.getProps().<Long>getValue(ConfigurationPropertyKey.LOCK_WAIT_TIMEOUT_MILLISECONDS))
 : null;
+    }
+    
     @Override
     public Collection<String> getAllSchemaNames() {
         return metaDataContexts.getAllSchemaNames();
@@ -155,7 +159,7 @@ public final class GovernanceMetaDataContexts implements 
MetaDataContexts {
     
     @Override
     public Optional<ShardingSphereLock> getLock() {
-        return Optional.of(lock);
+        return Optional.ofNullable(lock);
     }
     
     @Override
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/config/properties/ConfigurationPropertyKey.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/config/properties/ConfigurationPropertyKey.java
index f5c1ee5..5f7dd82 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/config/properties/ConfigurationPropertyKey.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/config/properties/ConfigurationPropertyKey.java
@@ -121,7 +121,12 @@ public enum ConfigurationPropertyKey implements 
TypedPropertyKey {
     /**
      * The length of time in milliseconds an SQL waits for a global lock 
before giving up.
      */
-    LOCK_WAIT_TIMEOUT_MILLISECONDS("lock-wait-timeout-milliseconds", 
String.valueOf(50000L), long.class);
+    LOCK_WAIT_TIMEOUT_MILLISECONDS("lock-wait-timeout-milliseconds", 
String.valueOf(50000L), long.class),
+    
+    /**
+     * Whether enable lock.
+     */
+    LOCK_ENABLED("lock-enabled", String.valueOf(false), boolean.class);
     
     private final String key;
     

Reply via email to