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) {
 | 
			
		||||
			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());
 | 
			
		||||
		}
 | 
			
		||||
		return "datasource." + name;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -168,6 +168,15 @@ public class PublicMetricsAutoConfigurationTests {
 | 
			
		|||
				"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
 | 
			
		||||
	public void customPrefix() {
 | 
			
		||||
		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
 | 
			
		||||
	static class CustomDataSourcePublicMetrics {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue