DataSourceMetadata -> DataSourcePoolMetadata
Rename DataSourceMetadata to DataSourcePoolMetadata
This commit is contained in:
@@ -24,8 +24,8 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceMetadataProvidersConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourcePoolMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourcePoolMetadataProvidersConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
@@ -38,11 +38,11 @@ import org.springframework.context.annotation.Import;
|
||||
*/
|
||||
@ConditionalOnBean(DataSource.class)
|
||||
@AutoConfigureAfter(DataSourceAutoConfiguration.class)
|
||||
@Import(DataSourceMetadataProvidersConfiguration.class)
|
||||
@Import(DataSourcePoolMetadataProvidersConfiguration.class)
|
||||
public class DataSourceMetricsAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnBean(DataSourceMetadataProvider.class)
|
||||
@ConditionalOnBean(DataSourcePoolMetadataProvider.class)
|
||||
@ConditionalOnMissingBean
|
||||
public DataSourcePublicMetrics dataSourcePublicMetrics() {
|
||||
return new DataSourcePublicMetrics();
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.apache.solr.client.solrj.SolrServer;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.actuate.health.ApplicationHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.CompositeHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.DataSourceHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.HealthAggregator;
|
||||
@@ -36,7 +37,6 @@ import org.springframework.boot.actuate.health.OrderedHealthAggregator;
|
||||
import org.springframework.boot.actuate.health.RabbitHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.RedisHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.SolrHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.ApplicationHealthIndicator;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
@@ -44,10 +44,10 @@ import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.jdbc.CompositeDataSourceMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.CompositeDataSourcePoolMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceMetadata;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourcePoolMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourcePoolMetadata;
|
||||
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.mongo.MongoDataAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.redis.RedisAutoConfiguration;
|
||||
@@ -103,33 +103,36 @@ public class HealthIndicatorAutoConfiguration {
|
||||
private Map<String, DataSource> dataSources;
|
||||
|
||||
@Autowired(required = false)
|
||||
private Collection<DataSourceMetadataProvider> metadataProviders = Collections.emptyList();
|
||||
private Collection<DataSourcePoolMetadataProvider> metadataProviders = Collections
|
||||
.emptyList();
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(name = "dbHealthIndicator")
|
||||
public HealthIndicator dbHealthIndicator() {
|
||||
DataSourceMetadataProvider metadataProvider =
|
||||
new CompositeDataSourceMetadataProvider(this.metadataProviders);
|
||||
DataSourcePoolMetadataProvider metadataProvider = new CompositeDataSourcePoolMetadataProvider(
|
||||
this.metadataProviders);
|
||||
if (this.dataSources.size() == 1) {
|
||||
return createDataSourceHealthIndicator(metadataProvider,
|
||||
this.dataSources.values().iterator().next());
|
||||
return createDataSourceHealthIndicator(metadataProvider, this.dataSources
|
||||
.values().iterator().next());
|
||||
}
|
||||
CompositeHealthIndicator composite = new CompositeHealthIndicator(
|
||||
this.healthAggregator);
|
||||
for (Map.Entry<String, DataSource> entry : this.dataSources.entrySet()) {
|
||||
composite.addHealthIndicator(entry.getKey(),
|
||||
createDataSourceHealthIndicator(metadataProvider, entry.getValue()));
|
||||
composite.addHealthIndicator(
|
||||
entry.getKey(),
|
||||
createDataSourceHealthIndicator(metadataProvider,
|
||||
entry.getValue()));
|
||||
}
|
||||
return composite;
|
||||
}
|
||||
|
||||
private DataSourceHealthIndicator createDataSourceHealthIndicator(DataSourceMetadataProvider provider,
|
||||
DataSource dataSource) {
|
||||
|
||||
private DataSourceHealthIndicator createDataSourceHealthIndicator(
|
||||
DataSourcePoolMetadataProvider provider, DataSource dataSource) {
|
||||
String validationQuery = null;
|
||||
DataSourceMetadata dataSourceMetadata = provider.getDataSourceMetadata(dataSource);
|
||||
if (dataSourceMetadata != null) {
|
||||
validationQuery = dataSourceMetadata.getValidationQuery();
|
||||
DataSourcePoolMetadata poolMetadata = provider
|
||||
.getDataSourcePoolMetadata(dataSource);
|
||||
if (poolMetadata != null) {
|
||||
validationQuery = poolMetadata.getValidationQuery();
|
||||
}
|
||||
return new DataSourceHealthIndicator(dataSource, validationQuery);
|
||||
}
|
||||
|
||||
@@ -28,9 +28,9 @@ import javax.sql.DataSource;
|
||||
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.actuate.metrics.Metric;
|
||||
import org.springframework.boot.autoconfigure.jdbc.CompositeDataSourceMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceMetadata;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.CompositeDataSourcePoolMetadataProvider;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourcePoolMetadata;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourcePoolMetadataProvider;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
|
||||
@@ -48,23 +48,23 @@ public class DataSourcePublicMetrics implements PublicMetrics {
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Autowired
|
||||
private Collection<DataSourceMetadataProvider> providers;
|
||||
private Collection<DataSourcePoolMetadataProvider> providers;
|
||||
|
||||
private final Map<String, DataSourceMetadata> metadataByPrefix = new HashMap<String, DataSourceMetadata>();
|
||||
private final Map<String, DataSourcePoolMetadata> metadataByPrefix = new HashMap<String, DataSourcePoolMetadata>();
|
||||
|
||||
@PostConstruct
|
||||
public void initialize() {
|
||||
DataSource primaryDataSource = getPrimaryDataSource();
|
||||
DataSourceMetadataProvider provider = new CompositeDataSourceMetadataProvider(
|
||||
DataSourcePoolMetadataProvider provider = new CompositeDataSourcePoolMetadataProvider(
|
||||
this.providers);
|
||||
for (Map.Entry<String, DataSource> entry : this.applicationContext
|
||||
.getBeansOfType(DataSource.class).entrySet()) {
|
||||
String beanName = entry.getKey();
|
||||
DataSource bean = entry.getValue();
|
||||
String prefix = createPrefix(beanName, bean, bean.equals(primaryDataSource));
|
||||
DataSourceMetadata dataSourceMetadata = provider.getDataSourceMetadata(bean);
|
||||
if (dataSourceMetadata != null) {
|
||||
this.metadataByPrefix.put(prefix, dataSourceMetadata);
|
||||
DataSourcePoolMetadata poolMetadata = provider.getDataSourcePoolMetadata(bean);
|
||||
if (poolMetadata != null) {
|
||||
this.metadataByPrefix.put(prefix, poolMetadata);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -72,13 +72,13 @@ public class DataSourcePublicMetrics implements PublicMetrics {
|
||||
@Override
|
||||
public Collection<Metric<?>> metrics() {
|
||||
Set<Metric<?>> metrics = new LinkedHashSet<Metric<?>>();
|
||||
for (Map.Entry<String, DataSourceMetadata> entry : this.metadataByPrefix
|
||||
for (Map.Entry<String, DataSourcePoolMetadata> entry : this.metadataByPrefix
|
||||
.entrySet()) {
|
||||
String prefix = entry.getKey();
|
||||
prefix = (prefix.endsWith(".") ? prefix : prefix + ".");
|
||||
DataSourceMetadata dataSourceMetadata = entry.getValue();
|
||||
addMetric(metrics, prefix + "active", dataSourceMetadata.getPoolSize());
|
||||
addMetric(metrics, prefix + "usage", dataSourceMetadata.getPoolUsage());
|
||||
DataSourcePoolMetadata dataSourceMetadata = entry.getValue();
|
||||
addMetric(metrics, prefix + "active", dataSourceMetadata.getActive());
|
||||
addMetric(metrics, prefix + "usage", dataSourceMetadata.getUsage());
|
||||
}
|
||||
return metrics;
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.springframework.boot.actuate.health.ApplicationHealthIndicator;
|
||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceMetadataProvidersConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourcePoolMetadataProvidersConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
|
||||
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
|
||||
@@ -167,7 +167,7 @@ public class HealthIndicatorAutoConfigurationTests {
|
||||
public void dataSourceHealthIndicatorWithCustomValidationQuery() {
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
this.context.register(PropertyPlaceholderAutoConfiguration.class, DataSourceProperties.class,
|
||||
DataSourceConfig.class, DataSourceMetadataProvidersConfiguration.class,
|
||||
DataSourceConfig.class, DataSourcePoolMetadataProvidersConfiguration.class,
|
||||
HealthIndicatorAutoConfiguration.class);
|
||||
EnvironmentTestUtils.addEnvironment(this.context, "spring.datasource.validation-query:SELECT from FOOBAR");
|
||||
this.context.refresh();
|
||||
|
||||
Reference in New Issue
Block a user