Skip to content

Commit

Permalink
Revert to simple boolean to include unsampled spans
Browse files Browse the repository at this point in the history
  • Loading branch information
HaloFour committed Jan 4, 2024
1 parent 45172b3 commit 89a0f04
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 34 deletions.
25 changes: 24 additions & 1 deletion docs/apidiffs/current_vs_latest/opentelemetry-exporter-otlp.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,25 @@
Comparing source compatibility of against
No changes.
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder setConnectTimeout(long, java.util.concurrent.TimeUnit)
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder setConnectTimeout(java.time.Duration)
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder setHeaders(java.util.function.Supplier<java.util.Map<java.lang.String,java.lang.String>>)
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder setConnectTimeout(long, java.util.concurrent.TimeUnit)
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder setConnectTimeout(java.time.Duration)
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporterBuilder setHeaders(java.util.function.Supplier<java.util.Map<java.lang.String,java.lang.String>>)
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder setConnectTimeout(long, java.util.concurrent.TimeUnit)
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder setConnectTimeout(java.time.Duration)
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder setHeaders(java.util.function.Supplier<java.util.Map<java.lang.String,java.lang.String>>)
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder setHeaders(java.util.function.Supplier<java.util.Map<java.lang.String,java.lang.String>>)
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporterBuilder setHeaders(java.util.function.Supplier<java.util.Map<java.lang.String,java.lang.String>>)
***! MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
---! REMOVED METHOD: PUBLIC(-) io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder setHeaders(java.util.function.Supplier<java.util.Map<java.lang.String,java.lang.String>>)
4 changes: 2 additions & 2 deletions docs/apidiffs/current_vs_latest/opentelemetry-sdk-trace.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
Comparing source compatibility of against
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.trace.export.BatchSpanProcessorBuilder (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.trace.export.BatchSpanProcessorBuilder setExportFilter(java.util.function.Predicate<io.opentelemetry.sdk.trace.ReadableSpan>)
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.trace.export.BatchSpanProcessorBuilder setExportUnsampledSpans(boolean)
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.trace.export.SimpleSpanProcessor (not serializable)
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.trace.export.SimpleSpanProcessorBuilder builder(io.opentelemetry.sdk.trace.export.SpanExporter)
+++ NEW CLASS: PUBLIC(+) FINAL(+) io.opentelemetry.sdk.trace.export.SimpleSpanProcessorBuilder (not serializable)
+++ CLASS FILE FORMAT VERSION: 52.0 <- n.a.
+++ NEW SUPERCLASS: java.lang.Object
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.trace.export.SimpleSpanProcessor build()
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.trace.export.SimpleSpanProcessorBuilder setExportFilter(java.util.function.Predicate<io.opentelemetry.sdk.trace.ReadableSpan>)
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.trace.export.SimpleSpanProcessorBuilder setExportUnsampledSpans(boolean)
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand All @@ -54,7 +53,7 @@ public final class BatchSpanProcessor implements SpanProcessor {
AttributeKey.booleanKey("dropped");
private static final String SPAN_PROCESSOR_TYPE_VALUE = BatchSpanProcessor.class.getSimpleName();

private final Predicate<ReadableSpan> exportPredicate;
private final boolean exportUnsampledSpans;
private final Worker worker;
private final AtomicBoolean isShutdown = new AtomicBoolean(false);

Expand All @@ -71,13 +70,13 @@ public static BatchSpanProcessorBuilder builder(SpanExporter spanExporter) {

BatchSpanProcessor(
SpanExporter spanExporter,
Predicate<ReadableSpan> exportPredicate,
boolean exportUnsampledSpans,
MeterProvider meterProvider,
long scheduleDelayNanos,
int maxQueueSize,
int maxExportBatchSize,
long exporterTimeoutNanos) {
this.exportPredicate = exportPredicate;
this.exportUnsampledSpans = exportUnsampledSpans;
this.worker =
new Worker(
spanExporter,
Expand All @@ -100,7 +99,7 @@ public boolean isStartRequired() {

@Override
public void onEnd(ReadableSpan span) {
if (span != null && exportPredicate.test(span)) {
if (span != null && (exportUnsampledSpans || span.getSpanContext().isSampled())) {
worker.addSpan(span);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,8 @@
import static java.util.Objects.requireNonNull;

import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.sdk.trace.ReadableSpan;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;

/** Builder class for {@link BatchSpanProcessor}. */
public final class BatchSpanProcessorBuilder {
Expand All @@ -27,7 +25,7 @@ public final class BatchSpanProcessorBuilder {
static final int DEFAULT_EXPORT_TIMEOUT_MILLIS = 30_000;

private final SpanExporter spanExporter;
private Predicate<ReadableSpan> exportPredicate = span -> span.getSpanContext().isSampled();
private boolean exportUnsampledSpans;
private long scheduleDelayNanos = TimeUnit.MILLISECONDS.toNanos(DEFAULT_SCHEDULE_DELAY_MILLIS);
private int maxQueueSize = DEFAULT_MAX_QUEUE_SIZE;
private int maxExportBatchSize = DEFAULT_MAX_EXPORT_BATCH_SIZE;
Expand All @@ -39,11 +37,11 @@ public final class BatchSpanProcessorBuilder {
}

/**
* Sets a {@link Predicate Predicate&lt;ReadableSpan&gt;} that filters the {@link ReadableSpan}s
* that are to be exported. If unset, defaults to exporting sampled spans.
* Sets whether unsampled spans should be exported. If unset, defaults to exporting only sampled
* spans.
*/
public BatchSpanProcessorBuilder setExportFilter(Predicate<ReadableSpan> exportPredicate) {
this.exportPredicate = requireNonNull(exportPredicate, "exportPredicate");
public BatchSpanProcessorBuilder setExportUnsampledSpans(boolean exportUnsampledSpans) {
this.exportUnsampledSpans = exportUnsampledSpans;
return this;
}

Expand Down Expand Up @@ -158,7 +156,7 @@ int getMaxExportBatchSize() {
public BatchSpanProcessor build() {
return new BatchSpanProcessor(
spanExporter,
exportPredicate,
exportUnsampledSpans,
meterProvider,
scheduleDelayNanos,
maxQueueSize,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand All @@ -37,7 +36,7 @@ public final class SimpleSpanProcessor implements SpanProcessor {
private static final Logger logger = Logger.getLogger(SimpleSpanProcessor.class.getName());

private final SpanExporter spanExporter;
private final Predicate<ReadableSpan> exportPredicate;
private final boolean exportUnsampledSpans;
private final Set<CompletableResultCode> pendingExports =
Collections.newSetFromMap(new ConcurrentHashMap<>());
private final AtomicBoolean isShutdown = new AtomicBoolean(false);
Expand All @@ -62,9 +61,9 @@ public static SimpleSpanProcessorBuilder builder(SpanExporter exporter) {
return new SimpleSpanProcessorBuilder(exporter);
}

SimpleSpanProcessor(SpanExporter spanExporter, Predicate<ReadableSpan> exportPredicate) {
SimpleSpanProcessor(SpanExporter spanExporter, boolean exportUnsampledSpans) {
this.spanExporter = requireNonNull(spanExporter, "spanExporter");
this.exportPredicate = exportPredicate;
this.exportUnsampledSpans = exportUnsampledSpans;
}

@Override
Expand All @@ -79,7 +78,7 @@ public boolean isStartRequired() {

@Override
public void onEnd(ReadableSpan span) {
if (span != null && exportPredicate.test(span)) {
if (span != null && (exportUnsampledSpans || span.getSpanContext().isSampled())) {
try {
List<SpanData> spans = Collections.singletonList(span.toSpanData());
CompletableResultCode result = spanExporter.export(spans);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,21 @@

import static java.util.Objects.requireNonNull;

import io.opentelemetry.sdk.trace.ReadableSpan;
import java.util.function.Predicate;

/** Builder class for {@link SimpleSpanProcessor}. */
public final class SimpleSpanProcessorBuilder {
private final SpanExporter spanExporter;
private Predicate<ReadableSpan> exportPredicate = span -> span.getSpanContext().isSampled();
private boolean exportUnsampledSpans;

SimpleSpanProcessorBuilder(SpanExporter spanExporter) {
this.spanExporter = requireNonNull(spanExporter, "spanExporter");
}

/**
* Sets a {@link Predicate Predicate&lt;ReadableSpan&gt;} that filters the {@link ReadableSpan}s
* that are to be exported. If unset, defaults to exporting sampled spans.
* Sets whether unsampled spans should be exported. If unset, defaults to exporting only sampled
* spans.
*/
public SimpleSpanProcessorBuilder setExportFilter(Predicate<ReadableSpan> exportPredicate) {
this.exportPredicate = requireNonNull(exportPredicate, "exportPredicate");
public SimpleSpanProcessorBuilder setExportUnsampledSpans(boolean exportUnsampledSpans) {
this.exportUnsampledSpans = exportUnsampledSpans;
return this;
}

Expand All @@ -34,6 +31,6 @@ public SimpleSpanProcessorBuilder setExportFilter(Predicate<ReadableSpan> export
* @return a new {@link SimpleSpanProcessor}.
*/
public SimpleSpanProcessor build() {
return new SimpleSpanProcessor(spanExporter, exportPredicate);
return new SimpleSpanProcessor(spanExporter, exportUnsampledSpans);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ void exportUnsampledSpans_recordOnly() {
SdkTracerProvider.builder()
.addSpanProcessor(
BatchSpanProcessor.builder(waitingSpanExporter)
.setExportFilter(span -> true)
.setExportUnsampledSpans(true)
.setScheduleDelay(MAX_SCHEDULE_DELAY_MILLIS, TimeUnit.MILLISECONDS)
.build())
.setSampler(mockSampler)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ void onEndSync_ExportUnsampledSpans_NotSampledSpan() {
when(readableSpan.getSpanContext()).thenReturn(NOT_SAMPLED_SPAN_CONTEXT);
when(readableSpan.toSpanData()).thenReturn(spanData);
SpanProcessor simpleSpanProcessor =
SimpleSpanProcessor.builder(spanExporter).setExportFilter(span -> true).build();
SimpleSpanProcessor.builder(spanExporter).setExportUnsampledSpans(true).build();
simpleSpanProcessor.onEnd(readableSpan);
verify(spanExporter).export(Collections.singletonList(spanData));
}
Expand All @@ -121,7 +121,7 @@ void onEndSync_ExportUnsampledSpans_SampledSpan() {
when(readableSpan.getSpanContext()).thenReturn(SAMPLED_SPAN_CONTEXT);
when(readableSpan.toSpanData()).thenReturn(spanData);
SpanProcessor simpleSpanProcessor =
SimpleSpanProcessor.builder(spanExporter).setExportFilter(span -> true).build();
SimpleSpanProcessor.builder(spanExporter).setExportUnsampledSpans(true).build();
simpleSpanProcessor.onEnd(readableSpan);
verify(spanExporter).export(Collections.singletonList(spanData));
}
Expand Down Expand Up @@ -172,7 +172,7 @@ void tracerSdk_ExportUnsampledSpans_NotSampledSpan() {
SdkTracerProvider.builder()
.addSpanProcessor(
SimpleSpanProcessor.builder(waitingSpanExporter)
.setExportFilter(span -> true)
.setExportUnsampledSpans(true)
.build())
.setSampler(mockSampler)
.build();
Expand Down

0 comments on commit 89a0f04

Please sign in to comment.