From f4705a63c7badac180e6ae08a36979734fa76cfe Mon Sep 17 00:00:00 2001 From: Alexandre Dutra Date: Sat, 28 Mar 2020 15:25:30 +0100 Subject: [PATCH 1/2] Use LOCAL_ONE when querying system.local - Fixes gh-17768 The system keyspace has a replication factor of 1 and is local to each node; it is therefore recommended to query system.local with a consistency level of ONE or LOCAL_ONE. Stronger consistency levels may result in an Unavailable error, but this does not mean that the node is down. --- .../boot/actuate/cassandra/CassandraHealthIndicator.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraHealthIndicator.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraHealthIndicator.java index 9b57d2eec9f9..0a5c6a1f71d1 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraHealthIndicator.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraHealthIndicator.java @@ -16,6 +16,7 @@ package org.springframework.boot.actuate.cassandra; +import com.datastax.oss.driver.api.core.ConsistencyLevel; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.SimpleStatement; @@ -34,6 +35,9 @@ */ public class CassandraHealthIndicator extends AbstractHealthIndicator { + private static final SimpleStatement SELECT = SimpleStatement.newInstance("SELECT release_version FROM system.local") + .setConsistencyLevel(ConsistencyLevel.LOCAL_ONE); + private CassandraOperations cassandraOperations; public CassandraHealthIndicator() { @@ -52,8 +56,7 @@ public CassandraHealthIndicator(CassandraOperations cassandraOperations) { @Override protected void doHealthCheck(Health.Builder builder) throws Exception { - SimpleStatement select = SimpleStatement.newInstance("SELECT release_version FROM system.local"); - ResultSet results = this.cassandraOperations.getCqlOperations().queryForResultSet(select); + ResultSet results = this.cassandraOperations.getCqlOperations().queryForResultSet(SELECT); if (results.isFullyFetched()) { builder.up(); return; From 6bc4bdd8320c9bf5bc06456414f0ed2fb991e194 Mon Sep 17 00:00:00 2001 From: Alexandre Dutra Date: Sat, 28 Mar 2020 15:55:05 +0100 Subject: [PATCH 2/2] Fix formatting issue --- .../boot/actuate/cassandra/CassandraHealthIndicator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraHealthIndicator.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraHealthIndicator.java index 0a5c6a1f71d1..31ed6ce78509 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraHealthIndicator.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/cassandra/CassandraHealthIndicator.java @@ -35,8 +35,8 @@ */ public class CassandraHealthIndicator extends AbstractHealthIndicator { - private static final SimpleStatement SELECT = SimpleStatement.newInstance("SELECT release_version FROM system.local") - .setConsistencyLevel(ConsistencyLevel.LOCAL_ONE); + private static final SimpleStatement SELECT = SimpleStatement + .newInstance("SELECT release_version FROM system.local").setConsistencyLevel(ConsistencyLevel.LOCAL_ONE); private CassandraOperations cassandraOperations;