Marcin reported that bug which pops up in his tracing integration tests:

┌─────┐
|  simpleMeterRegistry defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.class]
↑     ↓
|  enableTimerObservationHandler defined in class path resource [org/springframework/boot/actuate/autoconfigure/observation/ObservationAutoConfiguration$MetricsConfiguration.class]
└─────┘

Comment From: mhalbritter

Looks like my commit hasn't fully solved the problem.

The main problem is that a MeterRegistry is now also a ObservationRegistry.

The TimerObservationHandler is registered via TimerObservationHandlerObservationRegistryCustomizer, which is run from a BeanPostProcessor on ObservationRegistry and needs a fully initialized MeterRegistry to work. This worked fine until the change that a MeterRegistry is a ObservationRegistry happened. Now the customizer runs on MeterRegistry too, and needs a fully initialized MeterRegistry, which it doesn't have and there is the cycle.

Comment From: mhalbritter

The commit in micrometer-core has been reverted and this is no longer a problem.