Sha256: f1685f759afcecf013ef691ab27384d9e7d00c4cb9d202d7a87af9af4b5961e7
Contents?: true
Size: 1.17 KB
Versions: 1
Compression:
Stored size: 1.17 KB
Contents
require 'thread' module Datadog # Trace buffer that stores application traces. The buffer has a maximum size and when # the buffer is full, a random trace is discarded. This class is thread-safe and is used # automatically by the ``Tracer`` instance when a ``Span`` is finished. class TraceBuffer def initialize(max_size) @max_size = max_size @mutex = Mutex.new @traces = [] @closed = false end # Add a new ``trace`` in the local queue. This method doesn't block the execution # even if the buffer is full. In that case, a random trace is discarded. def push(trace) return if @closed len = @traces.length @traces.delete_at(rand(len)) if len >= @max_size && @max_size > 0 @traces << trace end # Return the current number of stored traces. def length @traces.length end # Return if the buffer is empty. def empty? @traces.empty? end # Stored traces are returned and the local buffer is reset. def pop @mutex.synchronize do traces = @traces @traces = [] return traces end end def close @closed = true end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ddtrace-0.15.0.beta1 | lib/ddtrace/buffer.rb |