Skip to content

Commit d5021a9

Browse files
committed
pr review
1 parent 9ce3fec commit d5021a9

File tree

3 files changed

+78
-42
lines changed

3 files changed

+78
-42
lines changed

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

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.Collection;
1616
import java.util.StringJoiner;
1717
import java.util.concurrent.atomic.AtomicBoolean;
18+
import java.util.function.Function;
1819
import java.util.logging.Level;
1920
import java.util.logging.Logger;
2021

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

3941
OtlpStdoutLogRecordExporter(
4042
Logger logger, JsonWriter jsonWriter, boolean wrapperJsonObject, MemoryMode memoryMode) {
4143
this.logger = logger;
4244
this.jsonWriter = jsonWriter;
4345
this.wrapperJsonObject = wrapperJsonObject;
4446
this.memoryMode = memoryMode;
47+
marshaler = createMarshaler(jsonWriter, memoryMode, wrapperJsonObject);
4548
}
4649

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

56+
private static Function<Collection<LogRecordData>, CompletableResultCode> createMarshaler(
57+
JsonWriter jsonWriter, MemoryMode memoryMode, boolean wrapperJsonObject) {
58+
if (wrapperJsonObject) {
59+
LogReusableDataMarshaler reusableDataMarshaler =
60+
new LogReusableDataMarshaler(
61+
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler));
62+
return reusableDataMarshaler::export;
63+
} else {
64+
return logs -> {
65+
// no support for low allocation marshaler
66+
for (ResourceLogsMarshaler marshaler : ResourceLogsMarshaler.create(logs)) {
67+
CompletableResultCode resultCode = jsonWriter.write(marshaler);
68+
if (!resultCode.isSuccess()) {
69+
// already logged
70+
return resultCode;
71+
}
72+
}
73+
return CompletableResultCode.ofSuccess();
74+
};
75+
}
76+
}
77+
5378
@Override
5479
public CompletableResultCode export(Collection<LogRecordData> logs) {
5580
if (isShutdown.get()) {
5681
return CompletableResultCode.ofFailure();
5782
}
5883

59-
if (wrapperJsonObject) {
60-
return new LogReusableDataMarshaler(
61-
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler))
62-
.export(logs);
63-
} else {
64-
for (ResourceLogsMarshaler resourceLogs : ResourceLogsMarshaler.create(logs)) {
65-
CompletableResultCode resultCode = jsonWriter.write(resourceLogs);
66-
if (!resultCode.isSuccess()) {
67-
// already logged
68-
return resultCode;
69-
}
70-
}
71-
return CompletableResultCode.ofSuccess();
72-
}
84+
return marshaler.apply(logs);
7385
}
7486

7587
@Override

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

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Collection;
2121
import java.util.StringJoiner;
2222
import java.util.concurrent.atomic.AtomicBoolean;
23+
import java.util.function.Function;
2324
import java.util.logging.Level;
2425
import java.util.logging.Logger;
2526

