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) {