open-telemetry / open-telemetry/opentelemetry-java
ReadWriteLogRecord default getEventName() always returns null
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 2.5k
- Forks
- 1k
- Avg merge
- 3d 17h
- Merged PRs (30d)
- 58
Description
Describe the bug
ReadWriteLogRecord.getEventName() has a default implementation that always returns null, even when toLogRecordData().getEventName() returns a value. Every other default getter on the interface (getAttributes(), getSeverity(), getObservedTimestampEpochNanos(), ...) delegates to toLogRecordData().
Steps to reproduce
Implement ReadWriteLogRecord with only the two abstract methods (setAttribute() and toLogRecordData()), return a LogRecordData whose getEventName() is "my.event", then call getEventName() on the record.
What did you expect to see?
"my.event", consistent with the Javadoc ("Returns the log record event name, or null if none is set") and with the other default getters on the same interface.
What did you see instead?
null. ReadWriteLogRecord.getEventName() (sdk/logs/src/main/java/io/opentelemetry/sdk/logs/ReadWriteLogRecord.java line 61) returns null unconditionally. The SDK's own SdkReadWriteLogRecord is unaffected because it overrides the method.
Same shape as #8501, where the default getObservedTimestampEpochNanos() returned the wrong field and was fixed in #8504.
What version and what artifacts are you using?
Artifacts: opentelemetry-sdk-logs
Version: main @ 509182e4b (present since 1.50.0, #7277)
How did you reference these artifacts? N/A
Environment
Compiler: Temurin 21
OS: N/A
Additional context
N/A
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with sdk/logs/src/main/java/io/opentelemetry/sdk/logs/ReadWriteLogRecord.java at getEventName() on line 61, and compare it with the other default getters that delegate to toLogRecordData(). Done means an implementation using only the two abstract methods receives the event name returned by its LogRecordData; run the relevant sdk/logs tests and add coverage for that case.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- observability-sre
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 90/100