Skip to content

Commit b1df8b0

Browse files
committed
wip: low allocation marshalers for json exporters.
1 parent 9631f54 commit b1df8b0

File tree

4 files changed

+73
-5
lines changed

4 files changed

+73
-5
lines changed
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,10 @@
11
Comparing source compatibility of opentelemetry-exporter-logging-otlp-1.54.0-SNAPSHOT.jar against opentelemetry-exporter-logging-otlp-1.53.0.jar
2-
No changes.
2+
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingLogRecordExporter (not serializable)
3+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
4+
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.logs.export.LogRecordExporter create(boolean)
5+
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter (not serializable)
6+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
7+
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.metrics.export.MetricExporter create(io.opentelemetry.sdk.metrics.data.AggregationTemporality, boolean)
8+
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingSpanExporter (not serializable)
9+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
10+
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.trace.export.SpanExporter create(boolean)

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/OtlpJsonLoggingLogRecordExporter.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.exporter.logging.otlp.internal.logs.OtlpStdoutLogRecordExporter;
99
import io.opentelemetry.exporter.logging.otlp.internal.logs.OtlpStdoutLogRecordExporterBuilder;
1010
import io.opentelemetry.sdk.common.CompletableResultCode;
11+
import io.opentelemetry.sdk.common.export.MemoryMode;
1112
import io.opentelemetry.sdk.logs.data.LogRecordData;
1213
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
1314
import java.util.Collection;
@@ -33,6 +34,24 @@ public static LogRecordExporter create() {
3334
return new OtlpJsonLoggingLogRecordExporter(delegate);
3435
}
3536

37+
/**
38+
* Returns a new {@link OtlpJsonLoggingLogRecordExporter}.
39+
*
40+
* @param wrapperJsonObject whether to wrap the JSON object in an outer JSON "resourceLogs"
41+
* object. When {@code true}, uses low allocation OTLP marshalers with {@link
42+
* MemoryMode#REUSABLE_DATA}. When {@code false}, uses {@link MemoryMode#IMMUTABLE_DATA}.
43+
*/
44+
public static LogRecordExporter create(boolean wrapperJsonObject) {
45+
MemoryMode memoryMode =
46+
wrapperJsonObject ? MemoryMode.REUSABLE_DATA : MemoryMode.IMMUTABLE_DATA;
47+
OtlpStdoutLogRecordExporter delegate =
48+
new OtlpStdoutLogRecordExporterBuilder(logger)
49+
.setWrapperJsonObject(wrapperJsonObject)
50+
.setMemoryMode(memoryMode)
51+
.build();
52+
return new OtlpJsonLoggingLogRecordExporter(delegate);
53+
}
54+
3655
OtlpJsonLoggingLogRecordExporter(OtlpStdoutLogRecordExporter delegate) {
3756
this.delegate = delegate;
3857
}

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/OtlpJsonLoggingMetricExporter.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.exporter.logging.otlp.internal.metrics.OtlpStdoutMetricExporter;
99
import io.opentelemetry.exporter.logging.otlp.internal.metrics.OtlpStdoutMetricExporterBuilder;
1010
import io.opentelemetry.sdk.common.CompletableResultCode;
11+
import io.opentelemetry.sdk.common.export.MemoryMode;
1112
import io.opentelemetry.sdk.metrics.InstrumentType;
1213
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
1314
import io.opentelemetry.sdk.metrics.data.MetricData;
@@ -46,15 +47,36 @@ public static MetricExporter create(AggregationTemporality aggregationTemporalit
4647
return new OtlpJsonLoggingMetricExporter(delegate, aggregationTemporality);
4748
}
4849

50+
/**
51+
* Returns a new {@link OtlpJsonLoggingMetricExporter} with the given {@code
52+
* aggregationTemporality}.
53+
*
54+
* @param aggregationTemporality the aggregation temporality to use
55+
* @param wrapperJsonObject whether to wrap the JSON object in an outer JSON "resourceMetrics"
56+
* object. When {@code true}, uses low allocation OTLP marshalers with {@link
57+
* MemoryMode#REUSABLE_DATA}. When {@code false}, uses {@link MemoryMode#IMMUTABLE_DATA}.
58+
*/
59+
public static MetricExporter create(
60+
AggregationTemporality aggregationTemporality, boolean wrapperJsonObject) {
61+
MemoryMode memoryMode =
62+
wrapperJsonObject ? MemoryMode.REUSABLE_DATA : MemoryMode.IMMUTABLE_DATA;
63+
OtlpStdoutMetricExporter delegate =
64+
new OtlpStdoutMetricExporterBuilder(logger)
65+
.setWrapperJsonObject(wrapperJsonObject)
66+
.setMemoryMode(memoryMode)
67+
.build();
68+
return new OtlpJsonLoggingMetricExporter(delegate, aggregationTemporality);
69+
}
70+
4971
OtlpJsonLoggingMetricExporter(
5072
OtlpStdoutMetricExporter delegate, AggregationTemporality aggregationTemporality) {
5173
this.delegate = delegate;
5274
this.aggregationTemporality = aggregationTemporality;
5375
}
5476

5577
@Override
56-
public CompletableResultCode export(Collection<MetricData> logs) {
57-
return delegate.export(logs);
78+
public CompletableResultCode export(Collection<MetricData> metrics) {
79+
return delegate.export(metrics);
5880
}
5981

6082
@Override

exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/OtlpJsonLoggingSpanExporter.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.exporter.logging.otlp.internal.traces.OtlpStdoutSpanExporter;
99
import io.opentelemetry.exporter.logging.otlp.internal.traces.OtlpStdoutSpanExporterBuilder;
1010
import io.opentelemetry.sdk.common.CompletableResultCode;
11+
import io.opentelemetry.sdk.common.export.MemoryMode;
1112
import io.opentelemetry.sdk.trace.data.SpanData;
1213
import io.opentelemetry.sdk.trace.export.SpanExporter;
1314
import java.util.Collection;
@@ -31,13 +32,31 @@ public static SpanExporter create() {
3132
return new OtlpJsonLoggingSpanExporter(delegate);
3233
}
3334

35+
/**
36+
* Returns a new {@link OtlpJsonLoggingSpanExporter}.
37+
*
38+
* @param wrapperJsonObject whether to wrap the JSON object in an outer JSON "resourceSpans"
39+
* object. When {@code true}, uses low allocation OTLP marshalers with {@link
40+
* MemoryMode#REUSABLE_DATA}. When {@code false}, uses {@link MemoryMode#IMMUTABLE_DATA}.
41+
*/
42+
public static SpanExporter create(boolean wrapperJsonObject) {
43+
MemoryMode memoryMode =
44+
wrapperJsonObject ? MemoryMode.REUSABLE_DATA : MemoryMode.IMMUTABLE_DATA;
45+
OtlpStdoutSpanExporter delegate =
46+
new OtlpStdoutSpanExporterBuilder(logger)
47+
.setWrapperJsonObject(wrapperJsonObject)
48+
.setMemoryMode(memoryMode)
49+
.build();
50+
return new OtlpJsonLoggingSpanExporter(delegate);
51+
}
52+
3453
OtlpJsonLoggingSpanExporter(OtlpStdoutSpanExporter delegate) {
3554
this.delegate = delegate;
3655
}
3756

3857
@Override
39-
public CompletableResultCode export(Collection<SpanData> logs) {
40-
return delegate.export(logs);
58+
public CompletableResultCode export(Collection<SpanData> spans) {
59+
return delegate.export(spans);
4160
}
4261

4362
@Override

0 commit comments

Comments
 (0)