Skip to content

Add OTLP logs support - #439

Merged
tigrannajaryan merged 1 commit into
mainfrom
tigran/logs
Oct 9, 2026
Merged

tigrannajaryan merged 1 commit into
mainfrom
tigran/logs

Conversation

@tigrannajaryan

Copy link
Copy Markdown
Collaborator

Extend the OpenTelemetry STEF schema with a Logs root, LogRecord fields, and the complete OTLP severity number enum. Regenerate the Go and Java record, encoder, decoder, reader, writer, dictionary, and state implementations for the new signal.

Add a pdata OTLP-to-STEF logs converter with unsorted and sorted modes. Preserve resource, scope, body, attributes, timestamps, severity, trace context, flags, and event names; group equivalent resources and scopes in sorted mode and order records deterministically.

Make shared attribute comparison stable across map iteration and support double, byte, map, and nested values. Expose AnyValue conversion for log bodies and fix nested map indexing so all entries are retained.

Cover full log-record conversion and sorted grouping, and add the astronomy multipart log fixture plus a size benchmark comparing OTLP with sorted and unsorted STEF under uncompressed and Zstd modes.

Tests: CGO_ENABLED=0 go test ./... (go/pdata)

Tests: CGO_ENABLED=0 go test -run '^TestLogsMultipart$' -count=1 (benchmarks)

Tests: CGO_ENABLED=0 ./gradlew clean test --tests com.example.otelstef.LogsWriterTest (java)

@github-actions

github-actions Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Benchmark Result

Benchmark diff with base branch
goos: linux
goarch: amd64
pkg: github.com/splunk/stef/benchmarks
cpu: AMD EPYC 9V74 80-Core Processor                
                                                        │ bench-main.txt │    bench-new.txt    │
                                                        │     sec/op     │    sec/op     vs base   │
SerializeNative/STEF/serialize-4                            4.712m ±  2%
SerializeNative/STEFU/serialize-4                           26.48m ±  2%
DeserializeNative/STEF/deser-4                              1.883m ±  7%
DeserializeNative/STEFU/deser-4                             5.538m ±  1%
SerializeFromPdata/STEF/serialize-4                         89.65m ±  3%
SerializeFromPdata/STEFU/serialize-4                        26.95m ±  2%
DeserializeToPdata/STEF/deserialize-4                       34.64m ±  2%
DeserializeToPdata/STEFU/deserialize-4                      48.49m ± 10%
STEFReaderRead-4                                            1.894m ±  1%
STEFSerializeMultipart/astronomy-otelmetrics-4               2.360 ±  3%
STEFDeserializeMultipart/astronomy-otelmetrics-4            57.72m ±  2%
ReadSTEF-4                                                  1.930m ±  1%
ReadSTEFZ-4                                                 2.378m ±  1%
ReadSTEFZWriteSTEF-4                                        5.442m ±  0%
MetricsSerializeNative/STEF/serialize-4                                    4.949m ±  6%
MetricsSerializeNative/STEFU/serialize-4                                   26.87m ± 12%
LogsSerializeNative/STEF/serialize-4                                       5.382m ±  1%
MetricsDeserializeNative/STEF/deser-4                                      1.898m ±  1%
MetricsDeserializeNative/STEFU/deser-4                                     5.589m ±  2%
MetricsSerializeFromPdata/STEF/serialize-4                                 89.53m ±  3%
MetricsSerializeFromPdata/STEFU/serialize-4                                27.23m ±  2%
LogsSerializeFromPdata/STEF/serialize-4                                    32.03m ±  1%
MetricsDeserializeToPdata/STEF/deserialize-4                               34.39m ±  1%
MetricsDeserializeToPdata/STEFU/deserialize-4                              47.80m ±  1%
LogsDeserializeToPdata/STEF/deserialize-4                                  4.936m ±  2%
MetricsSTEFReaderRead-4                                                    1.949m ±  1%
MetricsSTEFSerializeMultipart/astronomy-otelmetrics-4                       2.367 ±  5%
MetricsSTEFDeserializeMultipart/astronomy-otelmetrics-4                    58.22m ±  2%
MetricsReadSTEF-4                                                          1.954m ±  1%
MetricsReadSTEFZ-4                                                         2.461m ±  1%
MetricsReadSTEFZWriteSTEF-4                                                6.242m ±  2%
geomean                                                     15.17m         14.20m        ? ¹ ²
¹ benchmark set differs from baseline; geomeans may not be comparable
² ratios must be >0 to compute geomean

                                                        │ bench-main.txt │    bench-new.txt    │
                                                        │   sec/point    │  sec/point    vs base   │
