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

zhaojinchao 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 c0680ef6d56 Refactor ContextManagerBuilder (#31238)
c0680ef6d56 is described below

commit c0680ef6d56ffa2e05d1884863f98dea6dca2567
Author: Liang Zhang <[email protected]>
AuthorDate: Thu May 16 14:01:13 2024 +0800

    Refactor ContextManagerBuilder (#31238)
    
    * Refactor ClusterContextManagerBuilder
    
    * Refactor ContextManagerBuilder
---
 .../driver/jdbc/core/datasource/ShardingSphereDataSource.java |  3 ++-
 .../shardingsphere/mode/manager/ContextManagerBuilder.java    |  4 +++-
 .../mode/manager/cluster/ClusterContextManagerBuilder.java    | 11 ++++++-----
 .../mode/manager/cluster/coordinator/RegistryCenter.java      |  6 +++---
 .../process/subscriber/ProcessListChangedSubscriberTest.java  |  6 ++++--
 .../subscriber/ResourceMetaDataChangedSubscriberTest.java     |  3 ++-
 .../coordinator/subscriber/StateChangedSubscriberTest.java    |  6 ++++--
 .../manager/standalone/StandaloneContextManagerBuilder.java   |  8 ++++----
 .../proxy/initializer/BootstrapInitializer.java               |  3 ++-
 9 files changed, 30 insertions(+), 20 deletions(-)

diff --git 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
index aee2b794342..b79c5b557f6 100644
--- 
a/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
+++ 
b/jdbc/src/main/java/org/apache/shardingsphere/driver/jdbc/core/datasource/ShardingSphereDataSource.java
@@ -30,6 +30,7 @@ import 
org.apache.shardingsphere.infra.instance.metadata.InstanceType;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilder;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
@@ -76,7 +77,7 @@ public final class ShardingSphereDataSource extends 
AbstractDataSourceAdapter im
         databaseRuleConfigs.removeAll(globalRuleConfigs);
         ContextManagerBuilderParameter param = new 
ContextManagerBuilderParameter(modeConfig, 
Collections.singletonMap(databaseName,
                 new DataSourceProvidedDatabaseConfiguration(dataSourceMap, 
databaseRuleConfigs)), Collections.emptyMap(), globalRuleConfigs, props, 
Collections.emptyList(), instanceMetaData, false);
-        return TypedSPILoader.getService(ContextManagerBuilder.class, null == 
modeConfig ? null : modeConfig.getType()).build(param);
+        return TypedSPILoader.getService(ContextManagerBuilder.class, null == 
modeConfig ? null : modeConfig.getType()).build(param, new EventBusContext());
     }
     
     private void contextManagerInitializedCallback(final String databaseName, 
final ContextManager contextManager) {
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilder.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilder.java
index a7d68dca747..2864f7ad76d 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilder.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManagerBuilder.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.mode.manager;
 
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 
 import java.sql.SQLException;
 
@@ -32,8 +33,9 @@ public interface ContextManagerBuilder extends TypedSPI {
      * Build context manager.
      *
      * @param param context manager builder parameter
+     * @param eventBusContext event bus context
      * @return context manager
      * @throws SQLException SQL exception
      */
-    ContextManager build(ContextManagerBuilderParameter param) throws 
SQLException;
+    ContextManager build(ContextManagerBuilderParameter param, EventBusContext 
eventBusContext) throws SQLException;
 }
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
index a2f262e71b2..7d5917b1255 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java
@@ -22,6 +22,7 @@ import 
org.apache.shardingsphere.infra.instance.ComputeNodeInstance;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.instance.InstanceContextAware;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.lock.GlobalLockContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -44,10 +45,10 @@ import java.sql.SQLException;
 public final class ClusterContextManagerBuilder implements 
ContextManagerBuilder {
     
     @Override
-    public ContextManager build(final ContextManagerBuilderParameter param) 
throws SQLException {
+    public ContextManager build(final ContextManagerBuilderParameter param, 
final EventBusContext eventBusContext) throws SQLException {
         ClusterPersistRepository repository = 
getClusterPersistRepository((ClusterPersistRepositoryConfiguration) 
param.getModeConfiguration().getRepository());
-        RegistryCenter registryCenter = new RegistryCenter(repository, 
param.getInstanceMetaData(), param.getDatabaseConfigs());
-        InstanceContext instanceContext = buildInstanceContext(registryCenter, 
param);
+        RegistryCenter registryCenter = new RegistryCenter(eventBusContext, 
repository, param.getInstanceMetaData(), param.getDatabaseConfigs());
+        InstanceContext instanceContext = buildInstanceContext(registryCenter, 
param, eventBusContext);
         if (registryCenter.getRepository() instanceof InstanceContextAware) {
             ((InstanceContextAware) 
registryCenter.getRepository()).setInstanceContext(instanceContext);
         }
@@ -66,9 +67,9 @@ public final class ClusterContextManagerBuilder implements 
ContextManagerBuilder
         return result;
     }
     
-    private InstanceContext buildInstanceContext(final RegistryCenter 
registryCenter, final ContextManagerBuilderParameter param) {
+    private InstanceContext buildInstanceContext(final RegistryCenter 
registryCenter, final ContextManagerBuilderParameter param, final 
EventBusContext eventBusContext) {
         return new InstanceContext(new 
ComputeNodeInstance(param.getInstanceMetaData()), new 
ClusterWorkerIdGenerator(registryCenter, param.getInstanceMetaData()),
-                param.getModeConfiguration(), new ClusterModeContextManager(), 
new GlobalLockContext(registryCenter.getGlobalLockPersistService()), 
registryCenter.getEventBusContext());
+                param.getModeConfiguration(), new ClusterModeContextManager(), 
new GlobalLockContext(registryCenter.getGlobalLockPersistService()), 
eventBusContext);
     }
     
     private void setContextManagerAware(final ContextManager contextManager) {
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/RegistryCenter.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/RegistryCenter.java
index f3372d843eb..09f620f603c 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/RegistryCenter.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/RegistryCenter.java
@@ -48,7 +48,6 @@ import java.util.Properties;
  */
 public final class RegistryCenter {
     
-    @Getter
     private final EventBusContext eventBusContext;
     
     @Getter
@@ -72,8 +71,9 @@ public final class RegistryCenter {
     
     private final GovernanceWatcherFactory listenerFactory;
     
-    public RegistryCenter(final ClusterPersistRepository repository, final 
InstanceMetaData instanceMetaData, final Map<String, DatabaseConfiguration> 
databaseConfigs) {
-        eventBusContext = new EventBusContext();
+    public RegistryCenter(final EventBusContext eventBusContext,
+                          final ClusterPersistRepository repository, final 
InstanceMetaData instanceMetaData, final Map<String, DatabaseConfiguration> 
databaseConfigs) {
+        this.eventBusContext = eventBusContext;
         this.repository = repository;
         this.instanceMetaData = instanceMetaData;
         this.databaseConfigs = databaseConfigs;
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/process/subscriber/ProcessListChangedSubscriberTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/process/subscriber/ProcessListChangedSubscriberTest.java
index 55b9d71b4a4..c9f7ccd6ba0 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/process/subscriber/ProcessListChangedSubscriberTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/registry/process/subscriber/ProcessListChangedSubscriberTest.java
@@ -30,6 +30,7 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
 import 
org.apache.shardingsphere.mode.manager.cluster.ClusterContextManagerBuilder;
@@ -80,11 +81,12 @@ class ProcessListChangedSubscriberTest {
     
     @BeforeEach
     void setUp() throws SQLException {
-        contextManager = new 
ClusterContextManagerBuilder().build(createContextManagerBuilderParameter());
+        EventBusContext eventBusContext = new EventBusContext();
+        contextManager = new 
ClusterContextManagerBuilder().build(createContextManagerBuilderParameter(), 
eventBusContext);
         contextManager.renewMetaDataContexts(new 
MetaDataContexts(contextManager.getMetaDataContexts().getPersistService(), new 
ShardingSphereMetaData(createDatabases(),
                 
contextManager.getMetaDataContexts().getMetaData().getGlobalResourceMetaData(), 
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData(),
                 new ConfigurationProperties(new Properties()))));
-        registryCenter = new 
RegistryCenter(mock(ClusterPersistRepository.class), 
mock(ProxyInstanceMetaData.class), null);
+        registryCenter = new RegistryCenter(eventBusContext, 
mock(ClusterPersistRepository.class), mock(ProxyInstanceMetaData.class), null);
         subscriber = new ProcessListChangedSubscriber(contextManager, 
registryCenter);
     }
     
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ResourceMetaDataChangedSubscriberTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ResourceMetaDataChangedSubscriberTest.java
index 4ec220a0359..1c7a1afa910 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ResourceMetaDataChangedSubscriberTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/ResourceMetaDataChangedSubscriberTest.java
@@ -28,6 +28,7 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
@@ -78,7 +79,7 @@ class ResourceMetaDataChangedSubscriberTest {
     
     @BeforeEach
     void setUp() throws SQLException {
-        contextManager = new 
ClusterContextManagerBuilder().build(createContextManagerBuilderParameter());
+        contextManager = new 
ClusterContextManagerBuilder().build(createContextManagerBuilderParameter(), 
new EventBusContext());
         contextManager.renewMetaDataContexts(new 
MetaDataContexts(contextManager.getMetaDataContexts().getPersistService(), new 
ShardingSphereMetaData(createDatabases(),
                 
contextManager.getMetaDataContexts().getMetaData().getGlobalResourceMetaData(), 
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData(),
                 new ConfigurationProperties(new Properties()))));
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/StateChangedSubscriberTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/StateChangedSubscriberTest.java
index fd4935257be..f52d94d8078 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/StateChangedSubscriberTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/coordinator/subscriber/StateChangedSubscriberTest.java
@@ -32,6 +32,7 @@ import 
org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.infra.state.cluster.ClusterState;
 import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
 import org.apache.shardingsphere.infra.state.instance.InstanceState;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
 import 
org.apache.shardingsphere.mode.manager.cluster.ClusterContextManagerBuilder;
@@ -85,11 +86,12 @@ class StateChangedSubscriberTest {
     
     @BeforeEach
     void setUp() throws SQLException {
-        contextManager = new 
ClusterContextManagerBuilder().build(createContextManagerBuilderParameter());
+        EventBusContext eventBusContext = new EventBusContext();
+        contextManager = new 
ClusterContextManagerBuilder().build(createContextManagerBuilderParameter(), 
eventBusContext);
         contextManager.renewMetaDataContexts(new 
MetaDataContexts(contextManager.getMetaDataContexts().getPersistService(), new 
ShardingSphereMetaData(createDatabases(),
                 
contextManager.getMetaDataContexts().getMetaData().getGlobalResourceMetaData(), 
contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData(),
                 new ConfigurationProperties(new Properties()))));
-        subscriber = new StateChangedSubscriber(contextManager, new 
RegistryCenter(mock(ClusterPersistRepository.class), 
mock(ProxyInstanceMetaData.class), null));
+        subscriber = new StateChangedSubscriber(contextManager, new 
RegistryCenter(eventBusContext, mock(ClusterPersistRepository.class), 
mock(ProxyInstanceMetaData.class), null));
     }
     
     private ContextManagerBuilderParameter 
createContextManagerBuilderParameter() {
diff --git 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
index 1c24b4b20e3..ef00e76979d 100644
--- 
a/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
+++ 
b/mode/type/standalone/core/src/main/java/org/apache/shardingsphere/mode/manager/standalone/StandaloneContextManagerBuilder.java
@@ -42,12 +42,12 @@ import java.util.Properties;
 public final class StandaloneContextManagerBuilder implements 
ContextManagerBuilder {
     
     @Override
-    public ContextManager build(final ContextManagerBuilderParameter param) 
throws SQLException {
+    public ContextManager build(final ContextManagerBuilderParameter param, 
final EventBusContext eventBusContext) throws SQLException {
         PersistRepositoryConfiguration repositoryConfig = 
param.getModeConfiguration().getRepository();
         StandalonePersistRepository repository = TypedSPILoader.getService(
                 StandalonePersistRepository.class, null == repositoryConfig ? 
null : repositoryConfig.getType(), null == repositoryConfig ? new Properties() 
: repositoryConfig.getProps());
         MetaDataPersistService persistService = new 
MetaDataPersistService(repository);
-        InstanceContext instanceContext = buildInstanceContext(param);
+        InstanceContext instanceContext = buildInstanceContext(param, 
eventBusContext);
         MetaDataContexts metaDataContexts = 
MetaDataContextsFactory.create(persistService, param, instanceContext);
         ContextManager result = new ContextManager(metaDataContexts, 
instanceContext);
         new StandaloneEventSubscriberRegistry(result).register();
@@ -55,9 +55,9 @@ public final class StandaloneContextManagerBuilder implements 
ContextManagerBuil
         return result;
     }
     
-    private InstanceContext buildInstanceContext(final 
ContextManagerBuilderParameter param) {
+    private InstanceContext buildInstanceContext(final 
ContextManagerBuilderParameter param, final EventBusContext eventBusContext) {
         return new InstanceContext(new 
ComputeNodeInstance(param.getInstanceMetaData()),
-                new StandaloneWorkerIdGenerator(), 
param.getModeConfiguration(), new StandaloneModeContextManager(), new 
GlobalLockContext(null), new EventBusContext());
+                new StandaloneWorkerIdGenerator(), 
param.getModeConfiguration(), new StandaloneModeContextManager(), new 
GlobalLockContext(null), eventBusContext);
     }
     
     private void setContextManagerAware(final ContextManager contextManager) {
diff --git 
a/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializer.java
 
b/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializer.java
index 0ad21753174..ba9ad42cdd7 100644
--- 
a/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializer.java
+++ 
b/proxy/bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/BootstrapInitializer.java
@@ -24,6 +24,7 @@ import 
org.apache.shardingsphere.infra.instance.metadata.InstanceMetaData;
 import 
org.apache.shardingsphere.infra.instance.metadata.InstanceMetaDataBuilder;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.mode.YamlModeConfigurationSwapper;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.manager.ContextManagerBuilder;
@@ -65,7 +66,7 @@ public final class BootstrapInitializer {
         ContextManagerBuilderParameter param = new 
ContextManagerBuilderParameter(modeConfig, 
proxyConfig.getDatabaseConfigurations(), 
proxyConfig.getGlobalConfiguration().getDataSources(),
                 proxyConfig.getGlobalConfiguration().getRules(), 
proxyConfig.getGlobalConfiguration().getProperties(), 
proxyConfig.getGlobalConfiguration().getLabels(),
                 createInstanceMetaData(port), force);
-        return TypedSPILoader.getService(ContextManagerBuilder.class, null == 
modeConfig ? null : modeConfig.getType()).build(param);
+        return TypedSPILoader.getService(ContextManagerBuilder.class, null == 
modeConfig ? null : modeConfig.getType()).build(param, new EventBusContext());
     }
     
     private InstanceMetaData createInstanceMetaData(final int port) {

Reply via email to