diff --git a/fleet/util/core/src/fleet/util/async/Resource.kt b/fleet/util/core/src/fleet/util/async/Resource.kt index 1e995b7172c5..32cb45f4dae3 100644 --- a/fleet/util/core/src/fleet/util/async/Resource.kt +++ b/fleet/util/core/src/fleet/util/async/Resource.kt @@ -3,6 +3,7 @@ package fleet.util.async +import fleet.tracing.SpanInfoBuilder import fleet.tracing.spannedScope import kotlinx.coroutines.* import java.lang.RuntimeException @@ -123,6 +124,17 @@ fun Resource>.track(displayName: String): Resource> } } +fun Resource.span(name: String, info: SpanInfoBuilder.() -> Unit = {}): Resource = + let { source -> + resource { cc -> + spannedScope(name, info) { + source.use { t -> + cc(t) + } + } + } + } + fun Resource.catch(): Resource> = let { source -> object : Resource> { @@ -184,7 +196,7 @@ fun Deferred.track(displayName: String): Deferred = } @OptIn(ExperimentalCoroutinesApi::class) -fun Resource.useOn(coroutineScope: CoroutineScope): Deferred { +fun Resource.useOn(coroutineScope: CoroutineScope): Deferred { val deferred = CompletableDeferred() coroutineScope.launch(start = CoroutineStart.ATOMIC) { use { t ->