SerializeNative/STEF/serialize-4                            70.48n ±  2%
SerializeNative/STEFU/serialize-4                           396.2n ±  2%
DeserializeNative/STEF/deser-4                              28.16n ±  7%
DeserializeNative/STEFU/deser-4                             82.84n ±  1%
SerializeFromPdata/STEF/serialize-4                         1.342µ ±  3%
SerializeFromPdata/STEFU/serialize-4                        403.5n ±  2%
DeserializeToPdata/STEF/deserialize-4                       518.0n ±  2%
DeserializeToPdata/STEFU/deserialize-4                      726.0n ± 10%
STEFReaderRead-4                                            28.33n ±  1%
STEFSerializeMultipart/astronomy-otelmetrics-4              2.999µ ±  3%
STEFDeserializeMultipart/astronomy-otelmetrics-4            73.36n ±  2%
ReadSTEF-4                                                  28.89n ±  1%
ReadSTEFZ-4                                                 35.59n ±  1%
ReadSTEFZWriteSTEF-4                                        81.45n ±  0%
MetricsSerializeNative/STEF/serialize-4                                    74.03n ±  6%
MetricsSerializeNative/STEFU/serialize-4                                   401.9n ± 11%
MetricsDeserializeNative/STEF/deser-4                                      28.39n ±  1%
MetricsDeserializeNative/STEFU/deser-4                                     83.60n ±  2%
MetricsSerializeFromPdata/STEF/serialize-4                                 1.340µ ±  3%
MetricsSerializeFromPdata/STEFU/serialize-4                                407.5n ±  2%
MetricsDeserializeToPdata/STEF/deserialize-4                               515.0n ±  1%
MetricsDeserializeToPdata/STEFU/deserialize-4                              715.5n ±  1%
MetricsSTEFReaderRead-4                                                    29.16n ±  1%
MetricsSTEFSerializeMultipart/astronomy-otelmetrics-4                      3.009µ ±  5%
MetricsSTEFDeserializeMultipart/astronomy-otelmetrics-4                    74.00n ±  2%
MetricsReadSTEF-4                                                          29.25n ±  1%
MetricsReadSTEFZ-4                                                         36.83n ±  1%
MetricsReadSTEFZWriteSTEF-4                                                93.42n ±  2%
geomean                                                     159.5n         162.9n        ? ¹ ²
¹ benchmark set differs from baseline; geomeans may not be comparable
² ratios must be >0 to compute geomean

                                                        │ bench-main.txt │    bench-new.txt    │
                                                        │      B/op      │     B/op      vs base   │
