Send spans if they are too long (#225)
This commit is contained in:
@@ -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!!
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
Reference in New Issue
Block a user