Spring boot 2.7.10/Sleuth/Micrometer/Prometheus/Brave/Zipkin
This err is for incrementSpansDropped, but same is seen with incrementSpans
The err only occurs occasionally and may be related to Exemplar and Lazy
Appears related to: https://github.com/spring-projects/spring-boot/issues/33971
"stack_trace":"java.lang.StackOverflowError: null
\tat java.base/java.lang.ClassLoader.defineClass1(Native Method)
\tat java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
\tat java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
\tat java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
\tat java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
\tat java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
\tat java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
\tat java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
\tat java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
\tat org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:135)
\tat java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
\tat brave.internal.handler.NoopAwareSpanHandler.end(NoopAwareSpanHandler.java:59)
\tat brave.internal.recorder.PendingSpans.expungeStaleEntries(PendingSpans.java:133)
\tat brave.internal.collect.WeakConcurrentMap.getIfPresent(WeakConcurrentMap.java:50)
\tat brave.internal.recorder.PendingSpans.get(PendingSpans.java:59)
\tat brave.Tracer.swapForPendingContext(Tracer.java:197)
\tat brave.Tracer.toSpan(Tracer.java:381)
\tat brave.Tracer.toSpan(Tracer.java:376)
\tat brave.LazySpan.span(LazySpan.java:141)
\tat brave.LazySpan.context(LazySpan.java:40)
\tat org.springframework.cloud.sleuth.brave.bridge.BraveSpan.context(BraveSpan.java:49)
\tat org.springframework.cloud.sleuth.instrument.prometheus.SleuthSpanContextSupplier.getSpanId(SleuthSpanContextSupplier.java:52)
\tat org.springframework.cloud.sleuth.instrument.prometheus.LazySleuthSpanContextSupplier.getSpanId(LazySleuthSpanContextSupplier.java:48)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.doSample(DefaultExemplarSampler.java:46)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.sample(DefaultExemplarSampler.java:34)
\tat io.micrometer.prometheus.PrometheusCounter.updateExemplar(PrometheusCounter.java:79)
\tat io.micrometer.prometheus.PrometheusCounter.increment(PrometheusCounter.java:58)
\tat zipkin2.reporter.metrics.micrometer.MicrometerReporterMetrics.incrementSpansDropped(MicrometerReporterMetrics.java:121)
\tat org.springframework.cloud.sleuth.autoconfig.zipkin2.ZipkinAutoConfiguration$TraceMetricsMicrometerConfiguration$NoReporterMetricsBeanConfiguration$LazyMicrometerReporterMetrics.incrementSpansDropped(ZipkinAutoConfiguration.java:308)
\tat zipkin2.reporter.AsyncReporter$BoundedAsyncReporter.report(AsyncReporter.java:260)
\tat zipkin2.reporter.brave.ConvertingSpanReporter.report(ConvertingSpanReporter.java:44)
\tat zipkin2.reporter.brave.ConvertingSpanReporter.report(ConvertingSpanReporter.java:29)
\tat zipkin2.reporter.brave.ZipkinSpanHandler.end(ZipkinSpanHandler.java:148)
\tat brave.internal.handler.NoopAwareSpanHandler$CompositeSpanHandler.end(NoopAwareSpanHandler.java:107)
\tat brave.internal.handler.NoopAwareSpanHandler.end(NoopAwareSpanHandler.java:57)
\tat brave.internal.recorder.PendingSpans.expungeStaleEntries(PendingSpans.java:133)
\tat brave.internal.collect.WeakConcurrentMap.getIfPresent(WeakConcurrentMap.java:50)
\tat brave.internal.recorder.PendingSpans.get(PendingSpans.java:59)
\tat brave.Tracer.swapForPendingContext(Tracer.java:197)
\tat brave.Tracer.toSpan(Tracer.java:381)
\tat brave.Tracer.toSpan(Tracer.java:376)
\tat brave.LazySpan.span(LazySpan.java:141)
\tat brave.LazySpan.context(LazySpan.java:40)
\tat org.springframework.cloud.sleuth.brave.bridge.BraveSpan.context(BraveSpan.java:49)
\tat org.springframework.cloud.sleuth.instrument.prometheus.SleuthSpanContextSupplier.getSpanId(SleuthSpanContextSupplier.java:52)
\tat org.springframework.cloud.sleuth.instrument.prometheus.LazySleuthSpanContextSupplier.getSpanId(LazySleuthSpanContextSupplier.java:48)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.doSample(DefaultExemplarSampler.java:46)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.sample(DefaultExemplarSampler.java:34)
\tat io.micrometer.prometheus.PrometheusCounter.updateExemplar(PrometheusCounter.java:79)
\tat io.micrometer.prometheus.PrometheusCounter.increment(PrometheusCounter.java:58)
\tat zipkin2.reporter.metrics.micrometer.MicrometerReporterMetrics.incrementSpansDropped(MicrometerReporterMetrics.java:121)
\tat org.springframework.cloud.sleuth.autoconfig.zipkin2.ZipkinAutoConfiguration$TraceMetricsMicrometerConfiguration$NoReporterMetricsBeanConfiguration$LazyMicrometerReporterMetrics.incrementSpansDropped(ZipkinAutoConfiguration.java:308)
\tat zipkin2.reporter.AsyncReporter$BoundedAsyncReporter.report(AsyncReporter.java:260)
\tat zipkin2.reporter.brave.ConvertingSpanReporter.report(ConvertingSpanReporter.java:44)
\tat zipkin2.reporter.brave.ConvertingSpanReporter.report(ConvertingSpanReporter.java:29)
\tat zipkin2.reporter.brave.ZipkinSpanHandler.end(ZipkinSpanHandler.java:148)
\tat brave.internal.handler.NoopAwareSpanHandler$CompositeSpanHandler.end(NoopAwareSpanHandler.java:107)
\tat brave.internal.handler.NoopAwareSpanHandler.end(NoopAwareSpanHandler.java:57)
\tat brave.internal.recorder.PendingSpans.expungeStaleEntries(PendingSpans.java:133)
\tat brave.internal.collect.WeakConcurrentMap.getIfPresent(WeakConcurrentMap.java:50)
\tat brave.internal.recorder.PendingSpans.get(PendingSpans.java:59)
\tat brave.Tracer.swapForPendingContext(Tracer.java:197)
\tat brave.Tracer.toSpan(Tracer.java:381)
\tat brave.Tracer.toSpan(Tracer.java:376)
\tat brave.LazySpan.span(LazySpan.java:141)
\tat brave.LazySpan.context(LazySpan.java:40)
\tat org.springframework.cloud.sleuth.brave.bridge.BraveSpan.context(BraveSpan.java:49)
\tat org.springframework.cloud.sleuth.instrument.prometheus.SleuthSpanContextSupplier.getSpanId(SleuthSpanContextSupplier.java:52)
\tat org.springframework.cloud.sleuth.instrument.prometheus.LazySleuthSpanContextSupplier.getSpanId(LazySleuthSpanContextSupplier.java:48)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.doSample(DefaultExemplarSampler.java:46)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.sample(DefaultExemplarSampler.java:34)
\tat io.micrometer.prometheus.PrometheusCounter.updateExemplar(PrometheusCounter.java:79)
\tat io.micrometer.prometheus.PrometheusCounter.increment(PrometheusCounter.java:58)
\tat zipkin2.reporter.metrics.micrometer.MicrometerReporterMetrics.incrementSpansDropped(MicrometerReporterMetrics.java:121)
\tat org.springframework.cloud.sleuth.autoconfig.zipkin2.ZipkinAutoConfiguration$TraceMetricsMicrometerConfiguration$NoReporterMetricsBeanConfiguration$LazyMicrometerReporterMetrics.incrementSpansDropped(ZipkinAutoConfiguration.java:308)
\tat zipkin2.reporter.AsyncReporter$BoundedAsyncReporter.report(AsyncReporter.java:260)
\tat zipkin2.reporter.brave.ConvertingSpanReporter.report(ConvertingSpanReporter.java:44)
\tat zipkin2.reporter.brave.ConvertingSpanReporter.report(ConvertingSpanReporter.java:29)
\tat zipkin2.reporter.brave.ZipkinSpanHandler.end(ZipkinSpanHandler.java:148)
\tat brave.internal.handler.NoopAwareSpanHandler$CompositeSpanHandler.end(NoopAwareSpanHandler.java:107)
\tat brave.internal.handler.NoopAwareSpanHandler.end(NoopAwareSpanHandler.java:57)
\tat brave.internal.recorder.PendingSpans.expungeStaleEntries(PendingSpans.java:133)
\tat brave.internal.collect.WeakConcurrentMap.getIfPresent(WeakConcurrentMap.java:50)
\tat brave.internal.recorder.PendingSpans.get(PendingSpans.java:59)
\tat brave.Tracer.swapForPendingContext(Tracer.java:197)
\tat brave.Tracer.toSpan(Tracer.java:381)
\tat brave.Tracer.toSpan(Tracer.java:376)
\tat brave.LazySpan.span(LazySpan.java:141)
\tat brave.LazySpan.context(LazySpan.java:40)
\tat org.springframework.cloud.sleuth.brave.bridge.BraveSpan.context(BraveSpan.java:49)
\tat org.springframework.cloud.sleuth.instrument.prometheus.SleuthSpanContextSupplier.getSpanId(SleuthSpanContextSupplier.java:52)
\tat org.springframework.cloud.sleuth.instrument.prometheus.LazySleuthSpanContextSupplier.getSpanId(LazySleuthSpanContextSupplier.java:48)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.doSample(DefaultExemplarSampler.java:46)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.sample(DefaultExemplarSampler.java:34)
\tat io.micrometer.prometheus.PrometheusCounter.updateExemplar(PrometheusCounter.java:79)
\tat io.micrometer.prometheus.PrometheusCounter.increment(PrometheusCounter.java:58)
\tat zipkin2.reporter.metrics.micrometer.MicrometerReporterMetrics.incrementSpansDropped(MicrometerReporterMetrics.java:121)
\tat org.springframework.cloud.sleuth.autoconfig.zipkin2.ZipkinAutoConfiguration$TraceMetricsMicrometerConfiguration$NoReporterMetricsBeanConfiguration$LazyMicrometerReporterMetrics.incrementSpansDropped(ZipkinAutoConfiguration.java:308)
\tat zipkin2.reporter.AsyncReporter$BoundedAsyncReporter.report(AsyncReporter.java:260)
\tat zipkin2.reporter.brave.ConvertingSpanReporter.report(ConvertingSpanReporter.java:44)
\tat zipkin2.reporter.brave.ConvertingSpanReporter.report(ConvertingSpanReporter.java:29)
\tat zipkin2.reporter.brave.ZipkinSpanHandler.end(ZipkinSpanHandler.java:148)
\tat brave.internal.handler.NoopAwareSpanHandler$CompositeSpanHandler.end(NoopAwareSpanHandler.java:107)
\tat brave.internal.handler.NoopAwareSpanHandler.end(NoopAwareSpanHandler.java:57)
\tat brave.internal.recorder.PendingSpans.expungeStaleEntries(PendingSpans.java:133)
\tat brave.internal.collect.WeakConcurrentMap.getIfPresent(WeakConcurrentMap.java:50)
\tat brave.internal.recorder.PendingSpans.get(PendingSpans.java:59)
\tat brave.Tracer.swapForPendingContext(Tracer.java:197)
\tat brave.Tracer.toSpan(Tracer.java:381)
\tat brave.Tracer.toSpan(Tracer.java:376)
\tat brave.LazySpan.span(LazySpan.java:141)
\tat brave.LazySpan.context(LazySpan.java:40)
\tat org.springframework.cloud.sleuth.brave.bridge.BraveSpan.context(BraveSpan.java:49)
\tat org.springframework.cloud.sleuth.instrument.prometheus.SleuthSpanContextSupplier.getSpanId(SleuthSpanContextSupplier.java:52)
\tat org.springframework.cloud.sleuth.instrument.prometheus.LazySleuthSpanContextSupplier.getSpanId(LazySleuthSpanContextSupplier.java:48)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.doSample(DefaultExemplarSampler.java:46)
\tat io.prometheus.client.exemplars.DefaultExemplarSampler.sample(DefaultExemplarSampler.java:34)
\tat io.micrometer.prometheus.PrometheusCounter.updateExemplar(PrometheusCounter.java:79)
\tat io.micrometer.prometheus.PrometheusCounter.increment(PrometheusCounter.java:58)
\tat zipkin2.reporter.metrics.micrometer.MicrometerReporterMetrics.incrementSpansDropped(MicrometerReporterMetrics.java:121)
\tat org.springframework.cloud.sleuth.autoconfig.zipkin2.ZipkinAutoConfiguration$TraceMetricsMicrometerConfiguration$NoReporterMetricsBeanConfiguration$LazyMicrometerReporterMetrics.incrementSpansDropped(ZipkinAutoConfiguration.java:308)
...
Comment From: mhalbritter
This looks like a bug in Spring Cloud. Please report it on their issue tracker. Thanks!