From be191eb8acbb469bc5f10dbfbf87589e55f0ce19 Mon Sep 17 00:00:00 2001 From: Jimmy <9859727+Quantizr@users.noreply.github.com> Date: Fri, 7 Aug 2026 11:48:13 -0700 Subject: [PATCH] loggerd: only wait to rotate on cameras that are actually streaming (#38362) Co-authored-by: Adeeb Shihadeh --- openpilot/system/loggerd/loggerd.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openpilot/system/loggerd/loggerd.cc b/openpilot/system/loggerd/loggerd.cc index 9f848608ac..af4a5c0cde 100644 --- a/openpilot/system/loggerd/loggerd.cc +++ b/openpilot/system/loggerd/loggerd.cc @@ -31,7 +31,7 @@ void logger_rotate(LoggerdState *s) { void rotate_if_needed(LoggerdState *s) { // all encoders ready, trigger rotation - bool all_ready = s->ready_to_rotate == s->max_waiting; + bool all_ready = s->max_waiting > 0 && s->ready_to_rotate == s->max_waiting; // fallback logic to prevent extremely long segments in the case of camera, encoder, etc. malfunctions bool timed_out = false; @@ -125,6 +125,7 @@ int handle_encoder_msg(LoggerdState *s, Message *msg, std::string &name, struct if (!re.seen_first_packet) { re.seen_first_packet = true; re.encoderd_segment_offset = idx.getSegmentNum(); + ++s->max_waiting; // only count encoders that publish so a disabled/missing camera doesn't stall rotation LOGD("%s: has encoderd offset %d", name.c_str(), re.encoderd_segment_offset); } int offset_segment_num = idx.getSegmentNum() - re.encoderd_segment_offset; @@ -262,7 +263,6 @@ void loggerd_thread() { for (const auto &cam : cameras_logged) { for (const auto &encoder_info : cam.encoder_infos) { encoder_infos_dict[encoder_info.publish_name] = encoder_info; - s.max_waiting++; } }