Skip to content

Commit 4c097b9

Browse files
committed
Merge branch '3.4.x'
Closes gh-44257
2 parents 7241352 + 015649a commit 4c097b9

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
* {@link DataSource datasources}.
5555
*
5656
* @author Stephane Nicoll
57+
* @author Yanming Zhou
5758
* @since 2.0.0
5859
*/
5960
@AutoConfiguration(after = { MetricsAutoConfiguration.class, DataSourceAutoConfiguration.class,
@@ -140,13 +141,13 @@ static class HikariDataSourceMeterBinder implements MeterBinder {
140141

141142
@Override
142143
public void bindTo(MeterRegistry registry) {
143-
for (DataSource dataSource : this.dataSources) {
144+
this.dataSources.stream(ObjectProvider.UNFILTERED).forEach((dataSource) -> {
144145
HikariDataSource hikariDataSource = DataSourceUnwrapper.unwrap(dataSource, HikariConfigMXBean.class,
145146
HikariDataSource.class);
146147
if (hikariDataSource != null) {
147148
bindMetricsRegistryToHikariDataSource(hikariDataSource, registry);
148149
}
149-
}
150+
});
150151
}
151152

152153
private void bindMetricsRegistryToHikariDataSource(HikariDataSource hikari, MeterRegistry registry) {

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfigurationTests.java

+24-16
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
* @author Stephane Nicoll
5252
* @author Andy Wilkinson
5353
* @author Tommy Ludwig
54+
* @author Yanming Zhou
5455
*/
5556
class DataSourcePoolMetricsAutoConfigurationTests {
5657

@@ -156,14 +157,15 @@ void hikariDataSourceInstrumentationCanBeDisabled() {
156157

157158
@Test
158159
void allHikariDataSourcesCanBeInstrumented() {
159-
this.contextRunner.withUserConfiguration(TwoHikariDataSourcesConfiguration.class)
160+
this.contextRunner.withUserConfiguration(MultipleHikariDataSourcesConfiguration.class)
160161
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class))
161162
.run((context) -> {
162-
context.getBean("firstDataSource", DataSource.class).getConnection();
163-
context.getBean("secondOne", DataSource.class).getConnection();
163+
context.getBean("standardDataSource", DataSource.class).getConnection();
164+
context.getBean("nonDefault", DataSource.class).getConnection();
165+
context.getBean("nonAutowire", DataSource.class).getConnection();
164166
MeterRegistry registry = context.getBean(MeterRegistry.class);
165-
registry.get("hikaricp.connections").tags("pool", "firstDataSource").meter();
166-
registry.get("hikaricp.connections").tags("pool", "secondOne").meter();
167+
assertThat(registry.find("hikaricp.connections").meters()).map((meter) -> meter.getId().getTag("pool"))
168+
.containsOnly("standardDataSource", "nonDefault");
167169
});
168170
}
169171

@@ -182,16 +184,17 @@ void someHikariDataSourcesCanBeInstrumented() {
182184

183185
@Test
184186
void allHikariDataSourcesCanBeInstrumentedWhenUsingLazyInitialization() {
185-
this.contextRunner.withUserConfiguration(TwoHikariDataSourcesConfiguration.class)
187+
this.contextRunner.withUserConfiguration(MultipleHikariDataSourcesConfiguration.class)
186188
.withConfiguration(AutoConfigurations.of(DataSourceAutoConfiguration.class))
187189
.withInitializer(
188190
(context) -> context.addBeanFactoryPostProcessor(new LazyInitializationBeanFactoryPostProcessor()))
189191
.run((context) -> {
190-
context.getBean("firstDataSource", DataSource.class).getConnection();
191-
context.getBean("secondOne", DataSource.class).getConnection();
192+
context.getBean("standardDataSource", DataSource.class).getConnection();
193+
context.getBean("nonDefault", DataSource.class).getConnection();
194+
context.getBean("nonAutowire", DataSource.class).getConnection();
192195
MeterRegistry registry = context.getBean(MeterRegistry.class);
193-
registry.get("hikaricp.connections").tags("pool", "firstDataSource").meter();
194-
registry.get("hikaricp.connections").tags("pool", "secondOne").meter();
196+
assertThat(registry.find("hikaricp.connections").meters()).map((meter) -> meter.getId().getTag("pool"))
197+
.containsOnly("standardDataSource", "nonDefault");
195198
});
196199
}
197200

@@ -257,16 +260,21 @@ private DataSource createDataSource() {
257260
}
258261

259262
@Configuration(proxyBeanMethods = false)
260-
static class TwoHikariDataSourcesConfiguration {
263+
static class MultipleHikariDataSourcesConfiguration {
261264

262265
@Bean
263-
DataSource firstDataSource() {
264-
return createHikariDataSource("firstDataSource");
266+
DataSource standardDataSource() {
267+
return createHikariDataSource("standardDataSource");
265268
}
266269

267-
@Bean
268-
DataSource secondOne() {
269-
return createHikariDataSource("secondOne");
270+
@Bean(defaultCandidate = false)
271+
DataSource nonDefault() {
272+
return createHikariDataSource("nonDefault");
273+
}
274+
275+
@Bean(autowireCandidate = false)
276+
DataSource nonAutowire() {
277+
return createHikariDataSource("nonAutowire");
270278
}
271279

272280
}

0 commit comments

Comments
 (0)