From b33342c18fcff8a82b6032b3ab3b3b31a2b99e5f Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Tue, 11 Mar 2025 10:22:49 -0700 Subject: [PATCH] loggerd: limit encoded queue size (#34837) * loggerd: limit encoded queue size * less spammy --- system/loggerd/loggerd.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/system/loggerd/loggerd.cc b/system/loggerd/loggerd.cc index ea0178fe80..953ae1df32 100644 --- a/system/loggerd/loggerd.cc +++ b/system/loggerd/loggerd.cc @@ -165,8 +165,15 @@ int handle_encoder_msg(LoggerdState *s, Message *msg, std::string &name, struct s->logger.segment(), offset_segment_num, s->ready_to_rotate.load(), s->max_waiting, name.c_str()); } - // queue up all the new segment messages, they go in after the rotate - re.q.push_back(msg); + + // TODO: define this behavior, but for now don't leak + if (re.q.size() > MAIN_FPS*10) { + LOGE_100("%s: dropping frame, queue is too large", name.c_str()); + delete msg; + } else { + // queue up all the new segment messages, they go in after the rotate + re.q.push_back(msg); + } } else { LOGE("%s: encoderd packet has a older segment!!! idx.getSegmentNum():%d s->logger.segment():%d re.encoderd_segment_offset:%d", name.c_str(), idx.getSegmentNum(), s->logger.segment(), re.encoderd_segment_offset);