Send spans if they are too long (#225)

This commit is contained in:
KirillPamPam
2023-06-07 17:15:26 +04:00
committed by GitHub
parent e0ee8fa844
commit c972e27d43
3 changed files with 26 additions and 1 deletions

View File

@@ -3,7 +3,9 @@ package io.emeraldpay.dshackle.config.spans
import brave.handler.MutableSpan
import io.emeraldpay.dshackle.commons.SPAN_ERROR
import io.emeraldpay.dshackle.commons.SPAN_NO_RESPONSE_MESSAGE
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Component
import java.util.concurrent.TimeUnit
interface SpanExportable {
fun isExportable(span: MutableSpan): Boolean
@@ -18,3 +20,15 @@ class ErrorSpanExportable : SpanExportable {
class NoResponseSpanExportable : SpanExportable {
override fun isExportable(span: MutableSpan): Boolean = span.tags().containsKey(SPAN_NO_RESPONSE_MESSAGE)
}
@Component
class LongResponseSpanExportable(
@Value("\${spans.collect.provider.long-span-threshold}")
private val longSpanThreshold: Long? = null
) : SpanExportable {
override fun isExportable(span: MutableSpan): Boolean {
val duration = span.finishTimestamp() - span.startTimestamp()
return TimeUnit.SECONDS.convert(duration, TimeUnit.MICROSECONDS) >= longSpanThreshold!!
}
}

View File

@@ -22,5 +22,6 @@ spans:
enabled: ${ENABLE_COLLECT_SPANS:false}
provider:
enabled: ${ENABLE_PROVIDER_COLLECT_SPANS:true}
long-span-threshold: ${LONG_SPAN_THRESHOLD:1}
main:
enabled: ${ENABLE_MAIN_COLLECT_SPANS:false}