Skip to content

Commit 361034a

Browse files
authored
fix(health): fix null exception when DOWN (#160)
1 parent fe834d1 commit 361034a

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

starters/async-commons-starter/src/main/java/org/reactivecommons/async/starter/config/health/RCHealthIndicator.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55
public abstract class RCHealthIndicator {
66

77
public Mono<RCHealth> health() {
8-
return doHealthCheck(RCHealth.builder())
8+
var builder = RCHealth.builder();
9+
return doHealthCheck(builder)
910
.onErrorResume(e ->
10-
Mono.just(RCHealth.builder().down().withDetail("error", e.getMessage()).build())
11+
Mono.just(builder
12+
.down()
13+
.withDetail("error", e.getMessage())
14+
.build())
1115
);
1216
}
1317

starters/async-commons-starter/src/main/java/org/reactivecommons/async/starter/config/health/ReactiveCommonsHealthIndicator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
public class ReactiveCommonsHealthIndicator extends AbstractReactiveHealthIndicator {
1515
public static final String DOMAIN = "domain";
1616
public static final String VERSION = "version";
17+
public static final String UNKNOWN = "unknown";
1718
private final ConnectionManager manager;
1819

1920
@Override
@@ -29,7 +30,7 @@ protected Mono<Health> doHealthCheck(Health.Builder builder) {
2930
}
3031

3132
private Health.Builder reduceHealth(Health.Builder builder, RCHealth health) {
32-
String domain = health.details().get(DOMAIN).toString();
33+
String domain = health.details().getOrDefault(DOMAIN, UNKNOWN).toString();
3334
if (health.status().equals(RCHealth.Status.DOWN)) {
3435
log.error("Broker of domain {} is down", domain);
3536
return builder.down().withDetail(domain, health.details());

starters/async-commons-starter/src/test/java/org/reactivecommons/async/starter/config/health/ReactiveCommonsHealthIndicatorTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,17 @@ void shouldBeDown() {
7171
.expectNextMatches(health -> health.getStatus().toString().equals("DOWN"))
7272
.verifyComplete();
7373
}
74+
75+
@Test
76+
void shouldBeDownAndSetDomain() {
77+
// Arrange
78+
when(brokerProvider.healthCheck()).thenReturn(Mono.just(RCHealth.builder().down().build()));
79+
when(brokerProvider2.healthCheck()).thenReturn(Mono.just(RCHealth.builder().up().build()));
80+
// Act
81+
Mono<Health> flow = healthIndicator.health();
82+
// Assert
83+
StepVerifier.create(flow)
84+
.expectNextMatches(health -> health.getStatus().toString().equals("DOWN"))
85+
.verifyComplete();
86+
}
7487
}

0 commit comments

Comments
 (0)