SerializeNative/STEF/serialize-4                            3.338Mi ± 0%
SerializeNative/STEFU/serialize-4                           7.327Mi ± 0%
DeserializeNative/STEF/deser-4                              725.8Ki ± 0%
DeserializeNative/STEFU/deser-4                             1.303Mi ± 0%
SerializeFromPdata/STEF/serialize-4                         33.25Mi ± 0%
SerializeFromPdata/STEFU/serialize-4                        7.327Mi ± 0%
DeserializeToPdata/STEF/deserialize-4                       34.61Mi ± 0%
DeserializeToPdata/STEFU/deserialize-4                      41.48Mi ± 0%
STEFReaderRead-4                                            727.5Ki ± 0%
STEFSerializeMultipart/astronomy-otelmetrics-4              2.684Gi ± 0%
STEFDeserializeMultipart/astronomy-otelmetrics-4            20.19Mi ± 0%
ReadSTEF-4                                                  727.5Ki ± 0%
ReadSTEFZ-4                                                 10.07Mi ± 0%
ReadSTEFZWriteSTEF-4                                        13.21Mi ± 0%
MetricsSerializeNative/STEF/serialize-4                                    3.338Mi ± 0%
MetricsSerializeNative/STEFU/serialize-4                                   7.327Mi ± 0%
LogsSerializeNative/STEF/serialize-4                                       10.30Mi ± 0%
MetricsDeserializeNative/STEF/deser-4                                      725.8Ki ± 0%
MetricsDeserializeNative/STEFU/deser-4                                     1.303Mi ± 0%
MetricsSerializeFromPdata/STEF/serialize-4                                 33.25Mi ± 0%
MetricsSerializeFromPdata/STEFU/serialize-4                                7.327Mi ± 0%
LogsSerializeFromPdata/STEF/serialize-4                                    26.23Mi ± 0%
MetricsDeserializeToPdata/STEF/deserialize-4                               34.61Mi ± 0%
MetricsDeserializeToPdata/STEFU/deserialize-4                              41.48Mi ± 0%
LogsDeserializeToPdata/STEF/deserialize-4                                  5.819Mi ± 0%
MetricsSTEFReaderRead-4                                                    727.5Ki ± 0%
MetricsSTEFSerializeMultipart/astronomy-otelmetrics-4                      2.683Gi ± 0%
MetricsSTEFDeserializeMultipart/astronomy-otelmetrics-4                    20.19Mi ± 0%
MetricsReadSTEF-4                                                          725.8Ki ± 0%
MetricsReadSTEFZ-4                                                         10.07Mi ± 0%
MetricsReadSTEFZWriteSTEF-4                                                13.21Mi ± 0%
geomean                                                     9.164Mi        9.555Mi       ? ¹ ²
¹ benchmark set differs from baseline; geomeans may not be comparable
² ratios must be >0 to compute geomean

                                                        │ bench-main.txt │   bench-new.txt    │
                                                        │   allocs/op    │  allocs/op   vs base   │
SerializeNative/STEF/serialize-4                             2.661k ± 0%
SerializeNative/STEFU/serialize-4                             883.0 ± 0%
DeserializeNative/STEF/deser-4                                464.0 ± 0%
DeserializeNative/STEFU/deser-4                               496.0 ± 0%
SerializeFromPdata/STEF/serialize-4                          134.7k ± 0%
SerializeFromPdata/STEFU/serialize-4                          884.0 ± 0%
DeserializeToPdata/STEF/deserialize-4                        756.2k ± 0%
DeserializeToPdata/STEFU/deserialize-4                       944.9k ± 0%
STEFReaderRead-4                                              464.0 ± 0%
STEFSerializeMultipart/astronomy-otelmetrics-4               13.22M ± 0%
STEFDeserializeMultipart/astronomy-otelmetrics-4             7.922k ± 0%
ReadSTEF-4                                                    464.0 ± 0%
ReadSTEFZ-4                                                   501.0 ± 0%
ReadSTEFZWriteSTEF-4                                         1.230k ± 0%
MetricsSerializeNative/STEF/serialize-4                                    2.663k ± 0%
MetricsSerializeNative/STEFU/serialize-4                                    885.0 ± 0%
LogsSerializeNative/STEF/serialize-4                                        974.0 ± 0%
MetricsDeserializeNative/STEF/deser-4                                       464.0 ± 0%
MetricsDeserializeNative/STEFU/deser-4                                      496.0 ± 0%
MetricsSerializeFromPdata/STEF/serialize-4                                 134.7k ± 0%
MetricsSerializeFromPdata/STEFU/serialize-4                                 886.0 ± 0%
LogsSerializeFromPdata/STEF/serialize-4                                    96.44k ± 0%
MetricsDeserializeToPdata/STEF/deserialize-4                               756.2k ± 0%
MetricsDeserializeToPdata/STEFU/deserialize-4                              944.9k ± 0%
LogsDeserializeToPdata/STEF/deserialize-4                                  79.81k ± 0%
MetricsSTEFReaderRead-4                                                     464.0 ± 0%
MetricsSTEFSerializeMultipart/astronomy-otelmetrics-4                      13.22M ± 0%
MetricsSTEFDeserializeMultipart/astronomy-otelmetrics-4                    7.922k ± 0%
MetricsReadSTEF-4                                                           464.0 ± 0%
MetricsReadSTEFZ-4                                                          501.0 ± 0%
MetricsReadSTEFZWriteSTEF-4                                                1.229k ± 0%
geomean                                                      6.970k        8.366k       ? ¹ ²
¹ benchmark set differs from baseline; geomeans may not be comparable
² ratios must be >0 to compute geomean

                                          │ bench-new.txt │
                                          │    sec/log    │
