-
Notifications
You must be signed in to change notification settings - Fork 10k
Description
Description
When using Python RecordWriter to write messages into a .record file, cyber_recorder info reports:
- message_number is correct
- but channel_info shows 0 messages
This behavior is inconsistent with the actual record content and differs from C++ RecordWriter.
Reproduction Code
#!/usr/bin/env python3
from cyber.python.cyber_py3 import cyber
from cyber.python.cyber_py3 import cyber_time
from cyber.python.cyber_py3 import record
from cyber.demo.proto import student_pb2
RECORD_FILE = "/apollo/cyber/demo/data/demo.record"
CHANNEL_NAME = "/apollo/demo"
MESSAGE_TYPE = "cyber.demo.proto.Student"
PROTO_DESC = ""
def main():
cyber.init()
writer = record.RecordWriter()
writer.set_size_fileseg(0)
writer.set_intervaltime_fileseg(0)
writer.open(RECORD_FILE)
msg = student_pb2.Student()
msg.name = "jihy"
msg.age = 28
msg.height = 1.72
msg.books.append("Math")
msg.books.append("English")
writer.write_channel(CHANNEL_NAME, MESSAGE_TYPE, PROTO_DESC)
serialized_msg = msg.SerializeToString()
base_time = cyber_time.Time.now().to_nsec()
for i in range(100):
writer.write_message(CHANNEL_NAME, serialized_msg, base_time + i)
writer.close()
cyber.shutdown()
if name == "main":
main()
Observed Result
record_file: /apollo/cyber/demo/data/demo.record
version: 1.0
duration: 0.000000 Seconds
begin_time: 2026-01-29-09:48:57
end_time: 2026-01-29-09:48:57
size: 10296 Bytes (10.054688 KB)
is_complete: true
message_number: 100
channel_number: 1
channel_info:
/apollo/demo 0 messages: cyber.demo.proto.Student
This does not happen in C++ RecordWriter, indicating a Python-specific implementation issue.