aboutsummaryrefslogtreecommitdiff
path: root/kamon-core
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-10-12 02:26:09 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2014-10-12 02:26:09 +0200
commitdfe4b750e6907902c3bbcb357fb4051c1f777f2e (patch)
tree1fcca3d337b66d9d1ecd834ef951019585771cb6 /kamon-core
parent54e5f1c7bf9b4b04fd26822e4d1f53ef9f22251c (diff)
downloadKamon-dfe4b750e6907902c3bbcb357fb4051c1f777f2e.tar.gz
Kamon-dfe4b750e6907902c3bbcb357fb4051c1f777f2e.tar.bz2
Kamon-dfe4b750e6907902c3bbcb357fb4051c1f777f2e.zip
= core: fix NPE when finishing segments, fixes #88
Diffstat (limited to 'kamon-core')
-rw-r--r--kamon-core/src/main/scala/kamon/trace/TraceContext.scala12
1 files changed, 8 insertions, 4 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
index 6ea30511..a15a4326 100644
--- a/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
+++ b/kamon-core/src/main/scala/kamon/trace/TraceContext.scala
@@ -26,6 +26,8 @@ import kamon.trace.TraceContextAware.DefaultTraceContextAware
import kamon.trace.TraceContext.SegmentIdentity
import kamon.metric.TraceMetrics.TraceMetricRecorder
+import scala.annotation.tailrec
+
trait TraceContext {
def name: String
def token: String
@@ -136,10 +138,12 @@ class SimpleMetricCollectionContext(traceName: String, val token: String, metada
}
}
- private def drainFinishedSegments(metricRecorder: TraceMetricRecorder): Unit = {
- while (!finishedSegments.isEmpty) {
- val segmentData = finishedSegments.poll()
- metricRecorder.segmentRecorder(segmentData.identity).record(segmentData.duration)
+ @tailrec private def drainFinishedSegments(metricRecorder: TraceMetricRecorder): Unit = {
+ val segment = finishedSegments.poll()
+ if(segment != null) {
+ metricRecorder.segmentRecorder(segment.identity).record(segment.duration)
+ println("CLOSED")
+ drainFinishedSegments(metricRecorder)
}
}