From 1247db326958e01ebe60ab046c4c6f336a0e8e7f Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Tue, 4 Oct 2022 18:28:03 -0700 Subject: [PATCH] Remove Guava dependencies This is a re-application of https://github.com/wavefrontHQ/wavefront-spring-boot/commit/3e57b883d50c637eb50b99bf74a05c0665fd20ee since it seems when this file was copied here, an older version was used, I assume this version was used https://github.com/wavefrontHQ/wavefront-spring-boot/commit/5d0414f3bb09ecb16b8a8c645863ddc469fd0c3d but I'm not 100% sure that this assumption is correct. --- config/checkstyle/checkstyle-suppressions.xml | 1 - config/checkstyle/checkstyle.xml | 2 +- .../wavefront/WavefrontSpanHandler.java | 42 ++++++++++++++----- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/config/checkstyle/checkstyle-suppressions.xml b/config/checkstyle/checkstyle-suppressions.xml index db28ab2d..9070bcb1 100755 --- a/config/checkstyle/checkstyle-suppressions.xml +++ b/config/checkstyle/checkstyle-suppressions.xml @@ -4,5 +4,4 @@ "https://checkstyle.org/dtds/suppressions_1_2.dtd"> - diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 919f1ee5..8786b668 100755 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -16,7 +16,7 @@ - + diff --git a/micrometer-tracing-reporters/micrometer-tracing-reporter-wavefront/src/main/java/io/micrometer/tracing/reporter/wavefront/WavefrontSpanHandler.java b/micrometer-tracing-reporters/micrometer-tracing-reporter-wavefront/src/main/java/io/micrometer/tracing/reporter/wavefront/WavefrontSpanHandler.java index b7786685..a77f0568 100755 --- a/micrometer-tracing-reporters/micrometer-tracing-reporter-wavefront/src/main/java/io/micrometer/tracing/reporter/wavefront/WavefrontSpanHandler.java +++ b/micrometer-tracing-reporters/micrometer-tracing-reporter-wavefront/src/main/java/io/micrometer/tracing/reporter/wavefront/WavefrontSpanHandler.java @@ -16,8 +16,6 @@ package io.micrometer.tracing.reporter.wavefront; -import com.google.common.collect.Iterators; -import com.google.common.collect.Sets; import com.wavefront.internal.reporter.WavefrontInternalReporter; import com.wavefront.sdk.common.NamedThreadFactory; import com.wavefront.sdk.common.Pair; @@ -34,10 +32,7 @@ import java.io.IOException; import java.time.temporal.ChronoUnit; import java.util.*; -import java.util.concurrent.Executors; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; @@ -138,7 +133,7 @@ public WavefrontSpanHandler(int maxQueueSize, WavefrontSender wavefrontSender, S String source, ApplicationTags applicationTags, Set redMetricsCustomTagKeys) { this.wavefrontSender = wavefrontSender; this.applicationTags = applicationTags; - this.discoveredHeartbeatMetrics = Sets.newConcurrentHashSet(); + this.discoveredHeartbeatMetrics = ConcurrentHashMap.newKeySet(); this.spanMetrics = spanMetrics; this.heartbeatMetricsScheduledExecutorService = Executors.newScheduledThreadPool(1, @@ -216,7 +211,7 @@ static List convertAnnotationsToSpanLogs(FinishedSpan span) { } List spanLogs = new ArrayList<>(annotationCount); for (int i = 0; i < annotationCount; i++) { - Map.Entry entry = Iterators.get(span.getEvents().iterator(), i); + Map.Entry entry = getAt(span.getEvents().iterator(), i); long epochMicros = entry.getKey(); String value = entry.getValue(); spanLogs.add(new SpanLog(epochMicros, Collections.singletonMap("annotation", value))); @@ -239,6 +234,33 @@ static List> createDefaultTags(ApplicationTags applicationT return result; } + // Mostly from Guava + private static T getAt(Iterator iterator, int position) { + Objects.requireNonNull(iterator); + if (position < 0) { + throw new IndexOutOfBoundsException("position (" + position + ") must not be negative"); + } + + int skipped = advance(iterator, position); + if (!iterator.hasNext()) { + throw new IndexOutOfBoundsException("position (" + position + + ") must be less than the number of elements that remained (" + skipped + ")"); + } + else { + return iterator.next(); + } + } + + // From Guava + private static int advance(Iterator iterator, int numberToAdvance) { + int i; + for (i = 0; i < numberToAdvance && iterator.hasNext(); ++i) { + iterator.next(); + } + + return i; + } + /** * Exact same behavior as WavefrontSpanReporter. * https://github.com/wavefrontHQ/wavefront-opentracing-sdk-java/blob/f1f08d8daf7b692b9b61dcd5bc24ca6befa8e710/src/main/java/com/wavefront/opentracing/reporting/WavefrontSpanReporter.java#L163-L179 @@ -466,8 +488,8 @@ static final class TagList extends ArrayList> { int tagCount = span.getTags().size(); addAll(defaultTags); for (int i = 0; i < tagCount; i++) { - String tagKey = Iterators.get(span.getTags().keySet().iterator(), i); - String tagValue = Iterators.get(span.getTags().values().iterator(), i); + String tagKey = getAt(span.getTags().keySet().iterator(), i); + String tagValue = getAt(span.getTags().values().iterator(), i); String key = tagKey; String value = tagValue; String lcKey = key.toLowerCase(Locale.ROOT);