fix: handle empty documents list in KnowledgeStorage.save() and asave()

Fixes #4277

When KnowledgeStorage.save() or asave() is called with an empty documents
list, the method now returns early instead of propagating a low-level
ValueError from ChromaDB's upsert operation.

This is a valid edge case that can occur in real-world workflows (e.g.,
after filtering, retrieval failures, or conditional logic), and should
be handled gracefully as a no-op.

Co-Authored-By: João <joao@crewai.com>
This commit is contained in:
Devin AI
2026-01-25 13:04:47 +00:00
parent 0f3208197f
commit 615f6ad9d6
2 changed files with 43 additions and 0 deletions

View File

@@ -99,6 +99,9 @@ class KnowledgeStorage(BaseKnowledgeStorage):
)
def save(self, documents: list[str]) -> None:
if not documents:
return
try:
client = self._get_client()
collection_name = (
@@ -177,6 +180,9 @@ class KnowledgeStorage(BaseKnowledgeStorage):
Args:
documents: List of document strings to save.
"""
if not documents:
return
try:
client = self._get_client()
collection_name = (