Skip to content

Commit 07853a0

Browse files
authored
Defining Canary Rate Threshold as default Circuit Breaker Strategy (#650)
1 parent 5d0884f commit 07853a0

File tree

6 files changed

+40
-14
lines changed

6 files changed

+40
-14
lines changed

RELEASE-NOTES.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 4.3.0
2+
* Defining **Canary Rate Threshold** as the default Circuit Breaker Strategy, see the [docs][4_3_0_1].
3+
4+
[4_3_0_1]: https://mageddo.github.io/dns-proxy-server/4.3/en/2-features/remote-solver-circuitbreaker/#canary-rate-threshold
5+
16
## 4.2.0
27
* Activating Config v3 for beta testing
38

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=4.2.0-snapshot
1+
version=4.3.0-snapshot

src/main/java/com/mageddo/dnsproxyserver/config/mapper/ConfigMapper.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import javax.inject.Inject;
1111
import javax.inject.Singleton;
1212

13+
import com.mageddo.dnsproxyserver.config.CanaryRateThresholdCircuitBreakerStrategyConfig;
14+
import com.mageddo.dnsproxyserver.config.CircuitBreakerStrategyConfig;
1315
import com.mageddo.dnsproxyserver.config.Config;
1416
import com.mageddo.dnsproxyserver.config.Config.DefaultDns;
1517
import com.mageddo.dnsproxyserver.config.Config.Env;
@@ -252,6 +254,14 @@ static Config buildDefault() {
252254
.build();
253255
}
254256

257+
public static CircuitBreakerStrategyConfig defaultCircuitBreaker() {
258+
return CanaryRateThresholdCircuitBreakerStrategyConfig.builder()
259+
.failureRateThreshold(21)
260+
.minimumNumberOfCalls(50)
261+
.permittedNumberOfCallsInHalfOpenState(10)
262+
.build();
263+
}
264+
255265
static Env defaultEnv() {
256266
return Env.of(Env.DEFAULT_ENV, List.of(aSampleEntry()));
257267
}
@@ -267,7 +277,7 @@ static Config.Entry aSampleEntry() {
267277
.build();
268278
}
269279

270-
public static StaticThresholdCircuitBreakerStrategyConfig defaultCircuitBreaker() {
280+
public static StaticThresholdCircuitBreakerStrategyConfig staticThresholdCircuitBreakerConfig() {
271281
return StaticThresholdCircuitBreakerStrategyConfig
272282
.builder()
273283
.failureThreshold(3)

src/test/java/testing/templates/CircuitBreakerConfigTemplates.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package testing.templates;
22

3+
import java.time.Duration;
4+
35
import com.mageddo.dnsproxyserver.config.CanaryRateThresholdCircuitBreakerStrategyConfig;
46
import com.mageddo.dnsproxyserver.config.CircuitBreakerStrategyConfig;
57
import com.mageddo.dnsproxyserver.config.NonResilientCircuitBreakerStrategyConfig;
68
import com.mageddo.dnsproxyserver.config.StaticThresholdCircuitBreakerStrategyConfig;
79
import com.mageddo.dnsproxyserver.config.mapper.ConfigMapper;
810

9-
import java.time.Duration;
10-
1111
public class CircuitBreakerConfigTemplates {
1212

1313
public static StaticThresholdCircuitBreakerStrategyConfig buildDefault() {
14-
return ConfigMapper.defaultCircuitBreaker();
14+
return ConfigMapper.staticThresholdCircuitBreakerConfig();
1515
}
1616

1717
public static StaticThresholdCircuitBreakerStrategyConfig oneTryFailSuccess() {

src/test/java/testing/templates/ConfigFlagArgsTemplates.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package testing.templates;
22

3+
import java.io.IOException;
4+
import java.nio.file.Files;
5+
import java.nio.file.Path;
6+
import java.util.Map;
7+
38
import com.mageddo.dnsproxyserver.config.dataformat.v2.jsonv1v2.vo.ConfigJson;
49
import com.mageddo.net.IpAddr;
510
import com.mageddo.net.SocketUtils;
11+
612
import lombok.Builder;
713
import lombok.SneakyThrows;
814
import lombok.Value;
915
import lombok.experimental.Accessors;
1016

11-
import java.io.IOException;
12-
import java.nio.file.Files;
13-
import java.nio.file.Path;
14-
import java.util.Map;
15-
1617
public class ConfigFlagArgsTemplates {
1718

1819
public static String[] withRandomPortsAndNotAsDefaultDnsUsingRemote(IpAddr addr) {
@@ -46,7 +47,16 @@ private static Path makeConfigFileRandomPortAndCustomRemote(IpAddr remoteAddr) {
4647
"defaultDns" : false,
4748
"logLevel" : "TRACE",
4849
"remoteDnsServers": ["%s"],
49-
"envs": []
50+
"envs": [],
51+
"solverRemote" : {
52+
"circuitBreaker": {
53+
"name": "STATIC_THRESHOLD",
54+
"failureThreshold": 3,
55+
"failureThresholdCapacity": 10,
56+
"successThreshold": 5,
57+
"testDelay": "PT20S"
58+
}
59+
}
5060
}
5161
""".formatted(webServerPort, dnsServerPort, remoteAddr.toString());
5262
return writeToTempPath(configJsonContent);

src/test/java/testing/templates/ConfigJsonFileTemplates.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package testing.templates;
22

3-
import com.mageddo.net.SocketUtils;
4-
import lombok.SneakyThrows;
5-
63
import java.nio.file.Files;
74
import java.nio.file.Path;
85

6+
import com.mageddo.net.SocketUtils;
7+
8+
import lombok.SneakyThrows;
9+
910
public class ConfigJsonFileTemplates {
1011

1112
public static final String RANDOM_PORTS_NO_DEFAULT_CUSTOM_LOCAL_DB_ENTRY = """

0 commit comments

Comments
 (0)