From 301df4bc3732f9a2d8ecf1793b0e5023e151c0bc Mon Sep 17 00:00:00 2001 From: Elvis de Freitas Date: Wed, 4 Sep 2024 15:07:26 -0300 Subject: [PATCH] Fixing SolverRemote NPE #533 --- RELEASE-NOTES.md | 3 +++ gradle.properties | 2 +- .../application/failsafe/CircuitBreakerFactory.java | 13 ++++++++++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 015cccc4f..2de6544bd 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,3 +1,6 @@ +## 3.25.14 +* Fixing SolverRemote NPE #533 + ## 3.25.13 * Unifying circuit breaker abstractions #553 diff --git a/gradle.properties b/gradle.properties index 9ffa1d8d5..9bf694fac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=3.25.13-snapshot +version=3.25.14-snapshot diff --git a/src/main/java/com/mageddo/dnsproxyserver/solver/remote/application/failsafe/CircuitBreakerFactory.java b/src/main/java/com/mageddo/dnsproxyserver/solver/remote/application/failsafe/CircuitBreakerFactory.java index 23916d028..0159b1595 100644 --- a/src/main/java/com/mageddo/dnsproxyserver/solver/remote/application/failsafe/CircuitBreakerFactory.java +++ b/src/main/java/com/mageddo/dnsproxyserver/solver/remote/application/failsafe/CircuitBreakerFactory.java @@ -99,16 +99,23 @@ public List stats() { } public CircuitStatus findStatus(InetSocketAddress remoteAddress) { - return this.circuitBreakerMap.get(remoteAddress) - .findStatus(); + final var circuitBreaker = this.findCircuitBreakerFromCache(remoteAddress); + if (circuitBreaker == null) { + return null; + } + return circuitBreaker.findStatus(); } private Stats toStats(InetSocketAddress remoteAddr) { - final var circuitBreaker = this.circuitBreakerMap.get(remoteAddr); + final var circuitBreaker = this.findCircuitBreakerFromCache(remoteAddr); final var state = circuitBreaker.findStatus().name(); return Stats.of(remoteAddr.toString(), state); } + private CircuitBreakerDelegate findCircuitBreakerFromCache(InetSocketAddress remoteAddress) { + return this.circuitBreakerMap.get(remoteAddress); + } + @Value public static class Stats {