-
Notifications
You must be signed in to change notification settings - Fork 169
Closed
Labels
Description
Component(s)
disk-buffering
What happened?
Description
When using disk-buffering, if you have a span or log record with a string attribute set to an empty string, AttributesMapper.addValue throws UnsupportedOperationException().
Steps to Reproduce
- configure and enable disk buffering
- create a span/logrecord with a string attribute key of "test" with value "" and end/emit it
- wait sufficiently long enough for the workers to write the span/logrecord to disk and read it back
- observe uncaught UnsupportedOperationException
java.lang.UnsupportedOperationException
at io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper.addValue(AttributesMapper.java:88)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.AttributesMapper.protoToAttributes(AttributesMapper.java:35)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.SpanDataMapper.protoToAttributes(SpanDataMapper.java:289)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.SpanDataMapper.addSpanDataExtras(SpanDataMapper.java:104)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.SpanDataMapper.mapToSdk(SpanDataMapper.java:94)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.ProtoSpansDataMapper.protoToSignalItem(ProtoSpansDataMapper.java:43)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.spans.ProtoSpansDataMapper.protoToSignalItem(ProtoSpansDataMapper.java:20)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.mapping.common.BaseProtoSignalsDataMapper.fromProto(BaseProtoSignalsDataMapper.java:59)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.SpanDataDeserializer.deserialize(SpanDataDeserializer.java:28)
at io.opentelemetry.contrib.disk.buffering.internal.exporter.FromDiskExporterImpl.lambda$exportStoredBatch$0$io-opentelemetry-contrib-disk-buffering-internal-exporter-FromDiskExporterImpl(FromDiskExporterImpl.java:70)
at io.opentelemetry.contrib.disk.buffering.internal.exporter.FromDiskExporterImpl$$ExternalSyntheticLambda0.apply(D8$$SyntheticClass:0)
at io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile.readAndProcess(ReadableFile.java:90)
at io.opentelemetry.contrib.disk.buffering.internal.storage.Storage.readAndProcess(Storage.java:120)
at io.opentelemetry.contrib.disk.buffering.internal.storage.Storage.readAndProcess(Storage.java:98)
at io.opentelemetry.contrib.disk.buffering.internal.exporter.FromDiskExporterImpl.exportStoredBatch(FromDiskExporterImpl.java:61)
at io.opentelemetry.contrib.disk.buffering.SpanFromDiskExporter.exportStoredBatch(SpanFromDiskExporter.java:37)
Expected Result
no crash
Actual Result
crash
Everything worked fine in 1.48.0-alpha.
Component version
1.49.0-alpha
Log output
No response
Additional context
No response
Tip
React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.