diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index d93980426..b655dd03b 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,8 @@ +## 4.3.0 +* Defining **Canary Rate Threshold** as the default Circuit Breaker Strategy, see the [docs][4_3_0_1]. + +[4_3_0_1]: https://mageddo.github.io/dns-proxy-server/4.3/en/2-features/remote-solver-circuitbreaker/#canary-rate-threshold + ## 4.2.0 * Activating Config v3 for beta testing diff --git a/gradle.properties b/gradle.properties index fad74d6d1..c8f46e1a6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=4.2.0-snapshot +version=4.3.0-snapshot diff --git a/src/main/java/com/mageddo/dnsproxyserver/config/mapper/ConfigMapper.java b/src/main/java/com/mageddo/dnsproxyserver/config/mapper/ConfigMapper.java index d38500ef7..02fbc09f3 100644 --- a/src/main/java/com/mageddo/dnsproxyserver/config/mapper/ConfigMapper.java +++ b/src/main/java/com/mageddo/dnsproxyserver/config/mapper/ConfigMapper.java @@ -10,6 +10,8 @@ import javax.inject.Inject; import javax.inject.Singleton; +import com.mageddo.dnsproxyserver.config.CanaryRateThresholdCircuitBreakerStrategyConfig; +import com.mageddo.dnsproxyserver.config.CircuitBreakerStrategyConfig; import com.mageddo.dnsproxyserver.config.Config; import com.mageddo.dnsproxyserver.config.Config.DefaultDns; import com.mageddo.dnsproxyserver.config.Config.Env; @@ -252,6 +254,14 @@ static Config buildDefault() { .build(); } + public static CircuitBreakerStrategyConfig defaultCircuitBreaker() { + return CanaryRateThresholdCircuitBreakerStrategyConfig.builder() + .failureRateThreshold(21) + .minimumNumberOfCalls(50) + .permittedNumberOfCallsInHalfOpenState(10) + .build(); + } + static Env defaultEnv() { return Env.of(Env.DEFAULT_ENV, List.of(aSampleEntry())); } @@ -267,7 +277,7 @@ static Config.Entry aSampleEntry() { .build(); } - public static StaticThresholdCircuitBreakerStrategyConfig defaultCircuitBreaker() { + public static StaticThresholdCircuitBreakerStrategyConfig staticThresholdCircuitBreakerConfig() { return StaticThresholdCircuitBreakerStrategyConfig .builder() .failureThreshold(3) diff --git a/src/test/java/testing/templates/CircuitBreakerConfigTemplates.java b/src/test/java/testing/templates/CircuitBreakerConfigTemplates.java index 30a7c9ad9..6496e8397 100644 --- a/src/test/java/testing/templates/CircuitBreakerConfigTemplates.java +++ b/src/test/java/testing/templates/CircuitBreakerConfigTemplates.java @@ -1,17 +1,17 @@ package testing.templates; +import java.time.Duration; + import com.mageddo.dnsproxyserver.config.CanaryRateThresholdCircuitBreakerStrategyConfig; import com.mageddo.dnsproxyserver.config.CircuitBreakerStrategyConfig; import com.mageddo.dnsproxyserver.config.NonResilientCircuitBreakerStrategyConfig; import com.mageddo.dnsproxyserver.config.StaticThresholdCircuitBreakerStrategyConfig; import com.mageddo.dnsproxyserver.config.mapper.ConfigMapper; -import java.time.Duration; - public class CircuitBreakerConfigTemplates { public static StaticThresholdCircuitBreakerStrategyConfig buildDefault() { - return ConfigMapper.defaultCircuitBreaker(); + return ConfigMapper.staticThresholdCircuitBreakerConfig(); } public static StaticThresholdCircuitBreakerStrategyConfig oneTryFailSuccess() { diff --git a/src/test/java/testing/templates/ConfigFlagArgsTemplates.java b/src/test/java/testing/templates/ConfigFlagArgsTemplates.java index df992b99f..4298d916a 100644 --- a/src/test/java/testing/templates/ConfigFlagArgsTemplates.java +++ b/src/test/java/testing/templates/ConfigFlagArgsTemplates.java @@ -1,18 +1,19 @@ package testing.templates; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; + import com.mageddo.dnsproxyserver.config.dataformat.v2.jsonv1v2.vo.ConfigJson; import com.mageddo.net.IpAddr; import com.mageddo.net.SocketUtils; + import lombok.Builder; import lombok.SneakyThrows; import lombok.Value; import lombok.experimental.Accessors; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Map; - public class ConfigFlagArgsTemplates { public static String[] withRandomPortsAndNotAsDefaultDnsUsingRemote(IpAddr addr) { @@ -46,7 +47,16 @@ private static Path makeConfigFileRandomPortAndCustomRemote(IpAddr remoteAddr) { "defaultDns" : false, "logLevel" : "TRACE", "remoteDnsServers": ["%s"], - "envs": [] + "envs": [], + "solverRemote" : { + "circuitBreaker": { + "name": "STATIC_THRESHOLD", + "failureThreshold": 3, + "failureThresholdCapacity": 10, + "successThreshold": 5, + "testDelay": "PT20S" + } + } } """.formatted(webServerPort, dnsServerPort, remoteAddr.toString()); return writeToTempPath(configJsonContent); diff --git a/src/test/java/testing/templates/ConfigJsonFileTemplates.java b/src/test/java/testing/templates/ConfigJsonFileTemplates.java index cc1963735..9cc13a1e5 100644 --- a/src/test/java/testing/templates/ConfigJsonFileTemplates.java +++ b/src/test/java/testing/templates/ConfigJsonFileTemplates.java @@ -1,11 +1,12 @@ package testing.templates; -import com.mageddo.net.SocketUtils; -import lombok.SneakyThrows; - import java.nio.file.Files; import java.nio.file.Path; +import com.mageddo.net.SocketUtils; + +import lombok.SneakyThrows; + public class ConfigJsonFileTemplates { public static final String RANDOM_PORTS_NO_DEFAULT_CUSTOM_LOCAL_DB_ENTRY = """