From 8310d79f9c27c5a0232f76b371369a3b26189220 Mon Sep 17 00:00:00 2001 From: KirillPamPam Date: Mon, 20 Feb 2023 14:30:41 +0400 Subject: [PATCH] Show error spans like in dproxy (#144) --- .../io/emeraldpay/dshackle/rpc/NativeCall.kt | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt b/src/main/kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt index 07298e96..8dfa38d6 100644 --- a/src/main/kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt +++ b/src/main/kotlin/io/emeraldpay/dshackle/rpc/NativeCall.kt @@ -126,17 +126,22 @@ open class NativeCall( } private fun completeSpan(callResult: CallResult, requestCount: Int) { + val span = tracer.currentSpan() + if (callResult.isError()) { + errorSpan(span, callResult.error?.message ?: "Internal error") + } if (requestCount > 1) { - val span = tracer.currentSpan() - if (callResult.isError()) { - span?.error( - RuntimeException(callResult.error?.message ?: "Internal error") - ) - } span?.end() } } + private fun errorSpan(span: Span?, message: String) { + span?.apply { + tag("error", "true") + tag("status.message", message) + } + } + private fun createTracingReactorContext( ctx: Context, requestCount: Int, @@ -222,10 +227,11 @@ open class NativeCall( log.error("Lost context for a native call", it) 0 } - tracer.currentSpan()?.error(it) + val message = it?.message ?: "Internal error" + errorSpan(tracer.currentSpan(), message) return BlockchainOuterClass.NativeCallReplyItem.newBuilder() .setSucceed(false) - .setErrorMessage(it?.message ?: "Internal error") + .setErrorMessage(message) .setErrorCode(500) .setId(id) .build()