@Override public Collection<SpanData> getErrorSampledSpans(ErrorFilter filter) { int numSpansToReturn = filter.getMaxSpansToReturn() == 0 ? MAX_PER_SPAN_NAME_SAMPLES : filter.getMaxSpansToReturn(); List<RecordEventsSpanImpl> spans = Collections.emptyList(); // Try to not keep the lock to much, do the RecordEventsSpanImpl -> SpanData conversion outside // the lock. synchronized (samples) { PerSpanNameSamples perSpanNameSamples = samples.get(filter.getSpanName()); if (perSpanNameSamples != null) { spans = perSpanNameSamples.getErrorSamples(filter.getCanonicalCode(), numSpansToReturn); } } List<SpanData> ret = new ArrayList<SpanData>(spans.size()); for (RecordEventsSpanImpl span : spans) { ret.add(span.toSpanData()); } return Collections.unmodifiableList(ret); }
@Override public Collection<SpanData> getErrorSampledSpans(ErrorFilter filter) { int numSpansToReturn = filter.getMaxSpansToReturn() == 0 ? MAX_PER_SPAN_NAME_SAMPLES : filter.getMaxSpansToReturn(); List<RecordEventsSpanImpl> spans = Collections.emptyList(); // Try to not keep the lock to much, do the RecordEventsSpanImpl -> SpanData conversion outside // the lock. synchronized (samples) { PerSpanNameSamples perSpanNameSamples = samples.get(filter.getSpanName()); if (perSpanNameSamples != null) { spans = perSpanNameSamples.getErrorSamples(filter.getCanonicalCode(), numSpansToReturn); } } List<SpanData> ret = new ArrayList<SpanData>(spans.size()); for (RecordEventsSpanImpl span : spans) { ret.add(span.toSpanData()); } return Collections.unmodifiableList(ret); }