-
Notifications
You must be signed in to change notification settings - Fork 76
Closed as not planned
Closed as not planned
Copy link
Labels
bugSomething isn't workingSomething isn't workingneeds author feedbackWaiting for additional feedback from the authorWaiting for additional feedback from the authorstale
Description
Description
I encountered a java.lang.IllegalStateException: Unexpected call to beginMessage() exception when OpenTelemetry's disk buffering feature attempted to export stored log batches. The issue appears to occur while deserializing log data, specifically within ByteArrayProtoReader32 and the ProtoAdapter.decode() method.
Stack Trace
Fatal Exception: java.lang.IllegalStateException: Unexpected call to beginMessage()
at com.squareup.wire.ByteArrayProtoReader32.beginMessage(ByteArrayProtoReader32.kt:57)
at com.squareup.wire.ProtoReader32AsProtoReader.beginMessage(ProtoReader32AsProtoReader.kt:1)
at io.opentelemetry.diskbuffering.proto.common.v1.AnyValue$ProtoAdapter_AnyValue.decode(AnyValue.java:1)
at io.opentelemetry.diskbuffering.proto.common.v1.AnyValue$ProtoAdapter_AnyValue.decode(AnyValue.java:2)
at io.opentelemetry.diskbuffering.proto.common.v1.KeyValue$ProtoAdapter_KeyValue.decode(KeyValue.java:1)
at io.opentelemetry.diskbuffering.proto.common.v1.KeyValue$ProtoAdapter_KeyValue.decode(KeyValue.java:2)
at io.opentelemetry.diskbuffering.proto.logs.v1.LogRecord$ProtoAdapter_LogRecord.decode(LogRecord.java:1)
at io.opentelemetry.diskbuffering.proto.logs.v1.LogRecord$ProtoAdapter_LogRecord.decode(LogRecord.java:2)
at io.opentelemetry.diskbuffering.proto.logs.v1.ScopeLogs$ProtoAdapter_ScopeLogs.decode(ScopeLogs.java:1)
at io.opentelemetry.diskbuffering.proto.logs.v1.ScopeLogs$ProtoAdapter_ScopeLogs.decode(ScopeLogs.java:2)
at io.opentelemetry.diskbuffering.proto.logs.v1.ResourceLogs$ProtoAdapter_ResourceLogs.decode(ResourceLogs.java:1)
at io.opentelemetry.diskbuffering.proto.logs.v1.ResourceLogs$ProtoAdapter_ResourceLogs.decode(ResourceLogs.java:2)
at io.opentelemetry.diskbuffering.proto.logs.v1.LogsData$ProtoAdapter_LogsData.decode(LogsData.java:1)
at io.opentelemetry.diskbuffering.proto.logs.v1.LogsData$ProtoAdapter_LogsData.decode(LogsData.java:2)
at com.squareup.wire.ProtoAdapter.decode(ProtoAdapter.kt:2)
at com.squareup.wire.ProtoAdapter.decode(ProtoAdapter.kt:16)
at io.opentelemetry.contrib.disk.buffering.internal.serialization.deserializers.LogRecordDataDeserializer.deserialize(LogRecordDataDeserializer.java:6)
at io.opentelemetry.contrib.disk.buffering.internal.exporter.FromDiskExporterImpl.lambda$exportStoredBatch$0(FromDiskExporterImpl.java:43)
at io.opentelemetry.contrib.disk.buffering.internal.storage.files.ReadableFile.readAndProcess(ReadableFile.java:45)
at io.opentelemetry.contrib.disk.buffering.internal.storage.Storage.readAndProcess(Storage.java:2)
at io.opentelemetry.contrib.disk.buffering.internal.storage.Storage.readAndProcess(Storage.java:1)
at io.opentelemetry.contrib.disk.buffering.internal.exporter.FromDiskExporterImpl.exportStoredBatch(FromDiskExporterImpl.java:37)
at io.opentelemetry.contrib.disk.buffering.LogRecordFromDiskExporter.exportStoredBatch(LogRecordFromDiskExporter.java:2)
at io.opentelemetry.android.features.diskbuffering.SignalFromDiskExporter.exportBatchOfLogs(SignalFromDiskExporter.kt:8)
at io.opentelemetry.android.features.diskbuffering.SignalFromDiskExporter.exportBatchOfEach(SignalFromDiskExporter.kt:12)
at io.opentelemetry.android.features.diskbuffering.scheduler.DefaultExportScheduler.onRun(DefaultExportScheduler.kt:9)
at io.opentelemetry.android.internal.services.periodicwork.PeriodicRunnable.run(PeriodicRunnable.kt:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Steps to Reproduce:
- Enable disk buffering in OpenTelemetry Android SDK.
val diskBufferingConfig = DiskBufferingConfiguration.builder()
.setEnabled(true)
.build()
- Generate log events and store them on disk.
- Wait for the log export process to trigger.
- Observe the crash when logs are being read and deserialized.
Versions:
opentelemetry-android:0.8.0-alpha- Android OS: 10
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingneeds author feedbackWaiting for additional feedback from the authorWaiting for additional feedback from the authorstale