LogsSerializeNative/STEF/serialize-4          411.5n ± 1%
LogsSerializeFromPdata/STEF/serialize-4       2.449µ ± 1%
LogsDeserializeToPdata/STEF/deserialize-4     377.5n ± 2%
geomean                                       724.5n
Benchmark result
benchstat bench-new.txt
goos: linux
goarch: amd64
pkg: github.com/splunk/stef/benchmarks
cpu: AMD EPYC 9V74 80-Core Processor                
                                                        │ bench-new.txt │
                                                        │    sec/op     │
MetricsSerializeNative/STEF/serialize-4                    4.949m ±  6%
MetricsSerializeNative/STEFU/serialize-4                   26.87m ± 12%
LogsSerializeNative/STEF/serialize-4                       5.382m ±  1%
MetricsDeserializeNative/STEF/deser-4                      1.898m ±  1%
MetricsDeserializeNative/STEFU/deser-4                     5.589m ±  2%
MetricsSerializeFromPdata/STEF/serialize-4                 89.53m ±  3%
MetricsSerializeFromPdata/STEFU/serialize-4                27.23m ±  2%
LogsSerializeFromPdata/STEF/serialize-4                    32.03m ±  1%
MetricsDeserializeToPdata/STEF/deserialize-4               34.39m ±  1%
MetricsDeserializeToPdata/STEFU/deserialize-4              47.80m ±  1%
LogsDeserializeToPdata/STEF/deserialize-4                  4.936m ±  2%
MetricsSTEFReaderRead-4                                    1.949m ±  1%
MetricsSTEFSerializeMultipart/astronomy-otelmetrics-4       2.367 ±  5%
MetricsSTEFDeserializeMultipart/astronomy-otelmetrics-4    58.22m ±  2%
MetricsReadSTEF-4                                          1.954m ±  1%
MetricsReadSTEFZ-4                                         2.461m ±  1%
MetricsReadSTEFZWriteSTEF-4                                6.242m ±  2%
geomean                                                    14.20m

                                                        │ bench-new.txt │
                                                        │   sec/point   │
MetricsSerializeNative/STEF/serialize-4                    74.03n ±  6%
MetricsSerializeNative/STEFU/serialize-4                   401.9n ± 11%
MetricsDeserializeNative/STEF/deser-4                      28.39n ±  1%
MetricsDeserializeNative/STEFU/deser-4                     83.60n ±  2%
MetricsSerializeFromPdata/STEF/serialize-4                 1.340µ ±  3%
MetricsSerializeFromPdata/STEFU/serialize-4                407.5n ±  2%
MetricsDeserializeToPdata/STEF/deserialize-4               515.0n ±  1%
MetricsDeserializeToPdata/STEFU/deserialize-4              715.5n ±  1%
MetricsSTEFReaderRead-4                                    29.16n ±  1%
MetricsSTEFSerializeMultipart/astronomy-otelmetrics-4      3.009µ ±  5%
MetricsSTEFDeserializeMultipart/astronomy-otelmetrics-4    74.00n ±  2%
MetricsReadSTEF-4                                          29.25n ±  1%
MetricsReadSTEFZ-4                                         36.83n ±  1%
MetricsReadSTEFZWriteSTEF-4                                93.42n ±  2%
geomean                                                    162.9n

                                                        │ bench-new.txt │
                                                        │     B/op      │
MetricsSerializeNative/STEF/serialize-4                    3.338Mi ± 0%
MetricsSerializeNative/STEFU/serialize-4                   7.327Mi ± 0%
LogsSerializeNative/STEF/serialize-4                       10.30Mi ± 0%
MetricsDeserializeNative/STEF/deser-4                      725.8Ki ± 0%
MetricsDeserializeNative/STEFU/deser-4                     1.303Mi ± 0%
MetricsSerializeFromPdata/STEF/serialize-4                 33.25Mi ± 0%
MetricsSerializeFromPdata/STEFU/serialize-4                7.327Mi ± 0%
LogsSerializeFromPdata/STEF/serialize-4                    26.23Mi ± 0%
MetricsDeserializeToPdata/STEF/deserialize-4               34.61Mi ± 0%
MetricsDeserializeToPdata/STEFU/deserialize-4              41.48Mi ± 0%
LogsDeserializeToPdata/STEF/deserialize-4                  5.819Mi ± 0%
MetricsSTEFReaderRead-4                                    727.5Ki ± 0%
MetricsSTEFSerializeMultipart/astronomy-otelmetrics-4      2.683Gi ± 0%
MetricsSTEFDeserializeMultipart/astronomy-otelmetrics-4    20.19Mi ± 0%
MetricsReadSTEF-4                                          725.8Ki ± 0%
MetricsReadSTEFZ-4                                         10.07Mi ± 0%
MetricsReadSTEFZWriteSTEF-4                                13.21Mi ± 0%
geomean                                                    9.555Mi

                                                        │ bench-new.txt │
                                                        │   allocs/op   │
MetricsSerializeNative/STEF/serialize-4                     2.663k ± 0%
MetricsSerializeNative/STEFU/serialize-4                     885.0 ± 0%
LogsSerializeNative/STEF/serialize-4                         974.0 ± 0%
MetricsDeserializeNative/STEF/deser-4                        464.0 ± 0%
MetricsDeserializeNative/STEFU/deser-4                       496.0 ± 0%
MetricsSerializeFromPdata/STEF/serialize-4                  134.7k ± 0%
MetricsSerializeFromPdata/STEFU/serialize-4                  886.0 ± 0%
LogsSerializeFromPdata/STEF/serialize-4                     96.44k ± 0%
MetricsDeserializeToPdata/STEF/deserialize-4                756.2k ± 0%
MetricsDeserializeToPdata/STEFU/deserialize-4               944.9k ± 0%
LogsDeserializeToPdata/STEF/deserialize-4                   79.81k ± 0%
MetricsSTEFReaderRead-4                                      464.0 ± 0%
MetricsSTEFSerializeMultipart/astronomy-otelmetrics-4       13.22M ± 0%
MetricsSTEFDeserializeMultipart/astronomy-otelmetrics-4     7.922k ± 0%
MetricsReadSTEF-4                                            464.0 ± 0%
MetricsReadSTEFZ-4                                           501.0 ± 0%
MetricsReadSTEFZWriteSTEF-4                                 1.229k ± 0%
geomean                                                     8.366k

                                          │ bench-new.txt │
                                          │    sec/log    │
