This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit e7723baa4ac8dda16e1f9b253d3777571b0aad81
Author: liubao <bi...@qq.com>
AuthorDate: Mon Sep 18 21:01:15 2023 +0800

    [SCB-2008]change DynamicPropertyFactory to Environment: fault injection and 
flowcontrol
---
 .../faultinjection/FaultInjectionConfig.java       |  66 -----------
 .../faultinjection/FaultInjectionUtil.java         |   3 +-
 .../TestConsumerAbortFaultFilter.java              |  68 ++++++++---
 .../TestConsumerDelayFaultFilter.java              | 125 ++++++++++++---------
 .../faultinjection/TestFaultInjectConfig.java      |  62 ----------
 .../java/org/apache/servicecomb/qps/Config.java    |  28 +----
 .../org/apache/servicecomb/qps/TestConfig.java     |  55 ---------
 .../router/custom/RouterAddHeaderFilter.java       |  60 +++-------
 .../router/custom/RouterServerListFilter.java      |   4 +-
 9 files changed, 153 insertions(+), 318 deletions(-)

diff --git 
a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionConfig.java
 
b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionConfig.java
deleted file mode 100755
index 76b8e94ba..000000000
--- 
a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionConfig.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.faultinjection;
-
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import com.google.common.annotations.VisibleForTesting;
-import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.netflix.config.DynamicIntProperty;
-import com.netflix.config.DynamicPropertyFactory;
-
-/**
- * Handles the fault injection configuration read from micro service 
file/config
- * center.
- */
-public final class FaultInjectionConfig {
-
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(FaultInjectionConfig.class);
-
-  // key is configuration parameter.
-  private static final Map<String, String> cfgCallback = new 
ConcurrentHashMapEx<>();
-
-  public static int getConfigVal(String config, int defaultValue) {
-    DynamicIntProperty dynamicIntProperty = 
DynamicPropertyFactory.getInstance().getIntProperty(config,
-        defaultValue);
-
-    cfgCallback.computeIfAbsent(config, key -> {
-      dynamicIntProperty.addCallback(() -> {
-        int newValue = dynamicIntProperty.get();
-        String cfgName = dynamicIntProperty.getName();
-
-        //store the value in config center map and check for next requests.
-        FaultInjectionUtil.setConfigCenterValue(cfgName, new 
AtomicInteger(newValue));
-        LOGGER.info("{} changed to {}", cfgName, newValue);
-      });
-      return config;
-    });
-
-    return dynamicIntProperty.get();
-  }
-
-  @VisibleForTesting
-  static Map<String, String> getCfgCallback() {
-    return cfgCallback;
-  }
-
-}
diff --git 
a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionUtil.java
 
b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionUtil.java
index 220fdb4ca..9d96fcd1d 100755
--- 
a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionUtil.java
+++ 
b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/FaultInjectionUtil.java
@@ -27,6 +27,7 @@ import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.servicecomb.core.Invocation;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -120,7 +121,7 @@ public class FaultInjectionUtil {
       return cfgMap.get(config).get();
     }
 
-    value = FaultInjectionConfig.getConfigVal(config, 
FAULT_INJECTION_DEFAULT_VALUE);
+    value = LegacyPropertyFactory.getIntProperty(config, 
FAULT_INJECTION_DEFAULT_VALUE);
     return value;
   }
 
diff --git 
a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestConsumerAbortFaultFilter.java
 
b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestConsumerAbortFaultFilter.java
index ecb5bf6ea..fbc0409ee 100644
--- 
a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestConsumerAbortFaultFilter.java
+++ 
b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestConsumerAbortFaultFilter.java
@@ -24,6 +24,7 @@ import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.Transport;
 import org.apache.servicecomb.core.filter.FilterNode;
 import org.apache.servicecomb.foundation.common.Holder;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.swagger.invocation.Response;
