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 af566233db Support ignore refresh config (#12998)
af566233db is described below
commit af566233dbb9673c9da18b545133bfaca0bd5bf5
Author: Albumen Kevin <[email protected]>
AuthorDate: Sun Sep 3 10:36:26 2023 +0800
Support ignore refresh config (#12998)
---
.../org/apache/dubbo/config/AbstractConfig.java | 36 ++++++++++++++++------
1 file changed, 27 insertions(+), 9 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
index 75a80c8999..cda3390abd 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractConfig.java
@@ -103,6 +103,11 @@ public abstract class AbstractConfig implements
Serializable {
protected final AtomicBoolean refreshed = new AtomicBoolean(false);
+ /**
+ * Indicate that if current config needs to being refreshed, default is
true
+ */
+ protected transient volatile boolean needRefresh = true;
+
/**
* Is default config or not
*/
@@ -679,16 +684,18 @@ public abstract class AbstractConfig implements
Serializable {
* Dubbo config property override
*/
public void refresh() {
- try {
- // check and init before do refresh
- preProcessRefresh();
- refreshWithPrefixes(getPrefixes(), getConfigMode());
- } catch (Exception e) {
- logger.error(COMMON_FAILED_OVERRIDE_FIELD, "", "", "Failed to
override field value of config bean: " + this, e);
- throw new IllegalStateException("Failed to override field value of
config bean: " + this, e);
- }
+ if (needRefresh) {
+ try {
+ // check and init before do refresh
+ preProcessRefresh();
+ refreshWithPrefixes(getPrefixes(), getConfigMode());
+ } catch (Exception e) {
+ logger.error(COMMON_FAILED_OVERRIDE_FIELD, "", "", "Failed to
override field value of config bean: " + this, e);
+ throw new IllegalStateException("Failed to override field
value of config bean: " + this, e);
+ }
- postProcessRefresh();
+ postProcessRefresh();
+ }
refreshed.set(true);
}
@@ -949,6 +956,17 @@ public abstract class AbstractConfig implements
Serializable {
this.isDefault = isDefault;
}
+ @Transient
+ @Parameter(excluded = true, attribute = false)
+ public boolean isNeedRefresh() {
+ return needRefresh;
+ }
+
+ @Transient
+ public void setNeedRefresh(boolean needRefresh) {
+ this.needRefresh = needRefresh;
+ }
+
@Override
public String toString() {
try {