From ea4a127ab87a139d384d00dda0c1bbda46fd9647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20R=C4=85czy?= Date: Wed, 15 Jan 2025 00:12:48 +0000 Subject: [PATCH] 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 --- selfdrive/test/process_replay/migration.py | 31 +++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index d531b3b7ed..f09820fdff 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -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, [], []