File tree Expand file tree Collapse file tree 3 files changed +19
-1
lines changed
exporter/opentelemetry-exporter-otlp-proto-common
src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder Expand file tree Collapse file tree 3 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
55The format is based on [ Keep a Changelog] ( https://keepachangelog.com/en/1.0.0/ ) ,
66and this project adheres to [ Semantic Versioning] ( https://semver.org/spec/v2.0.0.html ) .
77
8+ ## Unreleased
9+
10+ - Fix crash exporting a log record with None body
11+ ([ #4276 ] ( https://github.com/open-telemetry/opentelemetry-python/pull/4276 ) )
12+
813## Version 1.28.1/0.49b1 (2024-11-08)
914
1015- Fix metrics export with exemplar and no context and filtering observable instruments
Original file line number Diff line number Diff line change @@ -48,13 +48,14 @@ def _encode_log(log_data: LogData) -> PB2LogRecord:
4848 if log_data .log_record .trace_id == 0
4949 else _encode_trace_id (log_data .log_record .trace_id )
5050 )
51+ body = log_data .log_record .body
5152 return PB2LogRecord (
5253 time_unix_nano = log_data .log_record .timestamp ,
5354 observed_time_unix_nano = log_data .log_record .observed_timestamp ,
5455 span_id = span_id ,
5556 trace_id = trace_id ,
5657 flags = int (log_data .log_record .trace_flags ),
57- body = _encode_value (log_data . log_record . body ),
58+ body = _encode_value (body ) if body is not None else None ,
5859 severity_text = log_data .log_record .severity_text ,
5960 attributes = _encode_attributes (log_data .log_record .attributes ),
6061 dropped_attributes_count = log_data .log_record .dropped_attributes ,
Original file line number Diff line number Diff line change @@ -51,6 +51,18 @@ def test_encode(self):
5151 sdk_logs , expected_encoding = self .get_test_logs ()
5252 self .assertEqual (encode_logs (sdk_logs ), expected_encoding )
5353
54+ def test_encode_no_body (self ):
55+ sdk_logs , expected_encoding = self .get_test_logs ()
56+ for log in sdk_logs :
57+ log .log_record .body = None
58+
59+ for resource_log in expected_encoding .resource_logs :
60+ for scope_log in resource_log .scope_logs :
61+ for log_record in scope_log .log_records :
62+ log_record .ClearField ("body" )
63+
64+ self .assertEqual (encode_logs (sdk_logs ), expected_encoding )
65+
5466 def test_dropped_attributes_count (self ):
5567 sdk_logs = self ._get_test_logs_dropped_attributes ()
5668 encoded_logs = encode_logs (sdk_logs )
You can’t perform that action at this time.
0 commit comments