internal void InternaltRegisterSpanNamesForCollection(ICollection <string> spanNames) { lock (samples) { foreach (string spanName in spanNames) { if (!samples.ContainsKey(spanName)) { samples[spanName] = new PerSpanNameSamples(); } } } }
public override IList <ISpanData> GetErrorSampledSpans(ISampledSpanStoreErrorFilter filter) { int numSpansToReturn = filter.MaxSpansToReturn == 0 ? MAX_PER_SPAN_NAME_SAMPLES : filter.MaxSpansToReturn; IList <SpanBase> spans = new List <SpanBase>(); // Try to not keep the lock to much, do the SpanImpl -> SpanData conversion outside the lock. lock (samples) { PerSpanNameSamples perSpanNameSamples = samples[filter.SpanName]; if (perSpanNameSamples != null) { spans = perSpanNameSamples.GetErrorSamples(filter.CanonicalCode, numSpansToReturn); } } List <ISpanData> ret = new List <ISpanData>(spans.Count); foreach (SpanBase span in spans) { ret.Add(span.ToSpanData()); } return(ret.AsReadOnly()); }
public override void ConsiderForSampling(ISpan ispan) { SpanBase span = ispan as SpanBase; if (span != null) { lock (samples) { string spanName = span.Name; if (span.IsSampleToLocalSpanStore && !samples.ContainsKey(spanName)) { samples[spanName] = new PerSpanNameSamples(); } samples.TryGetValue(spanName, out PerSpanNameSamples perSpanNameSamples); if (perSpanNameSamples != null) { perSpanNameSamples.ConsiderForSampling(span); } } } }
public override IEnumerable <ISpanData> GetLatencySampledSpans(ISampledSpanStoreLatencyFilter filter) { int numSpansToReturn = filter.MaxSpansToReturn == 0 ? MaxPerSpanNameSamples : filter.MaxSpansToReturn; IList <SpanBase> spans = new List <SpanBase>(); // Try to not keep the lock to much, do the SpanImpl -> SpanData conversion outside the lock. lock (this.samples) { PerSpanNameSamples perSpanNameSamples = this.samples[filter.SpanName]; if (perSpanNameSamples != null) { spans = perSpanNameSamples.GetLatencySamples(filter.LatencyLowerNs, filter.LatencyUpperNs, numSpansToReturn); } } List <ISpanData> ret = new List <ISpanData>(spans.Count); foreach (SpanBase span in spans) { ret.Add(span.ToSpanData()); } return(ret.AsReadOnly()); }
/// <inheritdoc/> public override IEnumerable <SpanData> GetErrorSampledSpans(ISampledSpanStoreErrorFilter filter) { int numSpansToReturn = filter.MaxSpansToReturn == 0 ? MaxPerSpanNameSamples : filter.MaxSpansToReturn; IEnumerable <SpanBase> spans = Enumerable.Empty <SpanBase>(); // Try to not keep the lock to much, do the SpanImpl -> SpanData conversion outside the lock. lock (this.samples) { PerSpanNameSamples perSpanNameSamples = this.samples[filter.SpanName]; if (perSpanNameSamples != null) { spans = perSpanNameSamples.GetErrorSamples(filter.CanonicalCode, numSpansToReturn); } } List <SpanData> ret = new List <SpanData>(spans.Count()); foreach (SpanBase span in spans) { ret.Add(span.ToSpanData()); } return(ret.AsReadOnly()); }