Add ConfigurableMetricReaderProvider SPI #5755
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The lack of an SPI for providing MetricReaders is a problem for pull based readers like prometheus (actually, prometheus is currently the only pull based reader). This was true back when I distributed all the autoconfigure code to the modules of each respective exporter, but I was able to get around it with a hack that had
opentelemetry-exporter-prometheus
implement theAutoConfigurationCustomizer
, and directly customize theSdkMeterProviderBuilder
.This hack isn't possible with the file based configuration I'm working on because there is currently no ability to customize. I.e.
AutoConfigurationCustomizer
isn't in the picture. This may change in the future, but as of now file based configuration interprets exactly the context of a configuration file, ignoring any other environment variables or customization.This PR adds a new
ConfigurableMetricReaderProvider
SPI to accommodate pull readers. Its currently in an*.internal.*
package because technically the metric SDK doesn't officially support custom pull readers.Regardless of what file configuration ends up doing with respect to supporting customization outside of what's specified in a configuration file, this is a good SPI to have.