micrometer-metrics/micrometer
Timer API does not support Kotlin suspend function (coroutines)
開放
#4,455 建立於 2023年12月7日
enhancementhelp wantedkotlin
倉庫指標
- 星標
- (4,882 顆星)
- PR 合併指標
- (平均合併 1天 21小時) (30 天內合併 100 個 PR)
描述
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.