- 
                Notifications
    
You must be signed in to change notification settings  - Fork 168
 
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.