Fix for empty datasource-name in metrics
If there is more than one DataSource and the non-primary bean-name is 'datasource' an incorrect metric name is chosen. The metrics are named datasource.active and not datasource.xxx.active. To avoid this, the shortening of the bean-name only occurs if the bean-name is longer than 'datasource'. See gh-2320
This commit is contained in:
parent
a8726c4ae1
commit
05e388012d
|
@ -102,7 +102,8 @@ public class DataSourcePublicMetrics implements PublicMetrics {
|
||||||
if (primary) {
|
if (primary) {
|
||||||
return "datasource.primary";
|
return "datasource.primary";
|
||||||
}
|
}
|
||||||
if (name.toLowerCase().endsWith(DATASOURCE_SUFFIX.toLowerCase())) {
|
if (name.length() > DATASOURCE_SUFFIX.length()
|
||||||
|
&& name.toLowerCase().endsWith(DATASOURCE_SUFFIX.toLowerCase())) {
|
||||||
name = name.substring(0, name.length() - DATASOURCE_SUFFIX.length());
|
name = name.substring(0, name.length() - DATASOURCE_SUFFIX.length());
|
||||||
}
|
}
|
||||||
return "datasource." + name;
|
return "datasource." + name;
|
||||||
|
|
|
@ -168,6 +168,15 @@ public class PublicMetricsAutoConfigurationTests {
|
||||||
"datasource.commonsDbcp.active", "datasource.commonsDbcp.usage");
|
"datasource.commonsDbcp.active", "datasource.commonsDbcp.usage");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void multipleDataSourcesWithCustomPrimary() {
|
||||||
|
load(MultipleDataSourcesWithCustomPrimaryConfig.class);
|
||||||
|
PublicMetrics bean = this.context.getBean(DataSourcePublicMetrics.class);
|
||||||
|
Collection<Metric<?>> metrics = bean.metrics();
|
||||||
|
assertMetrics(metrics, "datasource.primary.active", "datasource.primary.usage",
|
||||||
|
"datasource.dataSource.active", "datasource.dataSource.usage");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void customPrefix() {
|
public void customPrefix() {
|
||||||
load(MultipleDataSourcesWithPrimaryConfig.class,
|
load(MultipleDataSourcesWithPrimaryConfig.class,
|
||||||
|
@ -250,6 +259,22 @@ public class PublicMetricsAutoConfigurationTests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class MultipleDataSourcesWithCustomPrimaryConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Primary
|
||||||
|
public DataSource myDataSource() {
|
||||||
|
return initializeBuilder().type(org.apache.tomcat.jdbc.pool.DataSource.class)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public DataSource dataSource() {
|
||||||
|
return initializeBuilder().type(BasicDataSource.class).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
static class CustomDataSourcePublicMetrics {
|
static class CustomDataSourcePublicMetrics {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue