From b5b1d65aaa678e6eec095c5723d40137f9682e7d Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Sun, 2 Aug 2026 21:56:12 +0200 Subject: [PATCH] refactor: walk chat message history by map key `get_message_list` moves through `messages_map` by key but tracked each message's own `id` field, which the message body does not have to carry. Track the key instead. --- backend/open_webui/utils/misc.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index f609fdc85a..68f773d8b0 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -139,18 +139,13 @@ def get_message_list(messages_map, message_id): message_list = [] visited_message_ids = set() - while current_message: - message_id = current_message.get('id') - if message_id in visited_message_ids: - # Cycle detected, break to prevent infinite loop - break - - if message_id is not None: - visited_message_ids.add(message_id) - + # Track the map keys, not the messages' own 'id' field: a message may omit it + while current_message and message_id not in visited_message_ids: + visited_message_ids.add(message_id) message_list.append(current_message) - parent_id = current_message.get('parentId') # Use .get() for safety - current_message = messages_map.get(parent_id) if parent_id else None + + message_id = current_message.get('parentId') + current_message = messages_map.get(message_id) if message_id else None message_list.reverse() return message_list