@@ -39,6 +40,7 @@ public final class OtlpStdoutMetricExporter implements MetricExporter {
3940
private final JsonWriter jsonWriter;
4041
private final boolean wrapperJsonObject;
4142
private final MemoryMode memoryMode;
43+
private final Function<Collection<MetricData>, CompletableResultCode> marshaler;
4244
private final AggregationTemporalitySelector aggregationTemporalitySelector;
4345
private final DefaultAggregationSelector defaultAggregationSelector;
4446

@@ -55,6 +57,7 @@ public final class OtlpStdoutMetricExporter implements MetricExporter {
5557
this.memoryMode = memoryMode;
5658
this.aggregationTemporalitySelector = aggregationTemporalitySelector;
5759
this.defaultAggregationSelector = defaultAggregationSelector;
60+
marshaler = createMarshaler(jsonWriter, memoryMode, wrapperJsonObject);
5861
}
5962

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

69+
private static Function<Collection<MetricData>, CompletableResultCode> createMarshaler(
70+
JsonWriter jsonWriter, MemoryMode memoryMode, boolean wrapperJsonObject) {
71+
if (wrapperJsonObject) {
72+
MetricReusableDataMarshaler reusableDataMarshaler =
73+
new MetricReusableDataMarshaler(
74+
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler));
75+
return reusableDataMarshaler::export;
76+
} else {
77+
return metrics -> {
78+
// no support for low allocation marshaler
79+
for (ResourceMetricsMarshaler marshaler : ResourceMetricsMarshaler.create(metrics)) {
80+
CompletableResultCode resultCode = jsonWriter.write(marshaler);
81+
if (!resultCode.isSuccess()) {
82+
// already logged
83+
return resultCode;
84+
}
85+
}
86+
return CompletableResultCode.ofSuccess();
87+
};
88+
}
89+
}
90+
6691
@Override
6792
public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType) {
6893
return aggregationTemporalitySelector.getAggregationTemporality(instrumentType);
@@ -84,20 +109,7 @@ public CompletableResultCode export(Collection<MetricData> metrics) {
84109
return CompletableResultCode.ofFailure();
85110
}
86111

87-
if (wrapperJsonObject) {
88-
return new MetricReusableDataMarshaler(
89-
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler))
90-
.export(metrics);
91-
} else {
92-
for (ResourceMetricsMarshaler resourceMetrics : ResourceMetricsMarshaler.create(metrics)) {
93-
CompletableResultCode resultCode = jsonWriter.write(resourceMetrics);
94-
if (!resultCode.isSuccess()) {
95-
// already logged
96-
return resultCode;
97-
}
98-
}
99-
return CompletableResultCode.ofSuccess();
100-
}
112+
return marshaler.apply(metrics);
101113
}
102114

103115
@Override

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

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.Collection;
1616
import java.util.StringJoiner;
1717
import java.util.concurrent.atomic.AtomicBoolean;
18+
import java.util.function.Function;
1819
import java.util.logging.Level;
1920
import java.util.logging.Logger;
2021

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

3840
OtlpStdoutSpanExporter(
3941
Logger logger, JsonWriter jsonWriter, boolean wrapperJsonObject, MemoryMode memoryMode) {
4042
this.logger = logger;
4143
this.jsonWriter = jsonWriter;
4244
this.wrapperJsonObject = wrapperJsonObject;
4345
this.memoryMode = memoryMode;
46+
marshaler = createMarshaler(jsonWriter, memoryMode, wrapperJsonObject);
4447
}
4548

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

55+
private static Function<Collection<SpanData>, CompletableResultCode> createMarshaler(
56+
JsonWriter jsonWriter, MemoryMode memoryMode, boolean wrapperJsonObject) {
57+
if (wrapperJsonObject) {
58+
SpanReusableDataMarshaler reusableDataMarshaler =
59+
new SpanReusableDataMarshaler(
60+
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler));
61+
return reusableDataMarshaler::export;
62+
} else {
63+
return spans -> {
64+
// no support for low allocation marshaler
65+
for (ResourceSpansMarshaler marshaler : ResourceSpansMarshaler.create(spans)) {
66+
CompletableResultCode resultCode = jsonWriter.write(marshaler);
67+
if (!resultCode.isSuccess()) {
68+
// already logged
69+
return resultCode;
70+
}
71+
}
72+
return CompletableResultCode.ofSuccess();
73+
};
74+
}
75+
}
76+
5277
@Override
5378
public CompletableResultCode export(Collection<SpanData> spans) {
5479
if (isShutdown.get()) {
5580
return CompletableResultCode.ofFailure();
5681
}
5782

58-
if (wrapperJsonObject) {
59-
return new SpanReusableDataMarshaler(
60-
memoryMode, (marshaler, numItems) -> jsonWriter.write(marshaler))
61-
.export(spans);
62-
} else {
63-
for (ResourceSpansMarshaler resourceSpans : ResourceSpansMarshaler.create(spans)) {
64-
CompletableResultCode resultCode = jsonWriter.write(resourceSpans);
65-
if (!resultCode.isSuccess()) {
66-
// already logged
67-
return resultCode;
68-
}
69-
}
70-
return CompletableResultCode.ofSuccess();
71-
}
83+
return marshaler.apply(spans);
7284
}
7385

7486
@Override

0 commit comments

Comments
 (0)