From c9e32aaa475b029157b1a2e7e62fd15f324738d6 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Sun, 29 Mar 2020 18:37:30 +0200 Subject: [PATCH] Use LOCAL_ONE when querying system.local This commit is a follow-up of gh-20709 to apply the same consistency level to the Cassandra reactive health indicator. Closes gh-20713 --- .../cassandra/CassandraReactiveHealthIndicator.java | 13 ++++++++----- .../CassandraReactiveHealthIndicatorTests.java | 7 ++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraReactiveHealthIndicator.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraReactiveHealthIndicator.java index 845f2869866..aad8b78afef 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraReactiveHealthIndicator.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraReactiveHealthIndicator.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,9 @@ */ package org.springframework.boot.actuate.cassandra; -import com.datastax.driver.core.querybuilder.QueryBuilder; -import com.datastax.driver.core.querybuilder.Select; +import com.datastax.driver.core.ConsistencyLevel; +import com.datastax.driver.core.SimpleStatement; +import com.datastax.driver.core.Statement; import reactor.core.publisher.Mono; import org.springframework.boot.actuate.health.AbstractReactiveHealthIndicator; @@ -33,6 +34,9 @@ import org.springframework.util.Assert; */ public class CassandraReactiveHealthIndicator extends AbstractReactiveHealthIndicator { + private static final Statement SELECT = new SimpleStatement("SELECT release_version FROM system.local") + .setConsistencyLevel(ConsistencyLevel.LOCAL_ONE); + private final ReactiveCassandraOperations reactiveCassandraOperations; /** @@ -47,8 +51,7 @@ public class CassandraReactiveHealthIndicator extends AbstractReactiveHealthIndi @Override protected Mono doHealthCheck(Health.Builder builder) { - Select select = QueryBuilder.select("release_version").from("system", "local"); - return this.reactiveCassandraOperations.getReactiveCqlOperations().queryForObject(select, String.class) + return this.reactiveCassandraOperations.getReactiveCqlOperations().queryForObject(SELECT, String.class) .map((version) -> builder.up().withDetail("version", version).build()).single(); } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cassandra/CassandraReactiveHealthIndicatorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cassandra/CassandraReactiveHealthIndicatorTests.java index 6f7422cee55..808f3ac6ea1 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cassandra/CassandraReactiveHealthIndicatorTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/cassandra/CassandraReactiveHealthIndicatorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ */ package org.springframework.boot.actuate.cassandra; -import com.datastax.driver.core.querybuilder.Select; +import com.datastax.driver.core.Statement; import org.junit.Test; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -42,7 +42,8 @@ public class CassandraReactiveHealthIndicatorTests { @Test public void testCassandraIsUp() { ReactiveCqlOperations reactiveCqlOperations = mock(ReactiveCqlOperations.class); - given(reactiveCqlOperations.queryForObject(any(Select.class), eq(String.class))).willReturn(Mono.just("6.0.0")); + given(reactiveCqlOperations.queryForObject(any(Statement.class), eq(String.class))) + .willReturn(Mono.just("6.0.0")); ReactiveCassandraOperations reactiveCassandraOperations = mock(ReactiveCassandraOperations.class); given(reactiveCassandraOperations.getReactiveCqlOperations()).willReturn(reactiveCqlOperations);