Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
77e88583
Commit
77e88583
authored
Nov 10, 2015
by
Phillip Webb
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4409 from shakuzen/health-cassandra
* pr/4409: Auto-configure CassandraHealthIndicator
parents
9f17fe44
d8247657
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
68 additions
and
13 deletions
+68
-13
HealthIndicatorAutoConfiguration.java
...tuate/autoconfigure/HealthIndicatorAutoConfiguration.java
+30
-5
CassandraHealthIndicator.java
...amework/boot/actuate/health/CassandraHealthIndicator.java
+7
-8
HealthIndicatorAutoConfigurationTests.java
.../autoconfigure/HealthIndicatorAutoConfigurationTests.java
+28
-0
production-ready-features.adoc
...oot-docs/src/main/asciidoc/production-ready-features.adoc
+3
-0
No files found.
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfiguration.java
View file @
77e88583
...
...
@@ -22,6 +22,7 @@ import java.util.Map;
import
javax.jms.ConnectionFactory
;
import
javax.sql.DataSource
;
import
com.datastax.driver.core.Cluster
;
import
org.apache.solr.client.solrj.SolrServer
;
import
org.elasticsearch.client.Client
;
...
...
@@ -29,6 +30,7 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.actuate.health.ApplicationHealthIndicator
;
import
org.springframework.boot.actuate.health.CassandraHealthIndicator
;
import
org.springframework.boot.actuate.health.CompositeHealthIndicator
;
import
org.springframework.boot.actuate.health.DataSourceHealthIndicator
;
import
org.springframework.boot.actuate.health.DiskSpaceHealthIndicator
;
...
...
@@ -48,9 +50,11 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import
org.springframework.boot.autoconfigure.AutoConfigureBefore
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
;
import
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration
;
import
org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration
;
import
org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration
;
import
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
;
...
...
@@ -66,6 +70,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.ResolvableType
;
import
org.springframework.data.cassandra.core.CassandraOperations
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.jdbc.core.JdbcTemplate
;
...
...
@@ -78,15 +83,17 @@ import org.springframework.mail.javamail.JavaMailSenderImpl;
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Phillip Webb
* @author Tommy Ludwig
* @since 1.1.0
*/
@Configuration
@AutoConfigureBefore
({
EndpointAutoConfiguration
.
class
})
@AutoConfigureAfter
({
DataSourceAutoConfiguration
.
class
,
MongoAutoConfiguration
.
class
,
MongoDataAutoConfiguration
.
class
,
RedisAutoConfiguration
.
class
,
RabbitAutoConfiguration
.
class
,
SolrAutoConfiguration
.
class
,
MailSenderAutoConfiguration
.
class
,
JmsAutoConfiguration
.
class
,
ElasticsearchAutoConfiguration
.
class
})
@AutoConfigureAfter
({
CassandraAutoConfiguration
.
class
,
CassandraDataAutoConfiguration
.
class
,
DataSourceAutoConfiguration
.
class
,
MongoAutoConfiguration
.
class
,
MongoDataAutoConfiguration
.
class
,
RedisAutoConfiguration
.
class
,
RabbitAutoConfiguration
.
class
,
SolrAutoConfiguration
.
class
,
MailSenderAutoConfiguration
.
class
,
JmsAutoConfiguration
.
class
,
ElasticsearchAutoConfiguration
.
class
})
@EnableConfigurationProperties
({
HealthIndicatorAutoConfigurationProperties
.
class
})
public
class
HealthIndicatorAutoConfiguration
{
...
...
@@ -151,6 +158,24 @@ public class HealthIndicatorAutoConfiguration {
}
@Configuration
@ConditionalOnClass
({
CassandraOperations
.
class
,
Cluster
.
class
})
@ConditionalOnBean
(
CassandraOperations
.
class
)
@ConditionalOnEnabledHealthIndicator
(
"cassandra"
)
public
static
class
CassandraHealthIndicatorConfiguration
extends
CompositeHealthIndicatorConfiguration
<
CassandraHealthIndicator
,
CassandraOperations
>
{
@Autowired
private
Map
<
String
,
CassandraOperations
>
cassandraOperations
;
@Bean
@ConditionalOnMissingBean
(
name
=
"cassandraHealthIndicator"
)
public
HealthIndicator
cassandraHealthIndicator
()
{
return
createHealthIndicator
(
this
.
cassandraOperations
);
}
}
@Configuration
@ConditionalOnClass
(
JdbcTemplate
.
class
)
@ConditionalOnBean
(
DataSource
.
class
)
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/CassandraHealthIndicator.java
View file @
77e88583
...
...
@@ -20,7 +20,7 @@ import com.datastax.driver.core.ResultSet;
import
com.datastax.driver.core.querybuilder.QueryBuilder
;
import
com.datastax.driver.core.querybuilder.Select
;
import
org.springframework.data.cassandra.core.Cassandra
Admin
Operations
;
import
org.springframework.data.cassandra.core.CassandraOperations
;
import
org.springframework.util.Assert
;
/**
...
...
@@ -32,16 +32,15 @@ import org.springframework.util.Assert;
*/
public
class
CassandraHealthIndicator
extends
AbstractHealthIndicator
{
private
Cassandra
AdminOperations
cassandraAdmin
Operations
;
private
Cassandra
Operations
cassandra
Operations
;
/**
* Create a new {@link CassandraHealthIndicator} instance.
* @param cassandra
AdminOperations the Cassandra admin
operations
* @param cassandra
Operations the Cassandra
operations
*/
public
CassandraHealthIndicator
(
CassandraAdminOperations
cassandraAdminOperations
)
{
Assert
.
notNull
(
cassandraAdminOperations
,
"CassandraAdminOperations must not be null"
);
this
.
cassandraAdminOperations
=
cassandraAdminOperations
;
public
CassandraHealthIndicator
(
CassandraOperations
cassandraOperations
)
{
Assert
.
notNull
(
cassandraOperations
,
"CassandraOperations must not be null"
);
this
.
cassandraOperations
=
cassandraOperations
;
}
@Override
...
...
@@ -49,7 +48,7 @@ public class CassandraHealthIndicator extends AbstractHealthIndicator {
try
{
Select
select
=
QueryBuilder
.
select
(
"release_version"
).
from
(
"system"
,
"local"
);
ResultSet
results
=
this
.
cassandra
Admin
Operations
.
query
(
select
);
ResultSet
results
=
this
.
cassandraOperations
.
query
(
select
);
if
(
results
.
isExhausted
())
{
builder
.
up
();
return
;
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/HealthIndicatorAutoConfigurationTests.java
View file @
77e88583
...
...
@@ -24,6 +24,7 @@ import org.junit.After;
import
org.junit.Test
;
import
org.springframework.boot.actuate.health.ApplicationHealthIndicator
;
import
org.springframework.boot.actuate.health.CassandraHealthIndicator
;
import
org.springframework.boot.actuate.health.DataSourceHealthIndicator
;
import
org.springframework.boot.actuate.health.DiskSpaceHealthIndicator
;
import
org.springframework.boot.actuate.health.ElasticsearchHealthIndicator
;
...
...
@@ -54,9 +55,11 @@ import org.springframework.boot.test.EnvironmentTestUtils;
import
org.springframework.context.annotation.AnnotationConfigApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.cassandra.core.CassandraOperations
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertSame
;
import
static
org
.
mockito
.
Mockito
.
mock
;
/**
* Tests for {@link HealthIndicatorAutoConfiguration}.
...
...
@@ -420,6 +423,20 @@ public class HealthIndicatorAutoConfigurationTests {
beans
.
values
().
iterator
().
next
().
getClass
());
}
@Test
public
void
cassandraHealthIndicator
()
throws
Exception
{
EnvironmentTestUtils
.
addEnvironment
(
this
.
context
,
"management.health.diskspace.enabled:false"
);
this
.
context
.
register
(
CassandraConfiguration
.
class
,
ManagementServerProperties
.
class
,
HealthIndicatorAutoConfiguration
.
class
);
this
.
context
.
refresh
();
Map
<
String
,
HealthIndicator
>
beans
=
this
.
context
.
getBeansOfType
(
HealthIndicator
.
class
);
assertEquals
(
1
,
beans
.
size
());
assertEquals
(
CassandraHealthIndicator
.
class
,
beans
.
values
().
iterator
().
next
().
getClass
());
}
@Configuration
@EnableConfigurationProperties
protected
static
class
DataSourceConfig
{
...
...
@@ -449,4 +466,15 @@ public class HealthIndicatorAutoConfigurationTests {
}
@Configuration
protected
static
class
CassandraConfiguration
{
@Bean
public
CassandraOperations
cassandraOperations
()
{
CassandraOperations
operations
=
mock
(
CassandraOperations
.
class
);
return
operations
;
}
}
}
spring-boot-docs/src/main/asciidoc/production-ready-features.adoc
View file @
77e88583
...
...
@@ -275,6 +275,9 @@ The following `HealthIndicators` are auto-configured by Spring Boot when appropr
|===
|Name |Description
|{sc-spring-boot-actuator}/health/CassandraHealthIndicator.{sc-ext}[`CassandraHealthIndicator`]
|Checks that a Cassandra database is up.
|{sc-spring-boot-actuator}/health/DiskSpaceHealthIndicator.{sc-ext}[`DiskSpaceHealthIndicator`]
|Checks for low disk space.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment