Skip to content

Commit

Permalink
pr review
Browse files Browse the repository at this point in the history
  • Loading branch information
zeitlinger committed Oct 16, 2024
1 parent 9ce3fec commit cfabe23
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.Collection;
import java.util.StringJoiner;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand All @@ -35,13 +36,15 @@ public final class OtlpStdoutLogRecordExporter implements LogRecordExporter {
private final JsonWriter jsonWriter;
private final boolean wrapperJsonObject;
private final MemoryMode memoryMode;
private final Function<Collection<LogRecordData>, CompletableResultCode> marshaler;

OtlpStdoutLogRecordExporter(
Logger logger, JsonWriter jsonWriter, boolean wrapperJsonObject, MemoryMode memoryMode) {
this.logger = logger;
this.jsonWriter = jsonWriter;
this.wrapperJsonObject = wrapperJsonObject;
this.memoryMode = memoryMode;
marshaler = createMarshaler(jsonWriter, memoryMode, wrapperJsonObject);
}

/** Returns a new {@link OtlpStdoutLogRecordExporterBuilder}. */
Expand All @@ -50,26 +53,35 @@ public static OtlpStdoutLogRecordExporterBuilder builder() {
return new OtlpStdoutLogRecordExporterBuilder(LOGGER).setOutput(System.out);
}

private static Function<Collection<LogRecordData>, CompletableResultCode> createMarshaler(
JsonWriter jsonWriter, MemoryMode memoryMode, boolean wrapperJsonObject) {
if (wrapperJsonObject) {
LogReusableDataMarshaler reusableDataMarshaler =
new LogReusableDataMarshaler(
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler));
return reusableDataMarshaler::export;
} else {
return logs -> {
// no support for low allocation marshaler
for (ResourceLogsMarshaler marshaler : ResourceLogsMarshaler.create(logs)) {
CompletableResultCode resultCode = jsonWriter.write(marshaler);
if (!resultCode.isSuccess()) {
// already logged
return resultCode;

Check warning on line 70 in exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporter.java

View check run for this annotation

Codecov / codecov/patch

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporter.java#L70

Added line #L70 was not covered by tests
}
}
return CompletableResultCode.ofSuccess();
};
}
}

@Override
public CompletableResultCode export(Collection<LogRecordData> logs) {
if (isShutdown.get()) {
return CompletableResultCode.ofFailure();
}

if (wrapperJsonObject) {
return new LogReusableDataMarshaler(
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler))
.export(logs);
} else {
for (ResourceLogsMarshaler resourceLogs : ResourceLogsMarshaler.create(logs)) {
CompletableResultCode resultCode = jsonWriter.write(resourceLogs);
if (!resultCode.isSuccess()) {
// already logged
return resultCode;
}
}
return CompletableResultCode.ofSuccess();
}
return marshaler.apply(logs);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import java.util.Collection;
import java.util.StringJoiner;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand All @@ -39,6 +40,7 @@ public final class OtlpStdoutMetricExporter implements MetricExporter {
private final JsonWriter jsonWriter;
private final boolean wrapperJsonObject;
private final MemoryMode memoryMode;
private final Function<Collection<MetricData>, CompletableResultCode> marshaler;
private final AggregationTemporalitySelector aggregationTemporalitySelector;
private final DefaultAggregationSelector defaultAggregationSelector;

Expand All @@ -55,6 +57,7 @@ public final class OtlpStdoutMetricExporter implements MetricExporter {
this.memoryMode = memoryMode;
this.aggregationTemporalitySelector = aggregationTemporalitySelector;
this.defaultAggregationSelector = defaultAggregationSelector;
marshaler = createMarshaler(jsonWriter, memoryMode, wrapperJsonObject);
}

/** Returns a new {@link OtlpStdoutMetricExporterBuilder}. */
Expand All @@ -63,6 +66,28 @@ public static OtlpStdoutMetricExporterBuilder builder() {
return new OtlpStdoutMetricExporterBuilder(LOGGER).setOutput(System.out);
}

private static Function<Collection<MetricData>, CompletableResultCode> createMarshaler(
JsonWriter jsonWriter, MemoryMode memoryMode, boolean wrapperJsonObject) {
if (wrapperJsonObject) {
MetricReusableDataMarshaler reusableDataMarshaler =
new MetricReusableDataMarshaler(
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler));
return reusableDataMarshaler::export;
} else {
return metrics -> {
// no support for low allocation marshaler
for (ResourceMetricsMarshaler marshaler : ResourceMetricsMarshaler.create(metrics)) {
CompletableResultCode resultCode = jsonWriter.write(marshaler);
if (!resultCode.isSuccess()) {
// already logged
return resultCode;

Check warning on line 83 in exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporter.java

View check run for this annotation

Codecov / codecov/patch

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporter.java#L83

Added line #L83 was not covered by tests
}
}
return CompletableResultCode.ofSuccess();
};
}
}

@Override
public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType) {
return aggregationTemporalitySelector.getAggregationTemporality(instrumentType);
Expand All @@ -84,20 +109,7 @@ public CompletableResultCode export(Collection<MetricData> metrics) {
return CompletableResultCode.ofFailure();
}

if (wrapperJsonObject) {
return new MetricReusableDataMarshaler(
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler))
.export(metrics);
} else {
for (ResourceMetricsMarshaler resourceMetrics : ResourceMetricsMarshaler.create(metrics)) {
CompletableResultCode resultCode = jsonWriter.write(resourceMetrics);
if (!resultCode.isSuccess()) {
// already logged
return resultCode;
}
}
return CompletableResultCode.ofSuccess();
}
return marshaler.apply(metrics);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import java.util.Collection;
import java.util.StringJoiner;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Function;
import java.util.logging.Level;
import java.util.logging.Logger;

Expand All @@ -34,13 +35,15 @@ public final class OtlpStdoutSpanExporter implements SpanExporter {
private final JsonWriter jsonWriter;
private final boolean wrapperJsonObject;
private final MemoryMode memoryMode;
private final Function<Collection<SpanData>, CompletableResultCode> marshaler;

OtlpStdoutSpanExporter(
Logger logger, JsonWriter jsonWriter, boolean wrapperJsonObject, MemoryMode memoryMode) {
this.logger = logger;
this.jsonWriter = jsonWriter;
this.wrapperJsonObject = wrapperJsonObject;
this.memoryMode = memoryMode;
marshaler = createMarshaler(jsonWriter, memoryMode, wrapperJsonObject);
}

/** Returns a new {@link OtlpStdoutSpanExporterBuilder}. */
Expand All @@ -49,26 +52,35 @@ public static OtlpStdoutSpanExporterBuilder builder() {
return new OtlpStdoutSpanExporterBuilder(LOGGER).setOutput(System.out);
}

private static Function<Collection<SpanData>, CompletableResultCode> createMarshaler(
JsonWriter jsonWriter, MemoryMode memoryMode, boolean wrapperJsonObject) {
if (wrapperJsonObject) {
SpanReusableDataMarshaler reusableDataMarshaler =
new SpanReusableDataMarshaler(
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler));
return reusableDataMarshaler::export;
} else {
return spans -> {
// no support for low allocation marshaler
for (ResourceSpansMarshaler marshaler : ResourceSpansMarshaler.create(spans)) {
CompletableResultCode resultCode = jsonWriter.write(marshaler);
if (!resultCode.isSuccess()) {
// already logged
return resultCode;

Check warning on line 69 in exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporter.java

View check run for this annotation

Codecov / codecov/patch

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporter.java#L69

Added line #L69 was not covered by tests
}
}
return CompletableResultCode.ofSuccess();
};
}
}

@Override
public CompletableResultCode export(Collection<SpanData> spans) {
if (isShutdown.get()) {
return CompletableResultCode.ofFailure();
}

if (wrapperJsonObject) {
return new SpanReusableDataMarshaler(
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler))
.export(spans);
} else {
for (ResourceSpansMarshaler resourceSpans : ResourceSpansMarshaler.create(spans)) {
CompletableResultCode resultCode = jsonWriter.write(resourceSpans);
if (!resultCode.isSuccess()) {
// already logged
return resultCode;
}
}
return CompletableResultCode.ofSuccess();
}
return marshaler.apply(spans);
}

@Override
Expand Down

0 comments on commit cfabe23

Please sign in to comment.