Timer API does not support Kotlin suspend function (coroutines)
#4.455 aberto em 7 de dez. de 2023
Métricas do repositório
- Stars
- (4.881 estrelas)
- Métricas de merge de PR
- (Métricas PR pendentes)
Description
Please describe the feature request.
For standard (non suspend functions) it is possible to use record function to measure method invocation time:
Timer.builder("method.timed")
.register(meterRegistry)
.record { fn() } // fn() is a standard, non suspend function
However, it is not possible to call a suspend function from within record block:
Timer.builder("method.timed")
.register(meterRegistry)
.record { suspendFn() } // Suspension functions can be called only within coroutine body
The support for suspend functions should be added to the library.
Rationale Suspend functions are popular for non-blocking API, and it is currently not possible to measure time needed to call suspend functions without having a custom function to record the time.
Additional context Maybe this could be added as a extension function to the Timer interface.