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 {

Reply via email to