This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new 17887768d0 Add onInitialize Support (#11962)
17887768d0 is described below
commit 17887768d0ea4dbea61d0df0b86e72d58805777d
Author: Albumen Kevin <[email protected]>
AuthorDate: Sun Apr 2 14:03:30 2023 +0800
Add onInitialize Support (#11962)
* Add onInitialize Support
* Fix compile
---
.../common/deploy/ApplicationDeployListener.java | 1 +
.../apache/dubbo/common/deploy/DeployListener.java | 4 ++++
.../dubbo/common/deploy/DeployListenerAdapter.java | 5 +++++
.../config/deploy/DefaultApplicationDeployer.java | 12 ++++++++++++
.../dubbo/config/deploy/DefaultModuleDeployer.java | 21 +++++++++++++++++----
.../config/metadata/ExporterDeployListener.java | 5 +++++
.../dubbo/config/bootstrap/MultiInstanceTest.java | 5 +++++
.../dubbo/security/cert/CertDeployerListener.java | 5 +++++
8 files changed, 54 insertions(+), 4 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployListener.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployListener.java
index 674ca90e3c..f045c4259d 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployListener.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/ApplicationDeployListener.java
@@ -25,6 +25,7 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
*/
@SPI(scope = ExtensionScope.APPLICATION)
public interface ApplicationDeployListener extends
DeployListener<ApplicationModel> {
+
default void onModuleStarted(ApplicationModel applicationModel) {
}
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/DeployListener.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/DeployListener.java
index fb0e7ad4d9..94d31bbd64 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/DeployListener.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/DeployListener.java
@@ -19,6 +19,10 @@ package org.apache.dubbo.common.deploy;
import org.apache.dubbo.rpc.model.ScopeModel;
public interface DeployListener<E extends ScopeModel> {
+ /**
+ * Useful to inject some configuration like MetricsConfig, RegistryConfig,
etc.
+ */
+ void onInitialize(E scopeModel);
void onStarting(E scopeModel);
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/DeployListenerAdapter.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/DeployListenerAdapter.java
index ed78f40c8d..925747dae4 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/DeployListenerAdapter.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/deploy/DeployListenerAdapter.java
@@ -19,6 +19,11 @@ package org.apache.dubbo.common.deploy;
import org.apache.dubbo.rpc.model.ScopeModel;
public class DeployListenerAdapter<E extends ScopeModel> implements
DeployListener<E>{
+ @Override
+ public void onInitialize(E scopeModel) {
+
+ }
+
@Override
public void onStarting(E scopeModel) {
}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
index 4220ba5fec..203fcebe94 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultApplicationDeployer.java
@@ -201,6 +201,8 @@ public class DefaultApplicationDeployer extends
AbstractDeployer<ApplicationMode
if (initialized) {
return;
}
+ onInitialize();
+
// register shutdown hook
registerShutdownHook();
@@ -1082,6 +1084,16 @@ public class DefaultApplicationDeployer extends
AbstractDeployer<ApplicationMode
return newState;
}
+ private void onInitialize() {
+ for (DeployListener<ApplicationModel> listener : listeners) {
+ try {
+ listener.onInitialize(applicationModel);
+ } catch (Throwable e) {
+ logger.error(CONFIG_FAILED_START_MODEL, "", "",
getIdentifier() + " an exception occurred when handle initialize event", e);
+ }
+ }
+ }
+
private void exportMetadataService() {
if (!isStarting()) {
return;
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
index 25b6363914..c611892073 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
@@ -19,6 +19,7 @@ package org.apache.dubbo.config.deploy;
import org.apache.dubbo.common.config.ReferenceCache;
import org.apache.dubbo.common.deploy.AbstractDeployer;
import org.apache.dubbo.common.deploy.ApplicationDeployer;
+import org.apache.dubbo.common.deploy.DeployListener;
import org.apache.dubbo.common.deploy.DeployState;
import org.apache.dubbo.common.deploy.ModuleDeployListener;
import org.apache.dubbo.common.deploy.ModuleDeployer;
@@ -46,12 +47,12 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_START_MODEL;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_UNABLE_DESTROY_MODEL;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_REFERENCE_MODEL;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_EXPORT_SERVICE;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_WAIT_EXPORT_REFER;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_REFERENCE_MODEL;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_REFER_SERVICE;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_START_MODEL;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FAILED_WAIT_EXPORT_REFER;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_UNABLE_DESTROY_MODEL;
/**
* Export/refer services of module
@@ -110,6 +111,8 @@ public class DefaultModuleDeployer extends
AbstractDeployer<ModuleModel> impleme
if (initialized) {
return;
}
+ onInitialize();
+
loadConfigs();
// read ModuleConfig
@@ -249,6 +252,16 @@ public class DefaultModuleDeployer extends
AbstractDeployer<ModuleModel> impleme
onModuleStopped();
}
+ private void onInitialize() {
+ for (DeployListener<ModuleModel> listener : listeners) {
+ try {
+ listener.onInitialize(moduleModel);
+ } catch (Throwable e) {
+ logger.error(CONFIG_FAILED_START_MODEL, "", "",
getIdentifier() + " an exception occurred when handle initialize event", e);
+ }
+ }
+ }
+
private void onModuleStarting() {
setStarting();
startFuture = new CompletableFuture();
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ExporterDeployListener.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ExporterDeployListener.java
index bff2e2920e..e7237c875d 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ExporterDeployListener.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ExporterDeployListener.java
@@ -28,6 +28,11 @@ import static
org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_
public class ExporterDeployListener implements ApplicationDeployListener,
Prioritized {
protected volatile ConfigurableMetadataServiceExporter
metadataServiceExporter;
+ @Override
+ public void onInitialize(ApplicationModel scopeModel) {
+
+ }
+
@Override
public void onStarting(ApplicationModel scopeModel) {
diff --git
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java
index 276afc4839..5987b8acf9 100644
---
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java
+++
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/bootstrap/MultiInstanceTest.java
@@ -896,6 +896,11 @@ class MultiInstanceTest {
this.moduleModel = moduleModel;
}
+ @Override
+ public void onInitialize(ModuleModel scopeModel) {
+ Assertions.assertEquals(moduleModel, scopeModel);
+ }
+
@Override
public void onStarting(ModuleModel scopeModel) {
Assertions.assertEquals(moduleModel, scopeModel);
diff --git
a/dubbo-plugin/dubbo-security/src/main/java/org/apache/dubbo/security/cert/CertDeployerListener.java
b/dubbo-plugin/dubbo-security/src/main/java/org/apache/dubbo/security/cert/CertDeployerListener.java
index 8edd581d11..2ed9be0e76 100644
---
a/dubbo-plugin/dubbo-security/src/main/java/org/apache/dubbo/security/cert/CertDeployerListener.java
+++
b/dubbo-plugin/dubbo-security/src/main/java/org/apache/dubbo/security/cert/CertDeployerListener.java
@@ -30,6 +30,11 @@ public class CertDeployerListener implements
ApplicationDeployListener {
dubboCertManager =
frameworkModel.getBeanFactory().getBean(DubboCertManager.class);
}
+ @Override
+ public void onInitialize(ApplicationModel scopeModel) {
+
+ }
+
@Override
public void onStarting(ApplicationModel scopeModel) {
scopeModel.getApplicationConfigManager().getSsl().ifPresent(sslConfig
-> {