@@ -34,16 +35,57 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
 
 import com.netflix.config.DynamicProperty;
 
 public class TestConsumerAbortFaultFilter {
   private Invocation invocation;
 
+  private Environment environment;
+
   @BeforeEach
   public void before() {
-    ArchaiusUtils.resetConfig();
-    FaultInjectionConfig.getCfgCallback().clear();
+    environment = Mockito.mock(Environment.class);
+    LegacyPropertyFactory.setEnvironment(environment);
+    Mockito.when(environment.getProperty(
+        
"servicecomb.governance.Consumer.carts6.schemas.testSchema4.operations.sayBye4"
+            + ".policy.fault.protocols.rest.abort.percent",
+        int.class, -1)).thenReturn(-1);
+    Mockito.when(environment.getProperty(
+        
"servicecomb.governance.Consumer.carts6.schemas.testSchema4.operations.sayBye4"
+            + ".policy.fault.protocols.rest.abort.httpStatus",
+        int.class, -1)).thenReturn(-1);
+
+    Mockito.when(environment.getProperty(
+        "servicecomb.governance.Consumer.carts6.schemas.testSchema4"
+            + ".policy.fault.protocols.rest.abort.percent",
+        int.class, -1)).thenReturn(-1);
+    Mockito.when(environment.getProperty(
+        "servicecomb.governance.Consumer.carts6.schemas.testSchema4"
+            + ".policy.fault.protocols.rest.abort.httpStatus",
+        int.class, -1)).thenReturn(-1);
+
+    Mockito.when(environment.getProperty(
+        "servicecomb.governance.Consumer.carts6"
+            + ".policy.fault.protocols.rest.abort.percent",
+        int.class, -1)).thenReturn(-1);
+    Mockito.when(environment.getProperty(
+        "servicecomb.governance.Consumer.carts6"
+            + ".policy.fault.protocols.rest.abort.httpStatus",
+        int.class, -1)).thenReturn(-1);
+
+    Mockito.when(environment.getProperty(
+            "servicecomb.governance.Consumer._global"
+                + ".policy.fault.protocols.rest.abort.percent",
+            int.class, -1))
+        .thenReturn(-1);
+    Mockito.when(environment.getProperty(
+            "servicecomb.governance.Consumer._global"
+                + ".policy.fault.protocols.rest.abort.httpStatus",
+            int.class, -1))
+        .thenReturn(-1);
+
     FaultInjectionUtil.getConfigCenterValue().clear();
 
     invocation = Mockito.mock(Invocation.class);
@@ -58,7 +100,6 @@ public class TestConsumerAbortFaultFilter {
 
   @AfterEach
   public void after() {
-    ArchaiusUtils.resetConfig();
   }
 
   @AfterAll
@@ -68,17 +109,16 @@ public class TestConsumerAbortFaultFilter {
 
   @Test
   public void injectFaultError() {
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus",
 "421");
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent",
 "100");
-
-    Assertions.assertEquals("421", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.httpStatus")
-        .getString());
-    Assertions.assertEquals("100", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.abort.percent")
-        .getString());
+    Mockito.when(environment.getProperty(
+            "servicecomb.governance.Consumer._global"
+                + ".policy.fault.protocols.rest.abort.httpStatus",
+            int.class, -1))
+        .thenReturn(421);
+    Mockito.when(environment.getProperty(
+            "servicecomb.governance.Consumer._global"
+                + ".policy.fault.protocols.rest.abort.percent",
+            int.class, -1))
+        .thenReturn(100);
 
     ConsumerAbortFaultFilter abortFault = new ConsumerAbortFaultFilter();
 
diff --git 
a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestConsumerDelayFaultFilter.java
 
b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestConsumerDelayFaultFilter.java
index d1edf711a..381d3d014 100644
--- 
a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestConsumerDelayFaultFilter.java
+++ 
b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestConsumerDelayFaultFilter.java
@@ -22,7 +22,7 @@ import java.util.concurrent.CompletableFuture;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.Transport;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.junit.jupiter.api.AfterAll;
@@ -31,16 +31,56 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
-
-import com.netflix.config.DynamicProperty;
+import org.springframework.core.env.Environment;
 
 public class TestConsumerDelayFaultFilter {
   private Invocation invocation;
 
+  private Environment environment;
+
   @BeforeEach
   public void before() {
-    ArchaiusUtils.resetConfig();
-    FaultInjectionConfig.getCfgCallback().clear();
+    environment = Mockito.mock(Environment.class);
+    LegacyPropertyFactory.setEnvironment(environment);
+
+    Mockito.when(environment.getProperty(
+        
"servicecomb.governance.Consumer.carts6.schemas.testSchema4.operations.sayBye4"
+            + ".policy.fault.protocols.rest.delay.fixedDelay",
+        int.class, -1)).thenReturn(-1);
+    Mockito.when(environment.getProperty(
+        
"servicecomb.governance.Consumer.carts6.schemas.testSchema4.operations.sayBye4"
+            + ".policy.fault.protocols.rest.delay.percent",
+        int.class, -1)).thenReturn(-1);
+
+    Mockito.when(environment.getProperty(
+        "servicecomb.governance.Consumer.carts6.schemas.testSchema4"
+            + ".policy.fault.protocols.rest.delay.fixedDelay",
+        int.class, -1)).thenReturn(-1);
+    Mockito.when(environment.getProperty(
+        "servicecomb.governance.Consumer.carts6.schemas.testSchema4"
+            + ".policy.fault.protocols.rest.delay.percent",
+        int.class, -1)).thenReturn(-1);
+
+    Mockito.when(environment.getProperty(
+        "servicecomb.governance.Consumer.carts6"
+            + ".policy.fault.protocols.rest.delay.fixedDelay",
+        int.class, -1)).thenReturn(-1);
+    Mockito.when(environment.getProperty(
+        "servicecomb.governance.Consumer.carts6"
+            + ".policy.fault.protocols.rest.delay.percent",
+        int.class, -1)).thenReturn(-1);
+
+    Mockito.when(environment.getProperty(
+            "servicecomb.governance.Consumer._global"
+                + ".policy.fault.protocols.rest.delay.fixedDelay",
+            int.class, -1))
+        .thenReturn(-1);
+    Mockito.when(environment.getProperty(
+            "servicecomb.governance.Consumer._global"
+                + ".policy.fault.protocols.rest.delay.percent",
+            int.class, -1))
+        .thenReturn(-1);
+
     FaultInjectionUtil.getConfigCenterValue().clear();
 
     invocation = Mockito.mock(Invocation.class);
@@ -55,7 +95,6 @@ public class TestConsumerDelayFaultFilter {
 
   @AfterEach
   public void after() {
-    ArchaiusUtils.resetConfig();
   }
 
   @AfterAll
@@ -65,17 +104,15 @@ public class TestConsumerDelayFaultFilter {
 
   @Test
   public void injectFaultVertxDelay() throws Exception {
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay",
 "10");
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent",
 "100");
-
-    Assertions.assertEquals("10", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
-        .getString());
-    Assertions.assertEquals("100", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
-        .getString());
+    
Mockito.when(environment.getProperty("servicecomb.governance.Consumer._global"
+                + ".policy.fault.protocols.rest.delay.fixedDelay",
+            int.class, -1))
+        .thenReturn(10);
+    Mockito.when(
+            environment.getProperty("servicecomb.governance.Consumer._global"
+                    + ".policy.fault.protocols.rest.delay.percent",
+                int.class, -1))
+        .thenReturn(100);
 
     ConsumerDelayFaultFilter delayFault = new ConsumerDelayFaultFilter();
     FilterNode filterNode = Mockito.mock(FilterNode.class);
@@ -87,17 +124,14 @@ public class TestConsumerDelayFaultFilter {
 
   @Test
   public void injectFaultSystemDelay() throws Exception {
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay",
 "10");
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent",
 "100");
-
-    Assertions.assertEquals("10", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
-        .getString());
-    Assertions.assertEquals("100", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
-        .getString());
+    Mockito.when(
+            
environment.getProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay",
+                int.class, -1))
+        .thenReturn(10);
+    Mockito.when(
+            
environment.getProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent",
+                int.class, -1))
+        .thenReturn(100);
 
     ConsumerDelayFaultFilter delayFault = new ConsumerDelayFaultFilter();
     FilterNode filterNode = Mockito.mock(FilterNode.class);
@@ -109,16 +143,14 @@ public class TestConsumerDelayFaultFilter {
 
   @Test
   public void injectFaultNotDelay() throws Exception {
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay",
 "10");
-    
ArchaiusUtils.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent",
 "0");
-
-    Assertions.assertEquals("10", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay")
-        .getString());
-    Assertions.assertEquals("0", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
-        .getString());
+    Mockito.when(
+            
environment.getProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.fixedDelay",
+                int.class, -1))
+        .thenReturn(10);
+    Mockito.when(
+            
environment.getProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent",
+                int.class, -1))
+        .thenReturn(0);
 
     ConsumerDelayFaultFilter delayFault = new ConsumerDelayFaultFilter();
     FilterNode filterNode = Mockito.mock(FilterNode.class);
@@ -130,13 +162,6 @@ public class TestConsumerDelayFaultFilter {
 
   @Test
   public void injectFaultNoPercentageConfig() throws Exception {
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent",
 null);
-
-    Assertions.assertNull(DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
-        .getString());
-
     ConsumerDelayFaultFilter delayFault = new ConsumerDelayFaultFilter();
     FilterNode filterNode = Mockito.mock(FilterNode.class);
     Mockito.when(filterNode.onFilter(invocation))
@@ -147,12 +172,10 @@ public class TestConsumerDelayFaultFilter {
 
   @Test
   public void injectFaultNoDelayMsConfig() throws Exception {
-    ArchaiusUtils
-        
.setProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent",
 "10");
-
-    Assertions.assertEquals("10", DynamicProperty
-        
.getInstance("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent")
-        .getString());
+    Mockito.when(
+            
environment.getProperty("servicecomb.governance.Consumer._global.policy.fault.protocols.rest.delay.percent",
+                int.class, -1))
+        .thenReturn(10);
 
     ConsumerDelayFaultFilter delayFault = new ConsumerDelayFaultFilter();
     FilterNode filterNode = Mockito.mock(FilterNode.class);
diff --git 
a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectConfig.java
 
b/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectConfig.java
deleted file mode 100644
index 811e736ea..000000000
--- 
a/handlers/handler-fault-injection/src/test/java/org/apache/servicecomb/faultinjection/TestFaultInjectConfig.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.faultinjection;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-/**
- * Tests the fault injection configuration.
- */
-public class TestFaultInjectConfig {
-  FaultInjectionConfig faultCfg;
-
-  FaultInjectionConst faultConst;
-
-  FaultParam faultParam;
-
-  @BeforeEach
-  public void setUp() throws Exception {
-    faultParam = new FaultParam();
-  }
-
-  @AfterEach
-  public void tearDown() throws Exception {
-    faultCfg = null;
-    faultConst = null;
-    faultParam = null;
-  }
-
-  @Test
-  public void testFaultInjectConfig() throws Exception {
-    int val = 
FaultInjectionConfig.getConfigVal("servicecomb.servicecomb.handler.consumer.faultinject.config",
 0);
-    Assertions.assertEquals(0, val);
-  }
-
-  @Test
-  public void testConstants() {
-    Assertions.assertEquals("servicecomb.governance.Consumer.", 
FaultInjectionConst.CONSUMER_FAULTINJECTION);
-    Assertions.assertEquals("policy.fault.protocols.", 
FaultInjectionConst.CONSUMER_FAULTINJECTION_POLICY_PROTOCOLS);
-    Assertions.assertEquals(-1, 
FaultInjectionConst.FAULT_INJECTION_DEFAULT_VALUE);
-    Assertions.assertEquals("servicecomb.governance.Consumer._global.",
-        FaultInjectionConst.CONSUMER_FAULTINJECTION_GLOBAL);
-    Assertions.assertEquals(-1, FaultInjectionConst.FAULT_INJECTION_ERROR);
-  }
-}
diff --git 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
index 807842850..c7f286c2d 100644
--- 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
+++ 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
@@ -17,15 +17,9 @@
 
 package org.apache.servicecomb.qps;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.netflix.config.DynamicBooleanProperty;
-import com.netflix.config.DynamicPropertyFactory;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 
 public final class Config {
-  private static final Logger LOGGER = LoggerFactory.getLogger(Config.class);
-
   public static final String STRATEGY_KEY = "servicecomb.flowcontrol.strategy";
 
   public static final String ANY_SERVICE = "ANY";
@@ -56,29 +50,15 @@ public final class Config {
 
   public static Config INSTANCE = new Config();
 
-  private final DynamicBooleanProperty consumerEnabled =
-      
DynamicPropertyFactory.getInstance().getBooleanProperty(CONSUMER_ENABLED, true);
-
-  private final DynamicBooleanProperty providerEnabled =
-      
DynamicPropertyFactory.getInstance().getBooleanProperty(PROVIDER_ENABLED, true);
-
   public Config() {
-    consumerEnabled.addCallback(() -> {
-      boolean newValue = consumerEnabled.get();
-      LOGGER.info("{} changed from {} to {}", CONSUMER_ENABLED, 
consumerEnabled, newValue);
-    });
-
-    providerEnabled.addCallback(() -> {
-      boolean newValue = providerEnabled.get();
-      LOGGER.info("{} changed from {} to {}", PROVIDER_ENABLED, 
providerEnabled, newValue);
-    });
+
   }
 
   public boolean isConsumerEnabled() {
-    return consumerEnabled.get();
+    return LegacyPropertyFactory.getBooleanProperty(CONSUMER_ENABLED, true);
   }
 
   public boolean isProviderEnabled() {
-    return providerEnabled.get();
+    return LegacyPropertyFactory.getBooleanProperty(PROVIDER_ENABLED, true);
   }
 }
diff --git 
a/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/TestConfig.java
 
b/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/TestConfig.java
deleted file mode 100644
index ea9f47440..000000000
--- 
a/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/TestConfig.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.qps;
-
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-public class TestConfig {
-  @BeforeAll
-  public static void classSetup() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @AfterAll
-  public static void classTeardown() {
-    ArchaiusUtils.resetConfig();
-  }
-
-  @Test
-  public void testEnabled() {
-    Config.INSTANCE = new Config();
-
-    Assertions.assertTrue(Config.INSTANCE.isProviderEnabled());
-    ArchaiusUtils.setProperty(Config.PROVIDER_ENABLED, false);
-    Assertions.assertFalse(Config.INSTANCE.isProviderEnabled());
-
-    ArchaiusUtils.setProperty(Config.PROVIDER_ENABLED, null);
-    Assertions.assertTrue(Config.INSTANCE.isProviderEnabled());
-
-    Assertions.assertTrue(Config.INSTANCE.isConsumerEnabled());
-    ArchaiusUtils.setProperty(Config.CONSUMER_ENABLED, false);
-    Assertions.assertFalse(Config.INSTANCE.isConsumerEnabled());
-
-    ArchaiusUtils.setProperty(Config.CONSUMER_ENABLED, null);
-    Assertions.assertTrue(Config.INSTANCE.isConsumerEnabled());
-  }
-}
diff --git 
a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
 
b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
index d4c1fbe1c..4d044f2e9 100644
--- 
a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
+++ 
b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
@@ -30,17 +30,15 @@ import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
 import org.apache.servicecomb.core.filter.ProviderFilter;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.foundation.common.utils.JsonUtils;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.util.CollectionUtils;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
-import com.netflix.config.DynamicPropertyFactory;
-import com.netflix.config.DynamicStringProperty;
 
 public class RouterAddHeaderFilter implements Filter {
 
@@ -48,48 +46,28 @@ public class RouterAddHeaderFilter implements Filter {
 
   private static final String SERVICECOMB_ROUTER_HEADER = 
"servicecomb.router.header";
 
-  private static List<String> allHeader = new ArrayList<>();
+  private List<String> allHeader = new ArrayList<>();
 
-  /**
-   * read config and get Header
-   */
-  private boolean loadHeaders() {
-    if (!CollectionUtils.isEmpty(allHeader)) {
-      return true;
-    }
-    DynamicStringProperty headerStr = DynamicPropertyFactory.getInstance()
-        .getStringProperty(SERVICECOMB_ROUTER_HEADER, null, () -> {
-          DynamicStringProperty temHeader = 
DynamicPropertyFactory.getInstance()
-              .getStringProperty(SERVICECOMB_ROUTER_HEADER, null);
-          if (!addAllHeaders(temHeader.get())) {
-            allHeader = new ArrayList<>();
-          }
-        });
-    return addAllHeaders(headerStr.get());
+  public RouterAddHeaderFilter() {
+    loadHeaders();
   }
 
   /**
-   * if don't have headers rule , avoid registered too many callback
+   * read config and get Header
    */
-  private boolean isHaveHeadersRule() {
-    DynamicStringProperty headerStr = DynamicPropertyFactory.getInstance()
-        .getStringProperty(SERVICECOMB_ROUTER_HEADER, null);
-    return StringUtils.isNotEmpty(headerStr.get());
+  private void loadHeaders() {
+    
addAllHeaders(LegacyPropertyFactory.getStringProperty(SERVICECOMB_ROUTER_HEADER));
   }
 
-  private boolean addAllHeaders(String str) {
+  private void addAllHeaders(String str) {
     if (StringUtils.isEmpty(str)) {
-      return false;
+      return;
     }
     try {
-      if (CollectionUtils.isEmpty(allHeader)) {
-        allHeader = Arrays.asList(str.split(","));
-      }
+      allHeader = Arrays.asList(str.split(","));
     } catch (Exception e) {
       LOGGER.error("route management Serialization failed: {}", 
e.getMessage());
-      return false;
     }
-    return true;
   }
 
   private Map<String, String> getHeaderMap(HttpServletRequestEx 
httpServletRequestEx) {
@@ -108,7 +86,6 @@ public class RouterAddHeaderFilter implements Filter {
     return ProviderFilter.PROVIDER_SCHEDULE_FILTER_ORDER - 1970;
   }
 
-  @Nonnull
   @Override
   public boolean enabledForInvocationType(InvocationType invocationType) {
     // enable for both edge and producer
@@ -131,20 +108,17 @@ public class RouterAddHeaderFilter implements Filter {
       return nextNode.onFilter(invocation);
     }
 
-    if (!isHaveHeadersRule()) {
+    if (allHeader.isEmpty()) {
       return nextNode.onFilter(invocation);
     }
 
-    if (loadHeaders()) {
-      Map<String, String> headerMap = getHeaderMap(invocation.getRequestEx());
-      try {
-        invocation
-            .addContext(RouterServerListFilter.ROUTER_HEADER, 
JsonUtils.OBJ_MAPPER.writeValueAsString(headerMap));
-      } catch (JsonProcessingException e) {
-        LOGGER.error("canary context serialization failed");
-      }
+    Map<String, String> headerMap = getHeaderMap(invocation.getRequestEx());
+    try {
+      invocation.addContext(RouterServerListFilter.ROUTER_HEADER,
+          JsonUtils.OBJ_MAPPER.writeValueAsString(headerMap));
+    } catch (JsonProcessingException e) {
+      LOGGER.error("canary context serialization failed");
     }
-
     return nextNode.onFilter(invocation);
   }
 }
diff --git 
a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterServerListFilter.java
 
b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterServerListFilter.java
index b7a3cbc7a..3ebe527b7 100644
--- 
a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterServerListFilter.java
+++ 
b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterServerListFilter.java
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.servicecomb.core.Invocation;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.foundation.common.utils.BeanUtils;
 import org.apache.servicecomb.foundation.common.utils.JsonUtils;
 import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
@@ -33,7 +34,6 @@ import org.slf4j.LoggerFactory;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
-import com.netflix.config.DynamicPropertyFactory;
 
 public class RouterServerListFilter implements ServerListFilterExt {
 
@@ -53,7 +53,7 @@ public class RouterServerListFilter implements 
ServerListFilterExt {
 
   @Override
   public boolean enabled() {
-    return DynamicPropertyFactory.getInstance().getStringProperty(ENABLE, 
"").get()
+    return LegacyPropertyFactory.getStringProperty(ENABLE, "")
         .equals(TYPE_ROUTER);
   }
 

Reply via email to