LogsSerializeNative/STEF/serialize-4          411.5n ± 1%
LogsSerializeFromPdata/STEF/serialize-4       2.449µ ± 1%
LogsDeserializeToPdata/STEF/deserialize-4     377.5n ± 2%
geomean                                       724.5n

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Metadata preservation, Java cloning and restart behavior, and benchmark input isolation need correction.

5 open findings
What changed in this PR

Adds OTLP logs to STEF alongside metrics and traces, with Go conversion and generated Go/Java serialization support.

Changes:

  • Adds the logs schema, record fields, and severity enum.
  • Implements sorted and unsorted conversion and improves nested attribute handling.
  • Adds conversion tests, serialization tests, and multipart size comparisons.
File Description
java/​src/​main/​java/​com/​example/​otelstef/​WriterState.java Registers log encoders and dictionaries.
java/​src/​main/​java/​com/​example/​otelstef/​SeverityNumber.java Defines OTLP severity constants.
java/​src/​main/​java/​com/​example/​otelstef/​ReaderState.java Registers log decoders and dictionaries.
java/​src/​main/​java/​com/​example/​otelstef/​LogsWriter.java Writes log streams.
java/​src/​main/​java/​com/​example/​otelstef/​LogsReader.java Reads log streams.
java/​src/​main/​java/​com/​example/​otelstef/​LogsEncoder.java Encodes the logs root.
java/​src/​main/​java/​com/​example/​otelstef/​LogsDecoder.java Decodes the logs root.
java/​src/​main/​java/​com/​example/​otelstef/​Logs.java Defines the Java logs root.
java/​src/​main/​java/​com/​example/​otelstef/​LogRecordEncoder.java Encodes log-record fields.
java/​src/​main/​java/​com/​example/​otelstef/​LogRecordDecoder.java Decodes log-record fields.
java/​src/​main/​java/​com/​example/​otelstef/​LogRecord.java Defines Java log records.
java/​src/​main/​java/​com/​example/​otelstef/​CommonFieldCounts.java Tracks log schema field counts.
go/​pdata/​logs/​otlp2stef.go Exposes the conversion interface.
go/​pdata/​logs/​otlp2stef_unsorted.go Implements conversion and sorted grouping.
go/​pdata/​logs/​otlp2stef_unsorted_test.go Tests conversion and ordering.
go/​pdata/​internal/​otlptools/​otlpval2tef.go Exposes value conversion and fixes map indexing.
go/​pdata/​internal/​otlptools/​compare.go Extends stable attribute and group comparison.
go/​otel/​otelstef/​writerstate.go Registers log encoding state.
go/​otel/​otelstef/​severitynumber.go Defines Go severity constants.
go/​otel/​otelstef/​readerstate.go Registers log decoding state.
go/​otel/​otelstef/​logswriter.go Writes Go log streams.
go/​otel/​otelstef/​logswriter_test.go Adds round-trip and fuzz tests.
go/​otel/​otelstef/​logsreader.go Reads Go log streams.
go/​otel/​otelstef/​logs.go Defines the Go logs root and codecs.
go/​otel/​otelstef/​logrecord.go Defines Go log records and codecs.
go/​otel/​otelstef/​common.go Updates embedded schema and allocation support.
go/​otel/​otel.stef Adds logs schema and severity enum.
docs/​benchmarks.html Publishes logs comparisons and refreshed results.
benchmarks/​size_test.go Adds multipart logs size measurements.
Files not reviewed (9)
  • go/otel/otelstef/common.go: Generated file
  • go/otel/otelstef/logrecord.go: Generated file
  • go/otel/otelstef/logs.go: Generated file
  • go/otel/otelstef/logsreader.go: Generated file
  • go/otel/otelstef/logswriter.go: Generated file
  • go/otel/otelstef/logswriter_test.go: Generated file
  • go/otel/otelstef/readerstate.go: Generated file
  • go/otel/otelstef/severitynumber.go: Generated file
  • go/otel/otelstef/writerstate.go: Generated file

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread benchmarks/size_test.go Outdated
Comment thread go/pdata/internal/otlptools/compare.go
Comment thread go/pdata/internal/otlptools/compare.go
Comment thread java/src/main/java/com/example/otelstef/LogRecord.java Outdated
Comment thread java/src/main/java/com/example/otelstef/LogsEncoder.java

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved cloning, hashing, and grouping errors affect modification tracking and preservation of log metadata.

