process_replay: ignore unknown members in the migration code (#34382)

* Fix the migration for the events

* clean up

clean up

clean up

* no continue

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
This commit is contained in:
Kacper Rączy
2025-01-15 00:12:48 +00:00
committed by GitHub
parent 8eebce75ac
commit ea4a127ab8
+22 -9
View File
@@ -1,7 +1,8 @@
from collections import defaultdict
from collections.abc import Callable
import functools
import capnp
import functools
import traceback
from cereal import messaging, car, log
from opendbc.car.fingerprints import MIGRATION
@@ -424,13 +425,19 @@ def migrate_sensorEvents(msgs):
def migrate_onroadEvents(msgs):
ops = []
for index, msg in msgs:
onroadEvents = []
for event in msg.onroadEventsDEPRECATED:
try:
if not str(event.name).endswith('DEPRECATED'):
# dict converts name enum into string representation
onroadEvents.append(log.OnroadEvent(**event.to_dict()))
except RuntimeError: # Member was null
traceback.print_exc()
new_msg = messaging.new_message('onroadEvents', len(msg.onroadEventsDEPRECATED))
new_msg.valid = msg.valid
new_msg.logMonoTime = msg.logMonoTime
# dict converts name enum into string representation
new_msg.onroadEvents = [log.OnroadEvent(**event.to_dict()) for event in msg.onroadEventsDEPRECATED if
not str(event.name).endswith('DEPRECATED')]
new_msg.onroadEvents = onroadEvents
ops.append((index, new_msg.as_reader()))
return ops, [], []
@@ -441,10 +448,16 @@ def migrate_driverMonitoringState(msgs):
ops = []
for index, msg in msgs:
msg = msg.as_builder()
# dict converts name enum into string representation
msg.driverMonitoringState.events = [log.OnroadEvent(**event.to_dict()) for event in
msg.driverMonitoringState.eventsDEPRECATED if
not str(event.name).endswith('DEPRECATED')]
events = []
for event in msg.driverMonitoringState.eventsDEPRECATED:
try:
if not str(event.name).endswith('DEPRECATED'):
# dict converts name enum into string representation
events.append(log.OnroadEvent(**event.to_dict()))
except RuntimeError: # Member was null
traceback.print_exc()
msg.driverMonitoringState.events = events
ops.append((index, msg.as_reader()))
return ops, [], []