Skip to content

Commit cb585b4

Browse files
committed
Adapt to changes from micrometer-observation
- See micrometer-metrics/micrometer#3082 See gh-29666
1 parent e4b18d9 commit cb585b4

14 files changed

+195
-107
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ allprojects {
2525
group "org.springframework.boot"
2626

2727
repositories {
28+
mavenLocal() // TODO MH: Remove
2829
mavenCentral()
2930
if (version.contains('-')) {
3031
maven { url "https://repo.spring.io/milestone" }

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ dependencies {
4747
optional("com.zaxxer:HikariCP")
4848
optional("io.dropwizard.metrics:metrics-jmx")
4949
optional("io.lettuce:lettuce-core")
50+
optional("io.micrometer:micrometer-observation")
5051
optional("io.micrometer:micrometer-core")
5152
optional("io.micrometer:micrometer-tracing-api")
5253
optional("io.micrometer:micrometer-binders")

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

Lines changed: 0 additions & 43 deletions
This file was deleted.
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.observation;
1818

1919
import java.util.ArrayList;
2020
import java.util.List;
2121

2222
import io.micrometer.core.instrument.observation.MeterObservationHandler;
23-
import io.micrometer.core.instrument.observation.Observation.GlobalTagsProvider;
24-
import io.micrometer.core.instrument.observation.ObservationHandler;
25-
import io.micrometer.core.instrument.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
26-
import io.micrometer.core.instrument.observation.ObservationPredicate;
27-
import io.micrometer.core.instrument.observation.ObservationRegistry;
23+
import io.micrometer.observation.Observation.GlobalTagsProvider;
24+
import io.micrometer.observation.ObservationHandler;
25+
import io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
26+
import io.micrometer.observation.ObservationPredicate;
27+
import io.micrometer.observation.ObservationRegistry;
2828

2929
/**
3030
* Installs predicates, handlers and tag providers into a {@link ObservationRegistry}.
Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,25 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.observation;
1818

1919
import java.util.List;
2020

2121
import io.micrometer.core.instrument.MeterRegistry;
22-
import io.micrometer.core.instrument.observation.Observation.GlobalTagsProvider;
23-
import io.micrometer.core.instrument.observation.ObservationHandler;
24-
import io.micrometer.core.instrument.observation.ObservationPredicate;
25-
import io.micrometer.core.instrument.observation.ObservationRegistry;
22+
import io.micrometer.observation.Observation.GlobalTagsProvider;
23+
import io.micrometer.observation.ObservationHandler;
24+
import io.micrometer.observation.ObservationPredicate;
25+
import io.micrometer.observation.ObservationRegistry;
2626
import io.micrometer.tracing.handler.TracingObservationHandler;
2727

2828
import org.springframework.beans.factory.ObjectProvider;
29+
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
2930
import org.springframework.boot.autoconfigure.AutoConfiguration;
3031
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
3132
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
3233
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3334
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3435
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
35-
import org.springframework.boot.context.properties.EnableConfigurationProperties;
3636
import org.springframework.context.annotation.Bean;
3737
import org.springframework.context.annotation.Configuration;
3838

@@ -43,8 +43,7 @@
4343
* @since 3.0.0
4444
*/
4545
@AutoConfiguration(after = CompositeMeterRegistryAutoConfiguration.class)
46-
@ConditionalOnBean(ObservationRegistry.class)
47-
@EnableConfigurationProperties(TimerObservationHandlerConfigurationProperties.class)
46+
@ConditionalOnClass(ObservationRegistry.class)
4847
public class ObservationAutoConfiguration {
4948

5049
@Bean
@@ -54,11 +53,21 @@ static ObservationRegistryPostProcessor observationRegistryPostProcessor(
5453
}
5554

5655
@Bean
57-
@ConditionalOnBean(MeterRegistry.class)
5856
@ConditionalOnMissingBean
59-
TimerObservationHandlerMeterRegistryCustomizer enableTimerObservationHandler(
60-
TimerObservationHandlerConfigurationProperties configurationProperties) {
61-
return new TimerObservationHandlerMeterRegistryCustomizer(configurationProperties);
57+
ObservationRegistry observationRegistry() {
58+
return ObservationRegistry.create();
59+
}
60+
61+
@Configuration(proxyBeanMethods = false)
62+
@ConditionalOnBean(MeterRegistry.class)
63+
static class MetricsConfiguration {
64+
65+
@Bean
66+
TimerObservationHandlerMeterRegistryCustomizer enableTimerObservationHandler(
67+
ObservationRegistry observationRegistry) {
68+
return new TimerObservationHandlerMeterRegistryCustomizer(observationRegistry);
69+
}
70+
6271
}
6372

6473
@Configuration(proxyBeanMethods = false)
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.observation;
1818

1919
import java.util.List;
2020

21-
import io.micrometer.core.instrument.observation.ObservationRegistry;
21+
import io.micrometer.observation.ObservationRegistry;
2222

2323
import org.springframework.beans.factory.ObjectProvider;
2424
import org.springframework.boot.util.LambdaSafe;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.observation;
1818

19-
import io.micrometer.core.instrument.observation.ObservationRegistry;
19+
import io.micrometer.observation.ObservationRegistry;
2020

2121
/**
2222
* Callback interface that can be used to customize auto-configured
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.observation;
1818

19-
import io.micrometer.core.instrument.observation.ObservationRegistry;
19+
import io.micrometer.observation.ObservationRegistry;
2020

2121
import org.springframework.beans.BeansException;
2222
import org.springframework.beans.factory.ObjectProvider;
Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,31 +14,30 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.observation;
1818

1919
import io.micrometer.core.instrument.MeterRegistry;
2020
import io.micrometer.core.instrument.observation.TimerObservationHandler;
21+
import io.micrometer.observation.ObservationRegistry;
22+
23+
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
2124

2225
/**
23-
* Enables the {@link TimerObservationHandler} on a {@link MeterRegistry}.
26+
* Registers the {@link TimerObservationHandler} with a {@link ObservationRegistry}.
2427
*
2528
* @author Moritz Halbritter
26-
* @since 3.0.0
2729
*/
28-
public class TimerObservationHandlerMeterRegistryCustomizer implements MeterRegistryCustomizer<MeterRegistry> {
30+
class TimerObservationHandlerMeterRegistryCustomizer implements MeterRegistryCustomizer<MeterRegistry> {
2931

30-
private final TimerObservationHandlerConfigurationProperties configurationProperties;
32+
private final ObservationRegistry observationRegistry;
3133

32-
public TimerObservationHandlerMeterRegistryCustomizer(
33-
TimerObservationHandlerConfigurationProperties configurationProperties) {
34-
this.configurationProperties = configurationProperties;
34+
TimerObservationHandlerMeterRegistryCustomizer(ObservationRegistry observationRegistry) {
35+
this.observationRegistry = observationRegistry;
3536
}
3637

3738
@Override
3839
public void customize(MeterRegistry registry) {
39-
if (this.configurationProperties.isEnabled()) {
40-
registry.withTimerObservationHandler();
41-
}
40+
this.observationRegistry.observationConfig().observationHandler(new TimerObservationHandler(registry));
4241
}
4342

4443
}
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.observation;
1818

1919
import java.util.ArrayList;
2020
import java.util.List;
2121

22-
import io.micrometer.core.instrument.observation.Observation.GlobalTagsProvider;
23-
import io.micrometer.core.instrument.observation.ObservationHandler;
24-
import io.micrometer.core.instrument.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
25-
import io.micrometer.core.instrument.observation.ObservationPredicate;
26-
import io.micrometer.core.instrument.observation.ObservationRegistry;
22+
import io.micrometer.observation.Observation.GlobalTagsProvider;
23+
import io.micrometer.observation.ObservationHandler;
24+
import io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
25+
import io.micrometer.observation.ObservationPredicate;
26+
import io.micrometer.observation.ObservationRegistry;
2727
import io.micrometer.tracing.handler.TracingObservationHandler;
2828

2929
/**

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ org.springframework.boot.actuate.autoconfigure.metrics.Log4J2MetricsAutoConfigur
4444
org.springframework.boot.actuate.autoconfigure.metrics.LogbackMetricsAutoConfiguration
4545
org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration
4646
org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration
47-
org.springframework.boot.actuate.autoconfigure.metrics.ObservationAutoConfiguration
4847
org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration
4948
org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsAutoConfiguration
5049
org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration
@@ -82,6 +81,7 @@ org.springframework.boot.actuate.autoconfigure.metrics.web.tomcat.TomcatMetricsA
8281
org.springframework.boot.actuate.autoconfigure.mongo.MongoHealthContributorAutoConfiguration
8382
org.springframework.boot.actuate.autoconfigure.mongo.MongoReactiveHealthContributorAutoConfiguration
8483
org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthContributorAutoConfiguration
84+
org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration
8585
org.springframework.boot.actuate.autoconfigure.quartz.QuartzEndpointAutoConfiguration
8686
org.springframework.boot.actuate.autoconfigure.r2dbc.ConnectionFactoryHealthContributorAutoConfiguration
8787
org.springframework.boot.actuate.autoconfigure.redis.RedisHealthContributorAutoConfiguration
Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,24 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.observation;
1818

1919
import java.util.ArrayList;
2020
import java.util.List;
2121

2222
import io.micrometer.core.instrument.MeterRegistry;
23-
import io.micrometer.core.instrument.Tag;
24-
import io.micrometer.core.instrument.Tags;
2523
import io.micrometer.core.instrument.observation.MeterObservationHandler;
26-
import io.micrometer.core.instrument.observation.Observation;
27-
import io.micrometer.core.instrument.observation.Observation.Context;
28-
import io.micrometer.core.instrument.observation.Observation.GlobalTagsProvider;
29-
import io.micrometer.core.instrument.observation.ObservationHandler;
30-
import io.micrometer.core.instrument.observation.ObservationHandler.AllMatchingCompositeObservationHandler;
31-
import io.micrometer.core.instrument.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
32-
import io.micrometer.core.instrument.observation.ObservationPredicate;
33-
import io.micrometer.core.instrument.observation.ObservationRegistry;
3424
import io.micrometer.core.instrument.search.MeterNotFoundException;
25+
import io.micrometer.observation.Observation;
26+
import io.micrometer.observation.Observation.Context;
27+
import io.micrometer.observation.Observation.GlobalTagsProvider;
28+
import io.micrometer.observation.ObservationHandler;
29+
import io.micrometer.observation.ObservationHandler.AllMatchingCompositeObservationHandler;
30+
import io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler;
31+
import io.micrometer.observation.ObservationPredicate;
32+
import io.micrometer.observation.ObservationRegistry;
33+
import io.micrometer.observation.Tag;
34+
import io.micrometer.observation.Tags;
3535
import io.micrometer.tracing.Tracer;
3636
import io.micrometer.tracing.handler.TracingObservationHandler;
3737
import org.junit.jupiter.api.Nested;
@@ -68,32 +68,31 @@ class NoTracingTests {
6868
@Test
6969
void autoConfiguresTimerObservationHandler() {
7070
this.contextRunner.run((context) -> {
71-
MeterRegistry meterRegistry = context.getBean(MeterRegistry.class);
72-
Observation.start("test-observation", meterRegistry).stop();
71+
ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class);
72+
Observation.start("test-observation", observationRegistry).stop();
7373
// When a TimerObservationHandler is registered, every stopped Observation
7474
// leads to a timer
75+
MeterRegistry meterRegistry = context.getBean(MeterRegistry.class);
7576
assertThat(meterRegistry.get("test-observation").timer().count()).isEqualTo(1);
7677
});
7778
}
7879

7980
@Test
8081
void allowsTimerObservationHandlerToBeDisabled() {
81-
this.contextRunner.withPropertyValues("management.metrics.observation.enabled=false").run((context) -> {
82-
MeterRegistry meterRegistry = context.getBean(MeterRegistry.class);
83-
Observation.start("test-observation", meterRegistry).stop();
84-
assertThatThrownBy(() -> meterRegistry.get("test-observation").timer())
85-
.isInstanceOf(MeterNotFoundException.class);
86-
});
82+
this.contextRunner.withClassLoader(new FilteredClassLoader(MeterRegistry.class))
83+
.run((context) -> assertThat(context)
84+
.doesNotHaveBean(TimerObservationHandlerMeterRegistryCustomizer.class));
8785
}
8886

8987
@Test
9088
void autoConfiguresObservationPredicates() {
9189
this.contextRunner.withUserConfiguration(ObservationPredicates.class).run((context) -> {
92-
MeterRegistry meterRegistry = context.getBean(MeterRegistry.class);
90+
ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class);
9391
// This is allowed by ObservationPredicates.customPredicate
94-
Observation.start("observation1", meterRegistry).start().stop();
92+
Observation.start("observation1", observationRegistry).start().stop();
9593
// This isn't allowed by ObservationPredicates.customPredicate
96-
Observation.start("observation2", meterRegistry).start().stop();
94+
Observation.start("observation2", observationRegistry).start().stop();
95+
MeterRegistry meterRegistry = context.getBean(MeterRegistry.class);
9796
assertThat(meterRegistry.get("observation1").timer().count()).isEqualTo(1);
9897
assertThatThrownBy(() -> meterRegistry.get("observation2").timer())
9998
.isInstanceOf(MeterNotFoundException.class);

0 commit comments

Comments
 (0)