micronaut-micrometer icon indicating copy to clipboard operation
micronaut-micrometer copied to clipboard

Race condition at order of MeterRegistryConfigurer(s) being applied

Open roehrijn opened this issue 2 years ago • 4 comments

Expected Behavior

In the case I configure micronaut.metrics.tags.* I expect those tags being added to every Micrometer meter being created.

Actual Behaviour

In some cases the meters created by io.micronaut.configuration.metrics.aggregator.CompositeMeterRegistryConfigurer#addBinders are not having those common tags. This is because the execution order of io.micronaut.configuration.metrics.aggregator.CompositeMeterRegistryConfigurer and io.micronaut.configuration.metrics.common.tags.CommonTagsConfigurer is not defined. In case io.micronaut.configuration.metrics.micrometer.MeterRegistryFactory#compositeMeterRegistry executes CompositeMeterRegistryConfigurer before CommonTagsConfigurer, the common tags are not yet configured but some meters have already been created.

Steps To Reproduce

Difficult to reproduce because the mentioned order of io.micronaut.configuration.metrics.aggregator.MeterRegistryConfigurer is not configurable.

Environment Information

micronaut-micrometer-core: v4.2.1 micronaut: v3.4.3

Example Application

No response

Version

3.4.3

roehrijn avatar Jun 30 '22 08:06 roehrijn

In case you guys agree that this is a problem, I would be eager to help on fixing this but I'm not sure about a good solution for this.

roehrijn avatar Jun 30 '22 08:06 roehrijn

Just as background information: I've stumbled over this issue while implementing a MeterRegistry implementation for the Prometheus Remote_Write protocol which I want to use for monitoring Java batch jobs based on Micronaut.

roehrijn avatar Jun 30 '22 08:06 roehrijn

👍

capricube avatar Jun 30 '22 08:06 capricube

We faced this issue as well while using Meter Registry Configurer. For us, however, using the Meter Filter seems to have solved the issue.

AlarkaSanyal avatar Aug 31 '22 19:08 AlarkaSanyal