Deprecate Cassandra health indicators that rely on Spring Data

With the introduction of health indicators that only require the
CqlSession, this commit deprecates the health indicators that require
Spring Data since the latter build on top of the former.

Closes gh-23226
This commit is contained in:
Stephane Nicoll 2020-09-08 14:39:37 +02:00
parent b1a843279a
commit b9b7393053
10 changed files with 73 additions and 43 deletions

View File

@ -19,9 +19,8 @@ package org.springframework.boot.actuate.autoconfigure.cassandra;
import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.CqlSession;
import org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorConfigurations.CassandraDriverConfiguration; import org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorConfigurations.CassandraDriverConfiguration;
import org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorConfigurations.CassandraOperationsConfiguration;
import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraHealthIndicator; import org.springframework.boot.actuate.cassandra.CassandraDriverHealthIndicator;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration;
@ -32,7 +31,7 @@ import org.springframework.context.annotation.Import;
/** /**
* {@link EnableAutoConfiguration Auto-configuration} for * {@link EnableAutoConfiguration Auto-configuration} for
* {@link CassandraHealthIndicator}. * {@link CassandraDriverHealthIndicator}.
* *
* @author Julien Dubois * @author Julien Dubois
* @author Stephane Nicoll * @author Stephane Nicoll
@ -43,7 +42,9 @@ import org.springframework.context.annotation.Import;
@ConditionalOnEnabledHealthIndicator("cassandra") @ConditionalOnEnabledHealthIndicator("cassandra")
@AutoConfigureAfter({ CassandraAutoConfiguration.class, CassandraDataAutoConfiguration.class, @AutoConfigureAfter({ CassandraAutoConfiguration.class, CassandraDataAutoConfiguration.class,
CassandraReactiveHealthContributorAutoConfiguration.class }) CassandraReactiveHealthContributorAutoConfiguration.class })
@Import({ CassandraOperationsConfiguration.class, CassandraDriverConfiguration.class }) @Import({ CassandraDriverConfiguration.class,
CassandraHealthContributorConfigurations.CassandraOperationsConfiguration.class })
@SuppressWarnings("deprecation")
public class CassandraHealthContributorAutoConfiguration { public class CassandraHealthContributorAutoConfiguration {
} }

View File

@ -24,8 +24,6 @@ import org.springframework.boot.actuate.autoconfigure.health.CompositeHealthCont
import org.springframework.boot.actuate.autoconfigure.health.CompositeReactiveHealthContributorConfiguration; import org.springframework.boot.actuate.autoconfigure.health.CompositeReactiveHealthContributorConfiguration;
import org.springframework.boot.actuate.cassandra.CassandraDriverHealthIndicator; import org.springframework.boot.actuate.cassandra.CassandraDriverHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraDriverReactiveHealthIndicator; import org.springframework.boot.actuate.cassandra.CassandraDriverReactiveHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator;
import org.springframework.boot.actuate.health.HealthContributor; import org.springframework.boot.actuate.health.HealthContributor;
import org.springframework.boot.actuate.health.ReactiveHealthContributor; import org.springframework.boot.actuate.health.ReactiveHealthContributor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@ -59,8 +57,9 @@ class CassandraHealthContributorConfigurations {
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@ConditionalOnClass(CassandraOperations.class) @ConditionalOnClass(CassandraOperations.class)
@ConditionalOnBean(CassandraOperations.class) @ConditionalOnBean(CassandraOperations.class)
static class CassandraOperationsConfiguration @Deprecated
extends CompositeHealthContributorConfiguration<CassandraHealthIndicator, CassandraOperations> { static class CassandraOperationsConfiguration extends
CompositeHealthContributorConfiguration<org.springframework.boot.actuate.cassandra.CassandraHealthIndicator, CassandraOperations> {
@Bean @Bean
@ConditionalOnMissingBean(name = { "cassandraHealthIndicator", "cassandraHealthContributor" }) @ConditionalOnMissingBean(name = { "cassandraHealthIndicator", "cassandraHealthContributor" })
@ -86,8 +85,9 @@ class CassandraHealthContributorConfigurations {
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@ConditionalOnClass(ReactiveCassandraOperations.class) @ConditionalOnClass(ReactiveCassandraOperations.class)
@ConditionalOnBean(ReactiveCassandraOperations.class) @ConditionalOnBean(ReactiveCassandraOperations.class)
@Deprecated
static class CassandraReactiveOperationsConfiguration extends static class CassandraReactiveOperationsConfiguration extends
CompositeReactiveHealthContributorConfiguration<CassandraReactiveHealthIndicator, ReactiveCassandraOperations> { CompositeReactiveHealthContributorConfiguration<org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator, ReactiveCassandraOperations> {
@Bean @Bean
@ConditionalOnMissingBean(name = { "cassandraHealthIndicator", "cassandraHealthContributor" }) @ConditionalOnMissingBean(name = { "cassandraHealthIndicator", "cassandraHealthContributor" })

View File

@ -19,9 +19,8 @@ import com.datastax.oss.driver.api.core.CqlSession;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorConfigurations.CassandraReactiveDriverConfiguration; import org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorConfigurations.CassandraReactiveDriverConfiguration;
import org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorConfigurations.CassandraReactiveOperationsConfiguration;
import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator; import org.springframework.boot.actuate.cassandra.CassandraDriverReactiveHealthIndicator;
import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@ -31,7 +30,7 @@ import org.springframework.context.annotation.Import;
/** /**
* {@link EnableAutoConfiguration Auto-configuration} for * {@link EnableAutoConfiguration Auto-configuration} for
* {@link CassandraReactiveHealthIndicator}. * {@link CassandraDriverReactiveHealthIndicator}.
* *
* @author Artsiom Yudovin * @author Artsiom Yudovin
* @author Stephane Nicoll * @author Stephane Nicoll
@ -41,7 +40,9 @@ import org.springframework.context.annotation.Import;
@ConditionalOnClass({ CqlSession.class, Flux.class }) @ConditionalOnClass({ CqlSession.class, Flux.class })
@ConditionalOnEnabledHealthIndicator("cassandra") @ConditionalOnEnabledHealthIndicator("cassandra")
@AutoConfigureAfter(CassandraReactiveDataAutoConfiguration.class) @AutoConfigureAfter(CassandraReactiveDataAutoConfiguration.class)
@Import({ CassandraReactiveOperationsConfiguration.class, CassandraReactiveDriverConfiguration.class }) @Import({ CassandraReactiveDriverConfiguration.class,
CassandraHealthContributorConfigurations.CassandraReactiveOperationsConfiguration.class })
@SuppressWarnings("deprecation")
public class CassandraReactiveHealthContributorAutoConfiguration { public class CassandraReactiveHealthContributorAutoConfiguration {
} }

View File

@ -21,7 +21,6 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration;
import org.springframework.boot.actuate.cassandra.CassandraDriverHealthIndicator; import org.springframework.boot.actuate.cassandra.CassandraDriverHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraHealthIndicator;
import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
@ -36,6 +35,7 @@ import static org.mockito.Mockito.mock;
* @author Phillip Webb * @author Phillip Webb
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
@SuppressWarnings("deprecation")
class CassandraHealthContributorAutoConfigurationTests { class CassandraHealthContributorAutoConfigurationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
@ -45,21 +45,31 @@ class CassandraHealthContributorAutoConfigurationTests {
@Test @Test
void runWithoutCqlSessionOrCassandraOperationsShouldNotCreateIndicator() { void runWithoutCqlSessionOrCassandraOperationsShouldNotCreateIndicator() {
this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean("cassandraHealthContributor") this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean("cassandraHealthContributor")
.doesNotHaveBean(CassandraHealthIndicator.class).doesNotHaveBean(CassandraDriverHealthIndicator.class)); .doesNotHaveBean(org.springframework.boot.actuate.cassandra.CassandraHealthIndicator.class)
} .doesNotHaveBean(CassandraDriverHealthIndicator.class));
@Test
void runWithCassandraOperationsShouldCreateRegularIndicator() {
this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class))
.withBean(CassandraOperations.class, () -> mock(CassandraOperations.class))
.run((context) -> assertThat(context).hasSingleBean(CassandraHealthIndicator.class)
.doesNotHaveBean(CassandraDriverHealthIndicator.class));
} }
@Test @Test
void runWithCqlSessionOnlyShouldCreateDriverIndicator() { void runWithCqlSessionOnlyShouldCreateDriverIndicator() {
this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class)).run((context) -> assertThat(context) this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class))
.hasSingleBean(CassandraDriverHealthIndicator.class).doesNotHaveBean(CassandraHealthIndicator.class)); .run((context) -> assertThat(context).hasSingleBean(CassandraDriverHealthIndicator.class)
.doesNotHaveBean(org.springframework.boot.actuate.cassandra.CassandraHealthIndicator.class));
}
@Test
void runWithCassandraOperationsOnlyShouldCreateRegularIndicator() {
this.contextRunner.withBean(CassandraOperations.class, () -> mock(CassandraOperations.class))
.run((context) -> assertThat(context)
.hasSingleBean(org.springframework.boot.actuate.cassandra.CassandraHealthIndicator.class)
.doesNotHaveBean(CassandraDriverHealthIndicator.class));
}
@Test
void runWithCqlSessionAndCassandraOperationsShouldCreateDriverIndicator() {
this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class))
.withBean(CassandraOperations.class, () -> mock(CassandraOperations.class))
.run((context) -> assertThat(context).hasSingleBean(CassandraDriverHealthIndicator.class)
.doesNotHaveBean(org.springframework.boot.actuate.cassandra.CassandraHealthIndicator.class));
} }
@Test @Test
@ -67,7 +77,7 @@ class CassandraHealthContributorAutoConfigurationTests {
this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class)) this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class))
.withClassLoader(new FilteredClassLoader("org.springframework.data")) .withClassLoader(new FilteredClassLoader("org.springframework.data"))
.run((context) -> assertThat(context).hasSingleBean(CassandraDriverHealthIndicator.class) .run((context) -> assertThat(context).hasSingleBean(CassandraDriverHealthIndicator.class)
.doesNotHaveBean(CassandraHealthIndicator.class)); .doesNotHaveBean(org.springframework.boot.actuate.cassandra.CassandraHealthIndicator.class));
} }
@Test @Test
@ -76,7 +86,7 @@ class CassandraHealthContributorAutoConfigurationTests {
.withBean(CassandraOperations.class, () -> mock(CassandraOperations.class)) .withBean(CassandraOperations.class, () -> mock(CassandraOperations.class))
.withPropertyValues("management.health.cassandra.enabled:false") .withPropertyValues("management.health.cassandra.enabled:false")
.run((context) -> assertThat(context).doesNotHaveBean("cassandraHealthContributor") .run((context) -> assertThat(context).doesNotHaveBean("cassandraHealthContributor")
.doesNotHaveBean(CassandraHealthIndicator.class) .doesNotHaveBean(org.springframework.boot.actuate.cassandra.CassandraHealthIndicator.class)
.doesNotHaveBean(CassandraDriverHealthIndicator.class)); .doesNotHaveBean(CassandraDriverHealthIndicator.class));
} }

View File

@ -22,8 +22,6 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration;
import org.springframework.boot.actuate.cassandra.CassandraDriverHealthIndicator; import org.springframework.boot.actuate.cassandra.CassandraDriverHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraDriverReactiveHealthIndicator; import org.springframework.boot.actuate.cassandra.CassandraDriverReactiveHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraHealthIndicator;
import org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator;
import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
@ -39,6 +37,7 @@ import static org.mockito.Mockito.mock;
* @author Artsiom Yudovin * @author Artsiom Yudovin
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
@SuppressWarnings("deprecation")
class CassandraReactiveHealthContributorAutoConfigurationTests { class CassandraReactiveHealthContributorAutoConfigurationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
@ -48,37 +47,50 @@ class CassandraReactiveHealthContributorAutoConfigurationTests {
@Test @Test
void runWithoutCqlSessionOrReactiveCassandraOperationsShouldNotCreateIndicator() { void runWithoutCqlSessionOrReactiveCassandraOperationsShouldNotCreateIndicator() {
this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean("cassandraHealthContributor") this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean("cassandraHealthContributor")
.doesNotHaveBean(CassandraReactiveHealthIndicator.class) .doesNotHaveBean(org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator.class)
.doesNotHaveBean(CassandraDriverReactiveHealthIndicator.class)); .doesNotHaveBean(CassandraDriverReactiveHealthIndicator.class));
} }
@Test @Test
void runWithReactiveCassandraOperationsShouldOnlyCreateReactiveIndicator() { void runWithCqlSessionOnlyShouldCreateDriverIndicator() {
this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class)) this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class))
.withBean(ReactiveCassandraOperations.class, () -> mock(ReactiveCassandraOperations.class)) .run((context) -> assertThat(context).hasBean("cassandraHealthContributor")
.hasSingleBean(CassandraDriverReactiveHealthIndicator.class).doesNotHaveBean(
org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator.class));
}
@Test
void runWithReactiveCassandraOperationsOnlyShouldCreateReactiveIndicator() {
this.contextRunner.withBean(ReactiveCassandraOperations.class, () -> mock(ReactiveCassandraOperations.class))
.withBean(CassandraOperations.class, () -> mock(CassandraOperations.class)) .withBean(CassandraOperations.class, () -> mock(CassandraOperations.class))
.run((context) -> assertThat(context).hasBean("cassandraHealthContributor") .run((context) -> assertThat(context).hasBean("cassandraHealthContributor")
.hasSingleBean(CassandraReactiveHealthIndicator.class) .hasSingleBean(
org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator.class)
.doesNotHaveBean(CassandraDriverReactiveHealthIndicator.class) .doesNotHaveBean(CassandraDriverReactiveHealthIndicator.class)
.doesNotHaveBean(CassandraHealthIndicator.class) .doesNotHaveBean(org.springframework.boot.actuate.cassandra.CassandraHealthIndicator.class)
.doesNotHaveBean(CassandraDriverHealthIndicator.class)); .doesNotHaveBean(CassandraDriverHealthIndicator.class));
} }
@Test @Test
void runWithCqlSessionShouldCreateDriverIndicator() { void runWithCqlSessionAndReactiveCassandraOperationsShouldCreateDriverIndicator() {
this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class)) this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class))
.withBean(ReactiveCassandraOperations.class, () -> mock(ReactiveCassandraOperations.class))
.withBean(CassandraOperations.class, () -> mock(CassandraOperations.class))
.run((context) -> assertThat(context).hasBean("cassandraHealthContributor") .run((context) -> assertThat(context).hasBean("cassandraHealthContributor")
.hasSingleBean(CassandraDriverReactiveHealthIndicator.class) .hasSingleBean(CassandraDriverReactiveHealthIndicator.class)
.doesNotHaveBean(CassandraReactiveHealthIndicator.class)); .doesNotHaveBean(
org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator.class)
.doesNotHaveBean(org.springframework.boot.actuate.cassandra.CassandraHealthIndicator.class)
.doesNotHaveBean(CassandraDriverHealthIndicator.class));
} }
@Test @Test
void runWithCqlSessionAndSpringDataAbsentShouldACreateDriverIndicator() { void runWithCqlSessionAndSpringDataAbsentShouldCreateDriverIndicator() {
this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class)) this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class))
.withClassLoader(new FilteredClassLoader("org.springframework.data")) .withClassLoader(new FilteredClassLoader("org.springframework.data"))
.run((context) -> assertThat(context).hasBean("cassandraHealthContributor") .run((context) -> assertThat(context).hasBean("cassandraHealthContributor")
.hasSingleBean(CassandraDriverReactiveHealthIndicator.class) .hasSingleBean(CassandraDriverReactiveHealthIndicator.class).doesNotHaveBean(
.doesNotHaveBean(CassandraReactiveHealthIndicator.class)); org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator.class));
} }
@Test @Test
@ -86,8 +98,8 @@ class CassandraReactiveHealthContributorAutoConfigurationTests {
this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class)) this.contextRunner.withBean(CqlSession.class, () -> mock(CqlSession.class))
.withBean(ReactiveCassandraOperations.class, () -> mock(ReactiveCassandraOperations.class)) .withBean(ReactiveCassandraOperations.class, () -> mock(ReactiveCassandraOperations.class))
.withPropertyValues("management.health.cassandra.enabled:false") .withPropertyValues("management.health.cassandra.enabled:false")
.run((context) -> assertThat(context).doesNotHaveBean("cassandraHealthContributor") .run((context) -> assertThat(context).doesNotHaveBean("cassandraHealthContributor").doesNotHaveBean(
.doesNotHaveBean(CassandraReactiveHealthIndicator.class)); org.springframework.boot.actuate.cassandra.CassandraReactiveHealthIndicator.class));
} }
} }

View File

@ -32,7 +32,9 @@ import org.springframework.util.Assert;
* @author Julien Dubois * @author Julien Dubois
* @author Alexandre Dutra * @author Alexandre Dutra
* @since 2.0.0 * @since 2.0.0
* @deprecated since 2.4.0 in favor of {@link CassandraDriverHealthIndicator}
*/ */
@Deprecated
public class CassandraHealthIndicator extends AbstractHealthIndicator { public class CassandraHealthIndicator extends AbstractHealthIndicator {
private static final SimpleStatement SELECT = SimpleStatement private static final SimpleStatement SELECT = SimpleStatement

View File

@ -30,7 +30,9 @@ import org.springframework.util.Assert;
* *
* @author Artsiom Yudovin * @author Artsiom Yudovin
* @since 2.1.0 * @since 2.1.0
* @deprecated since 2.4.0 in favor of {@link CassandraDriverHealthIndicator}
*/ */
@Deprecated
public class CassandraReactiveHealthIndicator extends AbstractReactiveHealthIndicator { public class CassandraReactiveHealthIndicator extends AbstractReactiveHealthIndicator {
private static final SimpleStatement SELECT = SimpleStatement private static final SimpleStatement SELECT = SimpleStatement

View File

@ -38,6 +38,7 @@ import static org.mockito.Mockito.mock;
* @author Oleksii Bondar * @author Oleksii Bondar
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
@Deprecated
class CassandraHealthIndicatorTests { class CassandraHealthIndicatorTests {
@Test @Test

View File

@ -37,6 +37,7 @@ import static org.mockito.Mockito.mock;
* *
* @author Artsiom Yudovin * @author Artsiom Yudovin
*/ */
@Deprecated
class CassandraReactiveHealthIndicatorTests { class CassandraReactiveHealthIndicatorTests {
@Test @Test

View File

@ -679,7 +679,7 @@ with the `key` listed in the table below.
======= =======
| `cassandra` | `cassandra`
| {spring-boot-actuator-module-code}/cassandra/CassandraHealthIndicator.java[`CassandraHealthIndicator`] or {spring-boot-actuator-module-code}/cassandra/CassandraDriverHealthIndicator.java[`CassandraDriverHealthIndicator`] | {spring-boot-actuator-module-code}/cassandra/CassandraDriverHealthIndicator.java[`CassandraDriverHealthIndicator`]
| Checks that a Cassandra database is up. | Checks that a Cassandra database is up.
| `couchbase` | `couchbase`
@ -878,7 +878,7 @@ The following `ReactiveHealthIndicators` are auto-configured by Spring Boot when
|=== |===
| Name | Description | Name | Description
| {spring-boot-actuator-module-code}/cassandra/CassandraReactiveHealthIndicator.java[`CassandraReactiveHealthIndicator`] or {spring-boot-actuator-module-code}/cassandra/CassandraDriverReactiveHealthIndicator.java[`CassandraDriverReactiveHealthIndicator`] | {spring-boot-actuator-module-code}/cassandra/CassandraDriverReactiveHealthIndicator.java[`CassandraDriverReactiveHealthIndicator`]
| Checks that a Cassandra database is up. | Checks that a Cassandra database is up.
| {spring-boot-actuator-module-code}/couchbase/CouchbaseReactiveHealthIndicator.java[`CouchbaseReactiveHealthIndicator`] | {spring-boot-actuator-module-code}/couchbase/CouchbaseReactiveHealthIndicator.java[`CouchbaseReactiveHealthIndicator`]