You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/01/03 10:03:25 UTC
(shardingsphere) branch master updated: Refactor DeliverEventSubscriber (#34239)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 3fd7097fb7d Refactor DeliverEventSubscriber (#34239)
3fd7097fb7d is described below
commit 3fd7097fb7d0011e867c3d5450e9951cf8d46a75
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Jan 3 18:03:18 2025 +0800
Refactor DeliverEventSubscriber (#34239)
---
features/readwrite-splitting/core/pom.xml | 2 +-
...dwriteSplittingQualifiedDataSourceDeletedSubscriber.java | 8 ++++----
...ache.shardingsphere.mode.deliver.DeliverEventSubscriber} | 0
...teSplittingQualifiedDataSourceDeletedSubscriberTest.java | 9 ++++++++-
.../mode}/deliver/DeliverEventSubscriber.java | 10 +++++-----
.../mode/manager/cluster/ClusterContextManagerBuilder.java | 13 ++++++-------
6 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/features/readwrite-splitting/core/pom.xml b/features/readwrite-splitting/core/pom.xml
index 0914b61b7d8..43796d0bf18 100644
--- a/features/readwrite-splitting/core/pom.xml
+++ b/features/readwrite-splitting/core/pom.xml
@@ -45,7 +45,7 @@
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere-mode-api</artifactId>
+ <artifactId>shardingsphere-mode-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/cluster/ReadwriteSplittingQualifiedDataSourceDeletedSubscriber.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/cluster/ReadwriteSplittingQualifiedDataSourceDeletedSubscriber.java
index 842ac068f42..015bfda5b13 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/cluster/ReadwriteSplittingQualifiedDataSourceDeletedSubscriber.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/cluster/ReadwriteSplittingQualifiedDataSourceDeletedSubscriber.java
@@ -20,8 +20,8 @@ package org.apache.shardingsphere.readwritesplitting.cluster;
import com.google.common.eventbus.Subscribe;
import lombok.Setter;
import org.apache.shardingsphere.metadata.persist.node.QualifiedDataSourceNode;
-import org.apache.shardingsphere.mode.event.deliver.DeliverEventSubscriber;
-import org.apache.shardingsphere.mode.spi.PersistRepository;
+import org.apache.shardingsphere.mode.deliver.DeliverEventSubscriber;
+import org.apache.shardingsphere.mode.manager.ContextManager;
/**
* Readwrite-splitting qualified data source deleted subscriber.
@@ -29,7 +29,7 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
@Setter
public final class ReadwriteSplittingQualifiedDataSourceDeletedSubscriber implements DeliverEventSubscriber {
- private PersistRepository repository;
+ private ContextManager contextManager;
/**
* Delete qualified data source.
@@ -38,6 +38,6 @@ public final class ReadwriteSplittingQualifiedDataSourceDeletedSubscriber implem
*/
@Subscribe
public void delete(final QualifiedDataSourceDeletedEvent event) {
- repository.delete(QualifiedDataSourceNode.getQualifiedDataSourceNodePath(event.getQualifiedDataSource()));
+ contextManager.getPersistServiceFacade().getRepository().delete(QualifiedDataSourceNode.getQualifiedDataSourceNodePath(event.getQualifiedDataSource()));
}
}
diff --git a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.event.deliver.DeliverEventSubscriber b/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.deliver.DeliverEventSubscriber
similarity index 100%
rename from features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.event.deliver.DeliverEventSubscriber
rename to features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.mode.deliver.DeliverEventSubscriber
diff --git a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/cluster/ReadwriteSplittingQualifiedDataSourceDeletedSubscriberTest.java b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/cluster/ReadwriteSplittingQualifiedDataSourceDeletedSubscriberTest.java
index 837bd8bcc2a..6bb1de62bb1 100644
--- a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/cluster/ReadwriteSplittingQualifiedDataSourceDeletedSubscriberTest.java
+++ b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/cluster/ReadwriteSplittingQualifiedDataSourceDeletedSubscriberTest.java
@@ -18,27 +18,34 @@
package org.apache.shardingsphere.readwritesplitting.cluster;
import org.apache.shardingsphere.infra.metadata.database.schema.QualifiedDataSource;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.spi.PersistRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class ReadwriteSplittingQualifiedDataSourceDeletedSubscriberTest {
private ReadwriteSplittingQualifiedDataSourceDeletedSubscriber subscriber;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private ContextManager contextManager;
+
@Mock
private PersistRepository repository;
@BeforeEach
void setUp() {
subscriber = new ReadwriteSplittingQualifiedDataSourceDeletedSubscriber();
- subscriber.setRepository(repository);
+ when(contextManager.getPersistServiceFacade().getRepository()).thenReturn(repository);
+ subscriber.setContextManager(contextManager);
}
@Test
diff --git a/mode/api/src/main/java/org/apache/shardingsphere/mode/event/deliver/DeliverEventSubscriber.java b/mode/core/src/main/java/org/apache/shardingsphere/mode/deliver/DeliverEventSubscriber.java
similarity index 81%
rename from mode/api/src/main/java/org/apache/shardingsphere/mode/event/deliver/DeliverEventSubscriber.java
rename to mode/core/src/main/java/org/apache/shardingsphere/mode/deliver/DeliverEventSubscriber.java
index ef278879965..307635db345 100644
--- a/mode/api/src/main/java/org/apache/shardingsphere/mode/event/deliver/DeliverEventSubscriber.java
+++ b/mode/core/src/main/java/org/apache/shardingsphere/mode/deliver/DeliverEventSubscriber.java
@@ -15,11 +15,11 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.mode.event.deliver;
+package org.apache.shardingsphere.mode.deliver;
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
import org.apache.shardingsphere.infra.util.eventbus.EventSubscriber;
-import org.apache.shardingsphere.mode.spi.PersistRepository;
+import org.apache.shardingsphere.mode.manager.ContextManager;
/**
* Deliver event subscriber factory.
@@ -28,9 +28,9 @@ import org.apache.shardingsphere.mode.spi.PersistRepository;
public interface DeliverEventSubscriber extends EventSubscriber {
/**
- * Set persist repository.
+ * Set context manager.
*
- * @param repository persist repository
+ * @param contextManager context manager
*/
- void setRepository(PersistRepository repository);
+ void setContextManager(ContextManager contextManager);
}
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 51d89f17c3c..f98354a94eb 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
@@ -28,7 +28,7 @@ import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.infra.util.eventbus.EventBusContext;
import org.apache.shardingsphere.infra.util.eventbus.EventSubscriber;
import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
-import org.apache.shardingsphere.mode.event.deliver.DeliverEventSubscriber;
+import org.apache.shardingsphere.mode.deliver.DeliverEventSubscriber;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.manager.ContextManagerBuilder;
import org.apache.shardingsphere.mode.manager.ContextManagerBuilderParameter;
@@ -63,7 +63,7 @@ public final class ClusterContextManagerBuilder implements ContextManagerBuilder
MetaDataPersistService metaDataPersistService = new MetaDataPersistService(repository);
MetaDataContexts metaDataContexts = MetaDataContextsFactory.create(metaDataPersistService, param, computeNodeInstanceContext);
ContextManager result = new ContextManager(metaDataContexts, computeNodeInstanceContext, repository);
- registerOnline(computeNodeInstanceContext, param, result, repository);
+ registerOnline(computeNodeInstanceContext, param, result);
return result;
}
@@ -74,14 +74,13 @@ public final class ClusterContextManagerBuilder implements ContextManagerBuilder
return result;
}
- private void registerOnline(final ComputeNodeInstanceContext computeNodeInstanceContext, final ContextManagerBuilderParameter param, final ContextManager contextManager,
- final ClusterPersistRepository repository) {
+ private void registerOnline(final ComputeNodeInstanceContext computeNodeInstanceContext, final ContextManagerBuilderParameter param, final ContextManager contextManager) {
contextManager.getPersistServiceFacade().getComputeNodePersistService().registerOnline(computeNodeInstanceContext.getInstance());
contextManager.getComputeNodeInstanceContext().getClusterInstanceRegistry().getAllClusterInstances()
.addAll(contextManager.getPersistServiceFacade().getComputeNodePersistService().loadAllComputeNodeInstances());
new DataChangedEventListenerRegistry(contextManager, getDatabaseNames(param, contextManager.getPersistServiceFacade().getMetaDataPersistService())).register();
ClusterEventSubscriberRegistry eventSubscriberRegistry = new ClusterEventSubscriberRegistry(contextManager.getComputeNodeInstanceContext().getEventBusContext());
- eventSubscriberRegistry.register(createDeliverEventSubscribers(repository));
+ eventSubscriberRegistry.register(createDeliverEventSubscribers(contextManager));
}
private Collection<String> getDatabaseNames(final ContextManagerBuilderParameter param, final MetaDataPersistService metaDataPersistService) {
@@ -90,10 +89,10 @@ public final class ClusterContextManagerBuilder implements ContextManagerBuilder
: metaDataPersistService.getDatabaseMetaDataFacade().getDatabase().loadAllDatabaseNames();
}
- private Collection<EventSubscriber> createDeliverEventSubscribers(final ClusterPersistRepository repository) {
+ private Collection<EventSubscriber> createDeliverEventSubscribers(final ContextManager contextManager) {
Collection<EventSubscriber> result = new LinkedList<>();
for (DeliverEventSubscriber each : ShardingSphereServiceLoader.getServiceInstances(DeliverEventSubscriber.class)) {
- each.setRepository(repository);
+ each.setContextManager(contextManager);
result.add(each);
}
return result;