5 open findings
5 resolved since last review
Files not reviewed (9)
  • go/otel/otelstef/common.go: Generated file
  • go/otel/otelstef/logrecord.go: Generated file
  • go/otel/otelstef/logs.go: Generated file
  • go/otel/otelstef/logsreader.go: Generated file
  • go/otel/otelstef/logswriter.go: Generated file
  • go/otel/otelstef/logswriter_test.go: Generated file
  • go/otel/otelstef/readerstate.go: Generated file
  • go/otel/otelstef/severitynumber.go: Generated file
  • go/otel/otelstef/writerstate.go: Generated file

🧠 Review effort: Balanced

Comment thread go/pdata/logs/sortedbyresource/sortedlogs.go
Comment thread java/src/main/java/com/example/otelstef/Logs.java Outdated
Comment thread stefc/templates/java/oneof.java.tmpl
Comment thread go/pdata/logs/sortedbyresource/converter.go
Comment thread go/pdata/logs/testtools/normalize.go Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved restart encoding, clone tracking, hashing, and log ordering defects affect correctness.

4 open findings
5 resolved since last review
Files not reviewed (9)
  • go/otel/otelstef/common.go: Generated file
  • go/otel/otelstef/logrecord.go: Generated file
  • go/otel/otelstef/logs.go: Generated file
  • go/otel/otelstef/logsreader.go: Generated file
  • go/otel/otelstef/logswriter.go: Generated file
  • go/otel/otelstef/logswriter_test.go: Generated file
  • go/otel/otelstef/readerstate.go: Generated file
  • go/otel/otelstef/severitynumber.go: Generated file
  • go/otel/otelstef/writerstate.go: Generated file

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

Comment thread stefc/templates/java/struct.java.tmpl
Comment thread stefc/templates/java/structEncoder.java.tmpl
Comment thread go/pdata/logs/otlp2stef_unsorted.go Outdated
Comment thread java/src/main/java/com/example/otelstef/HistogramValue.java
Extend the OpenTelemetry STEF schema with a Logs root, LogRecord fields, and the complete OTLP severity number enum. Regenerate the Go and Java record, encoder, decoder, reader, writer, dictionary, and state implementations for the new signal.

Add a pdata OTLP-to-STEF logs converter with unsorted and sorted modes. Preserve resource, scope, body, attributes, timestamps, severity, trace context, flags, and event names; group equivalent resources and scopes in sorted mode and order records deterministically.

Make shared attribute comparison stable across map iteration and support double, byte, map, and nested values. Expose AnyValue conversion for log bodies and fix nested map indexing so all entries are retained.

Cover full log-record conversion and sorted grouping, and add the astronomy multipart log fixture plus a size benchmark comparing OTLP with sorted and unsorted STEF under uncompressed and Zstd modes.

Tests: CGO_ENABLED=0 go test ./... (go/pdata)

Tests: CGO_ENABLED=0 go test -run '^TestLogsMultipart$' -count=1 (benchmarks)

Tests: CGO_ENABLED=0 ./gradlew clean test --tests com.example.otelstef.LogsWriterTest (java)
@tigrannajaryan
tigrannajaryan merged commit f752a73 into main Oct 9, 2026
10 checks passed
@tigrannajaryan
tigrannajaryan deleted the tigran/logs branch October 9, 2026 00:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants