Kotlin-specific ObservationRegistry API #4772
Closed
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.
This PR introduces a couple of extension functions on
ObservationRegistry
to help usingObservation
API from Kotlin code.ObservationRegistry.observeAndGet
allows to observe a non-suspending block of code:Observation.observe
, but accepts a block of code instead of expecting a Java SupplierObservationRegistry.observeAndAwait
allows to observe a suspending block of code:Observation.observe
, but will accept a suspending block of codeopenScope().use { observationRegistry.asContextElement() }
it manages to create an instance ofKotlinObservationContextElement
with the new observation captured as "current"Initial idea: Why add those to
ObservationRegistry
and not toObservation
? Mostly for consistency. I.e.observeAndAwait
needs access toObservationRegistry
anyway, so it's easy to add it to the registry as an extension. WhileobserveAndGet
could indeed be made into an extension function onObservation
, however it still needs to be called something other thanobserve
, as otherwise Intellij can't resolve whichobserve
version the code is referring to.Update: I realized that Observation also contains registry it was created for, so I created an alternative PR which adds both of the extension functions to
Observation
class: #4823gh-4754