Skip to content

Commit 6b956d8

Browse files
authored
feat: support disbale record by config (#236)
1 parent 78defd7 commit 6b956d8

5 files changed

Lines changed: 33 additions & 34 deletions

File tree

arex-instrumentation-foundation/src/main/java/io/arex/foundation/config/ConfigConstants.java renamed to arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/constants/ConfigConstants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.arex.foundation.config;
1+
package io.arex.agent.bootstrap.constants;
22

33
public class ConfigConstants {
44

@@ -21,6 +21,7 @@ public class ConfigConstants {
2121
public static final String EXCLUDE_SERVICE_OPERATION = "arex.exclude.service.operation";
2222
public static final String DUBBO_STREAM_REPLAY_THRESHOLD = "arex.dubbo.replay.threshold";
2323
public static final String DISABLE_REPLAY = "arex.disable.replay";
24+
public static final String DISABLE_RECORD = "arex.disable.record";
2425
public static final String DURING_WORK = "arex.during.work";
2526
public static final String AGENT_VERSION = "arex.agent.version";
2627
public static final String IP_VALIDATE = "arex.ip.validate";

arex-instrumentation-api/src/main/java/io/arex/inst/runtime/config/Config.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.arex.inst.runtime.config;
22

3+
import io.arex.agent.bootstrap.constants.ConfigConstants;
34
import io.arex.agent.bootstrap.util.ConcurrentHashSet;
45
import io.arex.agent.bootstrap.util.StringUtil;
56
import io.arex.inst.runtime.context.RecordLimiter;
@@ -179,17 +180,21 @@ public Set<String> getIncludeServiceOperations() {
179180
* 2. not in working time <br/>
180181
* 3. exceed rate limit <br/>
181182
* 4. local IP match target IP <br/>
183+
* 5. record disabled by config
182184
*
183185
* @return true: invalid, false: valid
184186
*/
185187
public boolean invalidRecord(String path) {
186188
if (getRecordRate() <= 0) {
187189
return true;
188190
}
189-
if (!getBoolean("arex.during.work", false)) {
191+
if (!getBoolean(ConfigConstants.DURING_WORK, false)) {
190192
return true;
191193
}
192-
if (!getBoolean("arex.ip.validate", false)) {
194+
if (!getBoolean(ConfigConstants.IP_VALIDATE, false)) {
195+
return true;
196+
}
197+
if (getBoolean(ConfigConstants.DISABLE_RECORD, false)) {
193198
return true;
194199
}
195200

arex-instrumentation-api/src/test/java/io/arex/inst/runtime/config/ConfigTest.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.arex.inst.runtime.config;
22

3+
import io.arex.agent.bootstrap.constants.ConfigConstants;
34
import io.arex.agent.bootstrap.util.ConcurrentHashSet;
45
import io.arex.inst.runtime.context.RecordLimiter;
56
import io.arex.inst.runtime.model.ArexConstants;
@@ -37,20 +38,25 @@ static Stream<Arguments> invalidCase() {
3738
config.recordRate(1).build();
3839
};
3940
Runnable mocker4 = () -> {
40-
config.addProperty("arex.during.work", "true").build();;
41+
config.addProperty(ConfigConstants.DURING_WORK, "true").build();;
4142
};
4243
Runnable mocker5 = () -> {
43-
config.addProperty("arex.ip.validate", "true").build();;
44+
config.addProperty(ConfigConstants.IP_VALIDATE, "true").build();
45+
RecordLimiter.init(mock -> true);
46+
};
47+
Runnable disableRecord = () -> {
48+
config.addProperty(ConfigConstants.DISABLE_RECORD, "true").build();;
4449
RecordLimiter.init(mock -> true);
4550
};
4651

47-
Predicate<Boolean> predicate1 = result -> !result;
48-
Predicate<Boolean> predicate2 = result -> result;
52+
Predicate<Boolean> assertFalse = result -> !result;
53+
Predicate<Boolean> assertTrue = result -> result;
4954
return Stream.of(
50-
arguments(mocker2, predicate2),
51-
arguments(mocker3, predicate2),
52-
arguments(mocker4, predicate2),
53-
arguments(mocker5, predicate1)
55+
arguments(mocker2, assertTrue),
56+
arguments(mocker3, assertTrue),
57+
arguments(mocker4, assertTrue),
58+
arguments(mocker5, assertFalse),
59+
arguments(disableRecord, assertTrue)
5460
);
5561
}
5662

arex-instrumentation-foundation/src/main/java/io/arex/foundation/config/ConfigManager.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.arex.foundation.config;
22

33
import com.google.common.annotations.VisibleForTesting;
4+
import io.arex.agent.bootstrap.util.MapUtils;
45
import io.arex.agent.bootstrap.util.StringUtil;
56
import io.arex.foundation.model.ConfigQueryResponse.DynamicClassConfiguration;
67
import io.arex.foundation.model.ConfigQueryResponse.ResponseBody;
@@ -29,7 +30,7 @@
2930
import java.util.*;
3031
import java.util.stream.Stream;
3132

32-
import static io.arex.foundation.config.ConfigConstants.*;
33+
import static io.arex.agent.bootstrap.constants.ConfigConstants.*;
3334

3435
public class ConfigManager {
3536

@@ -60,7 +61,6 @@ public class ConfigManager {
6061
private Set<String> excludeServiceOperations;
6162
private String targetAddress;
6263
private int dubboStreamReplayThreshold;
63-
private boolean disableReplay;
6464
private List<ConfigListener> listeners = new ArrayList<>();
6565
private Map<String, String> extendField;
6666

@@ -231,7 +231,6 @@ void init() {
231231
setRetransformModules(System.getProperty(RETRANSFORM_MODULE));
232232
setExcludeServiceOperations(System.getProperty(EXCLUDE_SERVICE_OPERATION));
233233
setDubboStreamReplayThreshold(System.getProperty(DUBBO_STREAM_REPLAY_THRESHOLD, "100"));
234-
setDisableReplay(System.getProperty(DISABLE_REPLAY));
235234
}
236235

237236
@VisibleForTesting
@@ -255,7 +254,8 @@ void readConfigFromFile(String configPath) {
255254
setDisabledModules(configMap.get(DISABLE_MODULE));
256255
setRetransformModules(configMap.get(RETRANSFORM_MODULE));
257256
setExcludeServiceOperations(configMap.get(EXCLUDE_SERVICE_OPERATION));
258-
setDisableReplay(configMap.get(DISABLE_REPLAY));
257+
System.setProperty(DISABLE_REPLAY, StringUtil.defaultString(configMap.get(DISABLE_REPLAY)));
258+
System.setProperty(DISABLE_RECORD, StringUtil.defaultString(configMap.get(DISABLE_RECORD)));
259259
}
260260

261261
private static Map<String, String> parseConfigFile(String configPath) {
@@ -305,12 +305,13 @@ private void updateRuntimeConfig() {
305305
Map<String, String> configMap = new HashMap<>();
306306
configMap.put(DYNAMIC_RESULT_SIZE_LIMIT, String.valueOf(getDynamicResultSizeLimit()));
307307
configMap.put(TIME_MACHINE, String.valueOf(startTimeMachine()));
308-
configMap.put(DISABLE_REPLAY, String.valueOf(disableReplay()));
308+
configMap.put(DISABLE_REPLAY, System.getProperty(DISABLE_REPLAY));
309+
configMap.put(DISABLE_RECORD, System.getProperty(DISABLE_RECORD));
309310
configMap.put(DURING_WORK, Boolean.toString(nextWorkTime() <= 0));
310311
configMap.put(AGENT_VERSION, agentVersion);
311312
configMap.put(IP_VALIDATE, Boolean.toString(checkTargetAddress()));
312313
Map<String, String> extendFieldMap = getExtendField();
313-
if (extendFieldMap != null && !extendFieldMap.isEmpty()) {
314+
if (MapUtils.isNotEmpty(extendFieldMap)) {
314315
configMap.putAll(extendFieldMap);
315316
}
316317

@@ -523,19 +524,6 @@ public int getDubboStreamReplayThreshold() {
523524
return dubboStreamReplayThreshold;
524525
}
525526

526-
public void setDisableReplay(String disableReplay) {
527-
if (StringUtil.isEmpty(disableReplay)) {
528-
return;
529-
}
530-
531-
this.disableReplay = Boolean.parseBoolean(disableReplay);
532-
System.setProperty(DISABLE_REPLAY, disableReplay);
533-
}
534-
535-
public boolean disableReplay() {
536-
return disableReplay;
537-
}
538-
539527
public Map<String, String> getExtendField() {
540528
return extendField;
541529
}

arex-instrumentation-foundation/src/test/java/io/arex/foundation/config/ConfigManagerTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.arex.foundation.config;
22

3+
import io.arex.agent.bootstrap.constants.ConfigConstants;
34
import io.arex.foundation.model.ConfigQueryResponse;
45
import io.arex.foundation.model.ConfigQueryResponse.DynamicClassConfiguration;
56
import io.arex.foundation.util.NetUtils;
@@ -28,7 +29,7 @@
2829
import java.util.stream.Stream;
2930
import org.mockito.MockedStatic;
3031

31-
import static io.arex.foundation.config.ConfigConstants.ENABLE_REPORT_STATUS;
32+
import static io.arex.agent.bootstrap.constants.ConfigConstants.ENABLE_REPORT_STATUS;
3233
import static org.junit.jupiter.api.Assertions.*;
3334
import static org.junit.jupiter.params.provider.Arguments.arguments;
3435
import static org.mockito.Mockito.mockStatic;
@@ -50,13 +51,11 @@ static void tearDown() {
5051
void initFromSystemPropertyTest() {
5152
System.setProperty("arex.service.name", "test-your-service");
5253
System.setProperty("arex.storage.service.host", "test-storage-service.host ");
53-
System.setProperty("arex.disable.replay", "true");
54-
System.setProperty(ENABLE_REPORT_STATUS, "true");
54+
System.setProperty(ConfigConstants.DISABLE_REPLAY, "true");
5555
configManager.init();
5656

5757
assertEquals("test-your-service", configManager.getServiceName());
5858
assertEquals("test-storage-service.host", configManager.getStorageServiceHost());
59-
assertTrue(configManager.disableReplay());
6059
assertTrue(configManager.isEnableReportStatus());
6160
}
6261

0 commit comments

Comments
 (0)