fix(mem0-plugin): stop search errors from looking like empty results (#6898)

This commit is contained in:
Kartik
2026-08-14 16:57:01 +05:30
committed by GitHub
parent 956bf4f88e
commit a10c0cd030
2 changed files with 37 additions and 1 deletions
+3 -1
View File
@@ -8,6 +8,7 @@ from __future__ import annotations
import json
import os
import sys
import urllib.request
SEARCH_URL = "https://api.mem0.ai/v3/memories/search/"
@@ -83,7 +84,8 @@ def search_memories(
if min_score > 0:
results = [m for m in results if m.get("score", 0) >= min_score]
return results
except Exception:
except Exception as e:
print(f"[mem0] search request failed: {e}", file=sys.stderr)
return []
@@ -3,6 +3,7 @@
from __future__ import annotations
import json
import urllib.error
from unittest.mock import MagicMock, patch
@@ -101,6 +102,39 @@ def test_search_memories_no_api_key_returns_empty():
assert results == []
def test_search_memories_logs_rate_limit_error(capsys):
"""Bug bash #22: a 429 must not look identical to a genuine empty result."""
from _search import search_memories
def mock_urlopen(req, timeout=None):
raise urllib.error.HTTPError("http://x", 429, "Too Many Requests", {}, None)
with patch("urllib.request.urlopen", side_effect=mock_urlopen):
results = search_memories("key", "user", "proj", "query")
assert results == []
err = capsys.readouterr().err
assert "429" in err
assert "Too Many Requests" in err
def test_search_memories_happy_path_is_silent(capsys):
from _search import search_memories
def mock_urlopen(req, timeout=None):
resp = MagicMock()
resp.read.return_value = json.dumps({"results": []}).encode()
resp.__enter__ = lambda s: s
resp.__exit__ = MagicMock(return_value=False)
return resp
with patch("urllib.request.urlopen", side_effect=mock_urlopen):
results = search_memories("key", "user", "proj", "query")
assert results == []
assert capsys.readouterr().err == ""
def test_search_memories_omits_rerank_by_default():
"""Regression for #5684: rerank must not be sent unless requested."""
from _search import search_memories