Skip to content

Commit c77ecd0

Browse files
committed
fix(logs): optimize LogRecord memory by removing redundant context
Removed direct storage of the Context object in LogRecord to prevent memory inflation when logs are buffered. Correlation IDs (TraceId, SpanId, TraceFlags) are still preserved. Resolves #4957
1 parent 9d90db4 commit c77ecd0

File tree

5 files changed

+2
-5
lines changed

5 files changed

+2
-5
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1212

1313
## Unreleased
1414

15+
- `opentelemetry-api`: Optimize `LogRecord` memory by removing direct storage of the `Context` object.
16+
([#4957](https://github.com/open-telemetry/opentelemetry-python/issues/4957))
1517
- `opentelemetry-sdk`: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema
1618
([#4898](https://github.com/open-telemetry/opentelemetry-python/pull/4898))
1719
- Fix intermittent CI failures in `getting-started` and `tracecontext` jobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone

opentelemetry-api/src/opentelemetry/_logs/_internal/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ def __init__(
118118
if observed_timestamp is None:
119119
observed_timestamp = time_ns()
120120
self.observed_timestamp = observed_timestamp
121-
self.context = context
122121
self.trace_id = trace_id or span_context.trace_id
123122
self.span_id = span_id or span_context.span_id
124123
self.trace_flags = trace_flags or span_context.trace_flags

opentelemetry-sdk/tests/logs/test_handler.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,6 @@ def test_log_record_trace_correlation(self):
346346
record.log_record.severity_number,
347347
SeverityNumber.FATAL,
348348
)
349-
self.assertEqual(record.log_record.context, mock_context)
350349
span_context = span.get_span_context()
351350
self.assertEqual(
352351
record.log_record.trace_id, span_context.trace_id

opentelemetry-sdk/tests/logs/test_log_record.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,6 @@ def test_log_record_from_api_log_record(self):
221221

222222
self.assertEqual(record.log_record.timestamp, 1)
223223
self.assertEqual(record.log_record.observed_timestamp, 2)
224-
self.assertEqual(record.log_record.context, get_current())
225224
# trace_id, span_id, and trace_flags come from the context's span
226225
self.assertEqual(record.log_record.trace_id, 0)
227226
self.assertEqual(record.log_record.span_id, 0)

opentelemetry-sdk/tests/logs/test_logs.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,6 @@ def test_can_emit_api_logrecord(self):
180180
self.assertTrue(isinstance(log_record, LogRecord))
181181
self.assertEqual(log_record.timestamp, None)
182182
self.assertEqual(log_record.observed_timestamp, 0)
183-
self.assertIsNotNone(log_record.context)
184183
self.assertEqual(log_record.severity_number, None)
185184
self.assertEqual(log_record.severity_text, None)
186185
self.assertEqual(log_record.body, "a log line")
@@ -208,7 +207,6 @@ def test_can_emit_with_keywords_arguments(self):
208207
self.assertTrue(isinstance(result_log_record, LogRecord))
209208
self.assertEqual(result_log_record.timestamp, 100)
210209
self.assertEqual(result_log_record.observed_timestamp, 101)
211-
self.assertIsNotNone(result_log_record.context)
212210
self.assertEqual(
213211
result_log_record.severity_number, SeverityNumber.WARN
214212
)

0 commit comments

Comments
 (0)