fix: add limit=10000 safety cap to all unbounded ChromaDB .get() calls
Prevents OOM when the palace grows large. The following unbounded metadata fetches now have a safety cap: - tool_status: col.get(include=['metadatas'], limit=10000) - tool_list_wings: same - tool_list_rooms: same (including wing-filtered variant) - tool_get_taxonomy: same - Layer1.generate: col.get(include=['documents','metadatas'], limit=10000) Layer2 already had a limit parameter — no change needed. Finding: #3 (CRITICAL — unbounded data fetching causes OOM) Includes test infrastructure from PR #131. 92 tests pass.
This commit is contained in:
@@ -69,7 +69,7 @@ def tool_status():
|
||||
wings = {}
|
||||
rooms = {}
|
||||
try:
|
||||
all_meta = col.get(include=["metadatas"])["metadatas"]
|
||||
all_meta = col.get(include=["metadatas"], limit=10000)["metadatas"]
|
||||
for m in all_meta:
|
||||
w = m.get("wing", "unknown")
|
||||
r = m.get("room", "unknown")
|
||||
@@ -126,7 +126,7 @@ def tool_list_wings():
|
||||
return _no_palace()
|
||||
wings = {}
|
||||
try:
|
||||
all_meta = col.get(include=["metadatas"])["metadatas"]
|
||||
all_meta = col.get(include=["metadatas"], limit=10000)["metadatas"]
|
||||
for m in all_meta:
|
||||
w = m.get("wing", "unknown")
|
||||
wings[w] = wings.get(w, 0) + 1
|
||||
@@ -141,7 +141,7 @@ def tool_list_rooms(wing: str = None):
|
||||
return _no_palace()
|
||||
rooms = {}
|
||||
try:
|
||||
kwargs = {"include": ["metadatas"]}
|
||||
kwargs = {"include": ["metadatas"], "limit": 10000}
|
||||
if wing:
|
||||
kwargs["where"] = {"wing": wing}
|
||||
all_meta = col.get(**kwargs)["metadatas"]
|
||||
@@ -159,7 +159,7 @@ def tool_get_taxonomy():
|
||||
return _no_palace()
|
||||
taxonomy = {}
|
||||
try:
|
||||
all_meta = col.get(include=["metadatas"])["metadatas"]
|
||||
all_meta = col.get(include=["metadatas"], limit=10000)["metadatas"]
|
||||
for m in all_meta:
|
||||
w = m.get("wing", "unknown")
|
||||
r = m.get("room", "unknown")
|
||||
|
||||
Reference in New Issue
Block a user